public QueryUnboundLambdaState(UnboundLambda unbound, Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray <RangeVariableSymbol> parameters, ExpressionSyntax body) : this(unbound, binder, rangeVariableMap, parameters, (LambdaSymbol lambdaSymbol, ref Binder lambdaBodyBinder, DiagnosticBag diagnostics) => { lambdaBodyBinder = new ScopedExpressionBinder(lambdaBodyBinder, body); return(lambdaBodyBinder.BindLambdaExpressionAsBlock(body, diagnostics)); }) { }
public QueryUnboundLambdaState(Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray <RangeVariableSymbol> parameters, LambdaBodyFactory bodyFactory, bool includeCache = true) : base(binder, includeCache) { _parameters = parameters; _rangeVariableMap = rangeVariableMap; _bodyFactory = bodyFactory; }
public QueryUnboundLambdaState(UnboundLambda unbound, Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray<RangeVariableSymbol> parameters, ExpressionSyntax body) : this(unbound, binder, rangeVariableMap, parameters, (LambdaSymbol lambdaSymbol, ref Binder lambdaBodyBinder, DiagnosticBag diagnostics) => { lambdaBodyBinder = new ScopedExpressionBinder(lambdaBodyBinder, body); return lambdaBodyBinder.BindLambdaExpressionAsBlock(body, diagnostics); }) { }
public QueryUnboundLambdaState(Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray <RangeVariableSymbol> parameters, LambdaBodyFactory bodyFactory) : base(binder, unboundLambdaOpt: null) { _parameters = parameters; _rangeVariableMap = rangeVariableMap; _bodyFactory = bodyFactory; }
private UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray <RangeVariableSymbol> parameters, ExpressionSyntax expression) { return(MakeQueryUnboundLambda(expression, new QueryUnboundLambdaState(this, qvm, parameters, (LambdaSymbol lambdaSymbol, ref Binder lambdaBodyBinder, DiagnosticBag diagnostics) => { return lambdaBodyBinder.BindLambdaExpressionAsBlock(expression, diagnostics); }))); }
public QueryUnboundLambdaState(Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray<RangeVariableSymbol> parameters, LambdaBodyFactory bodyFactory) : base(binder, unboundLambdaOpt: null) { _parameters = parameters; _rangeVariableMap = rangeVariableMap; _bodyFactory = bodyFactory; }
public QueryUnboundLambdaState(UnboundLambda unbound, Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray <RangeVariableSymbol> parameters, ExpressionSyntax body) : this(unbound, binder, rangeVariableMap, parameters, (LambdaSymbol lambdaSymbol, ExecutableCodeBinder lambdaBodyBinder, DiagnosticBag diagnostics) => { BoundExpression expression = lambdaBodyBinder.BindValue(body, diagnostics, BindValueKind.RValue); return(lambdaBodyBinder.WrapExpressionLambdaBody(expression, body, diagnostics)); }) { }
public QueryUnboundLambdaState(UnboundLambda unbound, Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray<RangeVariableSymbol> parameters, LambdaBodyResolver bodyResolver) : base(unbound, binder) { this.parameters = parameters; this.bodyResolver = bodyResolver; this.rangeVariableMap = rangeVariableMap; }
public QueryUnboundLambdaState(UnboundLambda unbound, Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray<RangeVariableSymbol> parameters, ExpressionSyntax body) : this(unbound, binder, rangeVariableMap, parameters, (LambdaSymbol lambdaSymbol, ExecutableCodeBinder lambdaBodyBinder, DiagnosticBag diagnostics) => { BoundExpression expression = lambdaBodyBinder.BindValue(body, diagnostics, BindValueKind.RValue); return lambdaBodyBinder.WrapExpressionLambdaBody(expression, body, diagnostics); }) { }
public QueryUnboundLambdaState(UnboundLambda unbound, Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray <RangeVariableSymbol> parameters, LambdaBodyResolver bodyResolver) : base(unbound, binder) { this.parameters = parameters; this.bodyResolver = bodyResolver; this.rangeVariableMap = rangeVariableMap; }
public RangeVariableMap RangeVariableMap() { var result = new RangeVariableMap(); foreach (var vars in allRangeVariables.Keys) { result.Add(vars, allRangeVariables[vars].ToImmutable()); } return result; }
public static RangeVariableMap RangeVariableMap(params RangeVariableSymbol[] parameters) { var result = new RangeVariableMap(); foreach (var vars in parameters) { result.Add(vars, ImmutableArray<string>.Empty); } return result; }
public RangeVariableMap RangeVariableMap() { var result = new RangeVariableMap(); foreach (var vars in allRangeVariables.Keys) { result.Add(vars, allRangeVariables[vars].ToImmutable()); } return(result); }
public WithQueryLambdaParametersBinder(LambdaSymbol lambdaSymbol, RangeVariableMap rangeVariableMap, Binder next) : base(lambdaSymbol, next) { _rangeVariableMap = rangeVariableMap; _parameterMap = new MultiDictionary<string, RangeVariableSymbol>(); foreach (var qv in rangeVariableMap.Keys) { _parameterMap.Add(qv.Name, qv); } }
public WithQueryLambdaParametersBinder(LambdaSymbol lambdaSymbol, RangeVariableMap rangeVariableMap, Binder next) : base(lambdaSymbol, next) { _rangeVariableMap = rangeVariableMap; _parameterMap = new MultiDictionary <string, RangeVariableSymbol>(); foreach (var qv in rangeVariableMap.Keys) { _parameterMap.Add(qv.Name, qv); } }
public static RangeVariableMap RangeVariableMap(params RangeVariableSymbol[] parameters) { var result = new RangeVariableMap(); foreach (var vars in parameters) { result.Add(vars, ImmutableArray <string> .Empty); } return(result); }
private UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray <RangeVariableSymbol> parameters, ExpressionSyntax expression) { return(MakeQueryUnboundLambda(expression, new QueryUnboundLambdaState(this, qvm, parameters, (LambdaSymbol lambdaSymbol, Binder lambdaBodyBinder, DiagnosticBag diagnostics) => { lambdaBodyBinder = lambdaBodyBinder.GetBinder(expression); Debug.Assert(lambdaSymbol != null); BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics, BindValueKind.RValue); return lambdaBodyBinder.CreateLambdaBlockForQueryClause(expression, boundExpression, diagnostics); }))); }
public QueryUnboundLambdaState(UnboundLambda unbound, Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray<RangeVariableSymbol> parameters, ExpressionSyntax body, TypeSyntax castTypeSyntax, TypeSymbol castType) : this(unbound, binder, rangeVariableMap, parameters, (LambdaSymbol lambdaSymbol, ExecutableCodeBinder lambdaBodyBinder, DiagnosticBag diagnostics) => { BoundExpression expression = lambdaBodyBinder.BindValue(body, diagnostics, BindValueKind.RValue); Debug.Assert((object)castType != null); Debug.Assert(castTypeSyntax != null); // We transform the expression from "expr" to "expr.Cast<castTypeOpt>()". expression = lambdaBodyBinder.MakeQueryInvocation(body, expression, "Cast", castTypeSyntax, castType, diagnostics); return lambdaBodyBinder.WrapExpressionLambdaBody(expression, body, diagnostics); }) { }
public QueryUnboundLambdaState(UnboundLambda unbound, Binder binder, RangeVariableMap rangeVariableMap, ImmutableArray <RangeVariableSymbol> parameters, ExpressionSyntax body, TypeSyntax castTypeSyntax, TypeSymbol castType) : this(unbound, binder, rangeVariableMap, parameters, (LambdaSymbol lambdaSymbol, ref Binder lambdaBodyBinder, DiagnosticBag diagnostics) => { BoundExpression expression = lambdaBodyBinder.BindValue(body, diagnostics, BindValueKind.RValue); Debug.Assert((object)castType != null); Debug.Assert(castTypeSyntax != null); // We transform the expression from "expr" to "expr.Cast<castTypeOpt>()". expression = lambdaBodyBinder.MakeQueryInvocation(body, expression, "Cast", castTypeSyntax, castType, diagnostics); return(lambdaBodyBinder.CreateBlockFromExpression(lambdaBodyBinder.Locals, expression, body, diagnostics)); }) { }
UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray <RangeVariableSymbol> parameters, CSharpSyntaxNode node, LambdaBodyResolver resolver) { var state = new QueryUnboundLambdaState(null, this, qvm, parameters, resolver); var lambda = new UnboundLambda(node, state, false) { WasCompilerGenerated = true }; state.SetUnboundLambda(lambda); return(lambda); }
private UnboundLambda MakeQueryUnboundLambdaWithCast(RangeVariableMap qvm, RangeVariableSymbol parameter, ExpressionSyntax expression, TypeSyntax castTypeSyntax, TypeSymbol castType) { return(MakeQueryUnboundLambda(expression, new QueryUnboundLambdaState(this, qvm, ImmutableArray.Create(parameter), (LambdaSymbol lambdaSymbol, ref Binder lambdaBodyBinder, DiagnosticBag diagnostics) => { BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics, BindValueKind.RValue); // We transform the expression from "expr" to "expr.Cast<castTypeOpt>()". boundExpression = lambdaBodyBinder.MakeQueryInvocation(expression, boundExpression, "Cast", castTypeSyntax, castType, diagnostics); return lambdaBodyBinder.CreateBlockFromExpression(expression, lambdaBodyBinder.Locals, expression, boundExpression, diagnostics); }))); }
UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray <RangeVariableSymbol> parameters, ExpressionSyntax expression, TypeSyntax castTypeSyntaxOpt, TypeSymbol castTypeOpt) { var state = ((object)castTypeOpt == null) ? new QueryUnboundLambdaState(null, this, qvm, parameters, expression) : new QueryUnboundLambdaState(null, this, qvm, parameters, expression, castTypeSyntaxOpt, castTypeOpt); var lambda = new UnboundLambda(expression, state, false) { WasCompilerGenerated = true }; state.SetUnboundLambda(lambda); return(lambda); }
public WithQueryLambdaParametersBinder(LambdaSymbol lambdaSymbol, RangeVariableMap rangeVariableMap, Binder next) : base(lambdaSymbol, next) { _rangeVariableMap = rangeVariableMap; #if XSHARP _parameterMap = new MultiDictionary <string, RangeVariableSymbol>(XSharpString.Comparer); #else _parameterMap = new MultiDictionary <string, RangeVariableSymbol>(); #endif foreach (var qv in rangeVariableMap.Keys) { _parameterMap.Add(qv.Name, qv); } }
private UnboundLambda MakeQueryUnboundLambdaWithCast(RangeVariableMap qvm, RangeVariableSymbol parameter, ExpressionSyntax expression, TypeSyntax castTypeSyntax, TypeWithAnnotations castType) { return(MakeQueryUnboundLambda(expression, new QueryUnboundLambdaState(this, qvm, ImmutableArray.Create(parameter), (LambdaSymbol lambdaSymbol, Binder lambdaBodyBinder, DiagnosticBag diagnostics) => { lambdaBodyBinder = lambdaBodyBinder.GetBinder(expression); Debug.Assert(lambdaBodyBinder != null); BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics, BindValueKind.RValue); // We transform the expression from "expr" to "expr.Cast<castTypeOpt>()". boundExpression = lambdaBodyBinder.MakeQueryInvocation(expression, boundExpression, "Cast", castTypeSyntax, castType, diagnostics); return lambdaBodyBinder.CreateLambdaBlockForQueryClause(expression, boundExpression, diagnostics); }))); }
private UnboundLambda MakeQueryUnboundLambdaWithCast(RangeVariableMap qvm, RangeVariableSymbol parameter, ExpressionSyntax expression, TypeSyntax castTypeSyntax, TypeSymbol castType) { return MakeQueryUnboundLambda(expression, new QueryUnboundLambdaState(this, qvm, ImmutableArray.Create(parameter), (LambdaSymbol lambdaSymbol, Binder lambdaBodyBinder, DiagnosticBag diagnostics) => { lambdaBodyBinder = lambdaBodyBinder.GetBinder(expression); Debug.Assert(lambdaBodyBinder != null); BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics, BindValueKind.RValue); // We transform the expression from "expr" to "expr.Cast<castTypeOpt>()". boundExpression = lambdaBodyBinder.MakeQueryInvocation(expression, boundExpression, "Cast", castTypeSyntax, castType, diagnostics); return lambdaBodyBinder.CreateBlockFromExpression(expression, lambdaBodyBinder.GetDeclaredLocalsForScope(expression), RefKind.None, boundExpression, expression, diagnostics); })); }
private UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray<RangeVariableSymbol> parameters, CSharpSyntaxNode node, LambdaBodyFactory bodyFactory) { return MakeQueryUnboundLambda(node, new QueryUnboundLambdaState(this, qvm, parameters, bodyFactory)); }
private UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray<RangeVariableSymbol> parameters, ExpressionSyntax expression) { return MakeQueryUnboundLambda(expression, new QueryUnboundLambdaState(this, qvm, parameters, (LambdaSymbol lambdaSymbol, Binder lambdaBodyBinder, DiagnosticBag diagnostics) => { return lambdaBodyBinder.BindLambdaExpressionAsBlock(RefKind.None, expression, diagnostics); })); }
UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, RangeVariableSymbol parameter, ExpressionSyntax expression) { return(MakeQueryUnboundLambda(qvm, Args(parameter), expression)); }
UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, RangeVariableSymbol parameter, CSharpSyntaxNode node, LambdaBodyResolver resolver) { return(MakeQueryUnboundLambda(qvm, Args(parameter), node, resolver)); }
UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, RangeVariableSymbol parameter, ExpressionSyntax expression, TypeSyntax castTypeSyntaxOpt, TypeSymbol castTypeOpt) { return(MakeQueryUnboundLambda(qvm, Args(parameter), expression, castTypeSyntaxOpt, castTypeOpt)); }
private UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, RangeVariableSymbol parameter, ExpressionSyntax expression) { return(MakeQueryUnboundLambda(qvm, ImmutableArray.Create(parameter), expression)); }
private UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, RangeVariableSymbol parameter, ExpressionSyntax expression) { return MakeQueryUnboundLambda(qvm, ImmutableArray.Create(parameter), expression); }
private UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray <RangeVariableSymbol> parameters, CSharpSyntaxNode node, LambdaBodyFactory bodyFactory) { return(MakeQueryUnboundLambda(node, new QueryUnboundLambdaState(this, qvm, parameters, bodyFactory))); }
UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray <RangeVariableSymbol> parameters, ExpressionSyntax expression) { // generate the unbound lambda expression (parameters) => expression return(MakeQueryUnboundLambda(qvm, parameters, expression, null, null)); }