protected virtual void VisitMethodInvocationExpression(BoundMethodInvocationExpression node) { VisitExpression(node.Target); foreach (var argument in node.Arguments) { VisitExpression(argument); } }
private Expression BuildMethodInvocationExpression(BoundMethodInvocationExpression expression) { var liftedInstance = BuildCachedExpression(expression.Target); var liftedArguments = expression.Arguments.Select(BuildCachedExpression).ToImmutableArray(); var nullableResultType = expression.Type.GetNullableType(); return (Expression.Condition( BuildNullCheck(liftedInstance, liftedArguments), BuildNullValue(nullableResultType), BuildInvocation(expression.Symbol, liftedInstance, liftedArguments) )); }
protected override void VisitMethodInvocationExpression(BoundMethodInvocationExpression node) { var sourceMethodSymbol = node.Symbol as SourceFunctionSymbol; if (sourceMethodSymbol != null) { if (sourceMethodSymbol.DefinitionSyntax == null && !IsInterfaceMethod(sourceMethodSymbol)) { _diagnostics.ReportMethodMissingImplementation(node.Syntax); } } base.VisitMethodInvocationExpression(node); }
private static Symbol GetSymbol(BoundMethodInvocationExpression expression) { return(expression.Symbol); }