Пример #1
0
        ResolveResult Resolve(string prog, ExpressionResult er, string marker)
        {
            Register(prog);
            int line, column;

            GetPos(prog, marker, out line, out column);
            er.Region = new DomRegion(line, column);

            BooResolver r = new BooResolver();

            return(r.Resolve(er, ParserService.GetParseInformation(fileName), prog));
        }
Пример #2
0
        public override void OnArrayLiteralExpression(ArrayLiteralExpression node)
        {
            BooResolver resolver   = new BooResolver();
            IReturnType createType = resolver.GetTypeOfExpression(node, null);

            if (createType == null)
            {
                createType = pc.SystemTypes.Object;
            }
            CodeExpression[] initializers = new CodeExpression[node.Items.Count];
            for (int i = 0; i < initializers.Length; i++)
            {
                _expression = null;
                node.Items[i].Accept(this);
                initializers[i] = _expression;
            }
            _expression = new CodeArrayCreateExpression(createType.FullyQualifiedName, initializers);
            _expression.UserData["unknownType"] = node.Type != null;
        }
Пример #3
0
        void CtrlSpace(string[] unExpected, string prog, params string[] expected)
        {
            Register(prog);
            int line, column;

            GetPos(prog, "/*mark*/", out line, out column);
            BooResolver r  = new BooResolver();
            var         ar = r.CtrlSpace(line, column, ParserService.GetParseInformation(fileName), prog, ExpressionContext.Default);

            foreach (string e in unExpected)
            {
                foreach (object o in ar)
                {
                    if (e.Equals(o))
                    {
                        Assert.Fail("Didn't expect " + e);
                    }
                    if (o is IMember && (o as IMember).Name == e)
                    {
                        Assert.Fail("Didn't expect " + e);
                    }
                    if (o is IClass && (o as IClass).Name == e)
                    {
                        Assert.Fail("Didn't expect " + e);
                    }
                }
            }
            foreach (string e in expected)
            {
                bool ok = false;
                foreach (object o in ar)
                {
                    if (e.Equals(o))
                    {
                        if (ok)
                        {
                            Assert.Fail("double entry " + e);
                        }
                        ok = true;
                    }
                    if (o is IMember && (o as IMember).Name == e)
                    {
                        if (ok)
                        {
                            Assert.Fail("double entry " + e);
                        }
                        ok = true;
                    }
                    if (o is IClass && (o as IClass).Name == e)
                    {
                        if (ok)
                        {
                            Assert.Fail("double entry " + e);
                        }
                        ok = true;
                    }
                }
                if (!ok)
                {
                    Assert.Fail("Expected " + e);
                }
            }
        }