private void AddFailedLetCoercionReference( LetCoercionDefaultMemberAccessExpression expression, QualifiedModuleName module, Declaration scope, Declaration parent, bool isAssignmentTarget, bool hasExplicitLetStatement) { var callSiteContext = expression.Context; var identifier = callSiteContext.GetText(); var selection = callSiteContext.GetSelection(); var callee = expression.ReferencedDeclaration; var reference = new IdentifierReference( module, scope, parent, identifier, selection, callSiteContext, callee, isAssignmentTarget, hasExplicitLetStatement, FindIdentifierAnnotations(module, selection.StartLine), false, isNonIndexedDefaultMemberAccess: true, defaultMemberRecursionDepth: expression.DefaultMemberRecursionDepth); _declarationFinder.AddFailedLetCoercionReference(reference); }
private void Visit( LetCoercionDefaultMemberAccessExpression expression, QualifiedModuleName module, Declaration scope, Declaration parent, bool isAssignmentTarget = false, bool hasExplicitLetStatement = false) { var containedExpression = expression.ContainedDefaultMemberRecursionExpression; if (containedExpression != null) { Visit(containedExpression, module, scope, parent, hasExplicitLetStatement: hasExplicitLetStatement); } Visit(expression.WrappedExpression, module, scope, parent); switch (expression.Classification) { case ExpressionClassification.ResolutionFailed: AddFailedLetCoercionReference(expression, module, scope, parent, isAssignmentTarget, hasExplicitLetStatement); break; case ExpressionClassification.Unbound: AddUnboundDefaultMemberReference(expression, module, scope, parent, isAssignmentTarget, hasExplicitLetStatement); break; default: if (expression.ReferencedDeclaration != null) { AddDefaultMemberReference(expression, module, scope, parent, isAssignmentTarget, hasExplicitLetStatement); } break; } }
private void Visit(LetCoercionDefaultMemberAccessExpression expression, Declaration parent, IBoundExpression withExpression) { Visit(expression.WrappedExpression, parent, withExpression); }