コード例 #1
0
ファイル: linq.cs プロジェクト: stabbylambda/mono
		public void AddRangeVariable (SimpleMemberName name)
		{
			if (!CheckParentConflictName (this, name.Value, name.Location))
				return;

			if (range_variables == null)
				range_variables = new List<SimpleMemberName> ();

			range_variables.Add (name);
			AddKnownVariable (name.Value, new RangeVariable (this, name.Location));
		}
コード例 #2
0
ファイル: linq.cs プロジェクト: stabbylambda/mono
		public SelectMany (QueryBlock block, SimpleMemberName identifier, Expression expr, Location loc)
			: base (block, identifier, expr, loc)
		{
		}
コード例 #3
0
ファイル: linq.cs プロジェクト: stabbylambda/mono
			public TransparentParameter (Parameter parent, SimpleMemberName identifier)
				: base (ParameterNamePrefix + Counter++, identifier.Location)
			{
				Parent = parent;
				Identifier = identifier.Value;
			}
コード例 #4
0
ファイル: linq.cs プロジェクト: stabbylambda/mono
		public Join (QueryBlock block, SimpleMemberName lt, Expression inner, QueryBlock outerSelector, QueryBlock innerSelector, Location loc)
			: base (block, lt, inner, loc)
		{
			this.outer_selector = outerSelector;
			this.inner_selector = innerSelector;
		}
コード例 #5
0
ファイル: linq.cs プロジェクト: stabbylambda/mono
		public GroupJoin (QueryBlock block, SimpleMemberName lt, Expression inner,
			QueryBlock outerSelector, QueryBlock innerSelector, SimpleMemberName into, Location loc)
			: base (block, lt, inner, outerSelector, innerSelector, loc)
		{
			this.into = into;
		}
コード例 #6
0
ファイル: linq.cs プロジェクト: stabbylambda/mono
		protected static Expression CreateRangeVariableType (ResolveContext rc, Parameter parameter, SimpleMemberName name, Expression init)
		{
			var args = new List<AnonymousTypeParameter> (2);
			args.Add (new AnonymousTypeParameter (parameter));
			args.Add (new RangeAnonymousTypeParameter (init, name));
			return new NewAnonymousType (args, rc.MemberContext.CurrentMemberDefinition.Parent, name.Location);
		}
コード例 #7
0
ファイル: linq.cs プロジェクト: stabbylambda/mono
		public QueryStartClause (QueryBlock block, Expression expr, SimpleMemberName identifier, Location loc)
			: base (block, identifier, expr, loc)
		{
			block.AddRangeVariable (identifier);
		}
コード例 #8
0
ファイル: linq.cs プロジェクト: stabbylambda/mono
			public RangeAnonymousTypeParameter (Expression initializer, SimpleMemberName parameter)
				: base (initializer, parameter.Value, parameter.Location)
			{
			}
コード例 #9
0
ファイル: linq.cs プロジェクト: stabbylambda/mono
		protected ARangeVariableQueryClause (QueryBlock block, SimpleMemberName identifier, Expression expr, Location loc)
			: base (block, expr, loc)
		{
			range_variable = identifier;
		}
コード例 #10
0
ファイル: linq.cs プロジェクト: speier/shake
 public QueryBlock(CompilerContext ctx, Block parent, ParametersCompiled parameters, SimpleMemberName lt, Location start)
     : base(ctx, parent, new ParametersCompiled (ctx, parameters [0].Clone (), new ImplicitQueryParameter (lt.Value, lt.Location)), start)
 {
 }
コード例 #11
0
ファイル: linq.cs プロジェクト: speier/shake
        public void AddTransparentParameter(CompilerContext ctx, SimpleMemberName name)
        {
            base.CheckParentConflictName (this, name.Value, name.Location);

            parameters = new ParametersCompiled (ctx, new TransparentParameter (parameters, name));
        }
コード例 #12
0
ファイル: linq.cs プロジェクト: speier/shake
 public QueryBlock(CompilerContext ctx, Block parent, SimpleMemberName lt, Location start)
     : base(ctx, parent, new ParametersCompiled (ctx, new ImplicitQueryParameter (lt.Value, lt.Location)), start)
 {
     if (parent != null)
         base.CheckParentConflictName (parent.Toplevel, lt.Value, lt.Location);
 }
コード例 #13
0
ファイル: linq.cs プロジェクト: speier/shake
 public SelectMany(ToplevelBlock block, SimpleMemberName lt, Expression expr)
     : base(block, expr)
 {
     this.lt = lt;
 }
コード例 #14
0
ファイル: linq.cs プロジェクト: speier/shake
 public Let(ToplevelBlock block, TypeContainer container, SimpleMemberName identifier, Expression expr)
     : base(block, CreateRangeVariableType (block, container, identifier, expr))
 {
 }
コード例 #15
0
ファイル: linq.cs プロジェクト: speier/shake
 public Join(ToplevelBlock block, SimpleMemberName lt, Expression inner, ToplevelBlock outerSelector, ToplevelBlock innerSelector, Location loc)
     : base(block, inner)
 {
     this.lt = lt;
     this.outer_selector = outerSelector;
     this.inner_selector = innerSelector;
 }
コード例 #16
0
ファイル: linq.cs プロジェクト: speier/shake
 protected static Expression CreateRangeVariableType(ToplevelBlock block, TypeContainer container, SimpleMemberName name, Expression init)
 {
     var args = new List<AnonymousTypeParameter> (2);
     args.Add (new AnonymousTypeParameter (block.Parameters [0]));
     args.Add (new RangeAnonymousTypeParameter (init, name));
     return new NewAnonymousType (args, container, name.Location);
 }