Esempio n. 1
0
        public void Resolved(AstNode node, ResolveResult result)
        {
            if (ParenthesizedExpression.ActsAsParenthesizedExpression(node))
            {
                return;
            }

            MemberResolveResult mrr = result as MemberResolveResult;

            if (mrr != null)
            {
                memberReferenceFound(node, mrr.Member);
            }
            TypeResolveResult trr = result as TypeResolveResult;

            if (trr != null)
            {
                typeReferenceFound(node, trr.Type);
            }
            ForEachResolveResult ferr = result as ForEachResolveResult;

            if (ferr != null)
            {
                Resolved(node, ferr.GetEnumeratorCall);
                if (ferr.CurrentProperty != null)
                {
                    memberReferenceFound(node, ferr.CurrentProperty);
                }
                if (ferr.MoveNextMethod != null)
                {
                    memberReferenceFound(node, ferr.MoveNextMethod);
                }
            }
        }
Esempio n. 2
0
            public virtual void Resolved(AstNode node, ResolveResult result)
            {
                if (resolvedNodes.ContainsKey(node))
                {
                    throw new InvalidOperationException("Duplicate Resolved() call");
                }
                resolvedNodes.Add(node, result);
                if (CSharpAstResolver.IsUnresolvableNode(node))
                {
                    throw new InvalidOperationException("Resolved unresolvable node");
                }
                if (!ParenthesizedExpression.ActsAsParenthesizedExpression(node))
                {
                    if (!resolveResults.Add(result) && result != ErrorResolveResult.UnknownError)
                    {
                        throw new InvalidOperationException("Duplicate resolve result");
                    }
                }

                if (result.IsError && !allowErrors)
                {
                    Console.WriteLine("Compiler error at " + fileName + ":" + node.StartLocation + ": " + result);
                }
            }
Esempio n. 3
0
        public void Resolved(AstNode node, ResolveResult result)
        {
            if (ParenthesizedExpression.ActsAsParenthesizedExpression(node))
            {
                return;
            }

            MemberResolveResult mrr = result as MemberResolveResult;

            if (mrr != null)
            {
                referenceFound(node, mrr.Member.MemberDefinition);
            }
            TypeResolveResult trr = result as TypeResolveResult;

            if (trr != null)
            {
                ITypeDefinition typeDef = trr.Type.GetDefinition();
                if (typeDef != null)
                {
                    referenceFound(node, typeDef);
                }
            }
        }