private static IBoundExpression CreateFailedDefaultMemberAccessExpression(IBoundExpression lExpression, ArgumentList argumentList, ParserRuleContext context) { var failedExpr = new DictionaryAccessExpression(lExpression.ReferencedDeclaration, ExpressionClassification.ResolutionFailed, context, lExpression, argumentList, context); var argumentExpressions = argumentList.Arguments.Select(arg => arg.Expression); return(failedExpr.JoinAsFailedResolution(context, argumentExpressions.Concat(new [] { lExpression }))); }
private IBoundExpression ResolveLExpressionIsDictionaryAccessExpression(DictionaryAccessExpression dictionaryAccessExpression, ArgumentList argumentList, ParserRuleContext expression, Declaration parent, int defaultMemberResolutionRecursionDepth, RecursiveDefaultMemberAccessExpression containedExpression) { //This is equivalent to the case in which the lExpression is an IndexExpression with the difference that it cannot be an array access. var indexedDeclaration = dictionaryAccessExpression.ReferencedDeclaration; if (indexedDeclaration == null) { return(null); } if (indexedDeclaration.IsArray) { return(ResolveLExpressionDeclaredTypeIsArray(indexedDeclaration, dictionaryAccessExpression.Classification, argumentList, expression, defaultMemberResolutionRecursionDepth, containedExpression)); } var asTypeName = indexedDeclaration.AsTypeName; var asTypeDeclaration = indexedDeclaration.AsTypeDeclaration; return(ResolveDefaultMember(asTypeName, asTypeDeclaration, argumentList, expression, parent, defaultMemberResolutionRecursionDepth + 1, containedExpression)); }