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); } } }
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); } }
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); } } }