protected override Expression VisitIdentifierName(IdentifierNameBindingParserNode node) { var expr = ExpressionHelper.GetMember(Scope, node.Name, throwExceptions: false) ?? Registry.Resolve(node.Name, false); if (expr == null) { throw new BindingCompilationException($"The identifier '{ node.Name }' could not be resolved!", node); } return(expr); }
private Expression GetMemberOrTypeExpression(IdentifierNameBindingParserNode node, Type[] typeParameters) { var expr = Scope == null ? Registry.Resolve(node.Name, throwException : false) : (ExpressionHelper.GetMember(Scope, node.Name, typeParameters, throwExceptions: false, onlyMemberTypes: ResolveOnlyTypeName) ?? Registry.Resolve(node.Name, throwException: false)); if (expr == null) { return(new UnknownStaticClassIdentifierExpression(node.Name)); } if (expr is ParameterExpression && expr.Type == typeof(ExpressionHelper.UnknownTypeSentinel)) { throw new Exception($"Type of '{expr}' could not be resolved."); } return(expr); }
protected override Expression VisitIdentifierName(IdentifierNameBindingParserNode node) { return(GetMemberOrTypeExpression(node, null)); }