Loyc.Ecs.Parser.EcsParser.WhereClausesOpt C# (CSharp) Method

WhereClausesOpt() private method

private WhereClausesOpt ( LNode &name ) : void
name LNode
return void
		void WhereClausesOpt(ref LNode name)
		{
			TokenType la0;
			// line 1535
			var list = new BMultiMap<Symbol, LNode>();
			// Line 1536: (WhereClause)*
			for (;;) {
				la0 = LA0;
				if (la0 == TT.ContextualKeyword)
					list.Add(WhereClause());
				else
					break;
			}
			// line 1537
			if ((list.Count != 0)) {
				if ((!name.CallsMin(S.Of, 2))) {
					Error("'{0}' is not generic and cannot use 'where' clauses.", name.ToString());
				} else {
					var tparams = name.Args.ToWList();
					for (int i = 1; i < tparams.Count; i++) {
						var wheres = list[TParamSymbol(tparams[i])];
						tparams[i] = tparams[i].PlusAttrs(wheres);
						wheres.Clear();
					}
					name = name.WithArgs(tparams.ToVList());
					if ((list.Count > 0)) {
						Error(list[0].Value, "There is no type parameter named '{0}'", list[0].Key);
					}
				}
			}
		}
	
EcsParser