bool Scan_IdWithOptionalTypeParams(bool declarationContext)
{
TokenType la0, la1;
if (!Scan_IdAtom())
return false;
// Line 170: (TParams)?
do {
la0 = LA0;
if (la0 == TT.LT) {
switch (LA(1)) {
case TT.AttrKeyword: case TT.ContextualKeyword: case TT.GT: case TT.Id:
case TT.In: case TT.LBrack: case TT.Operator: case TT.Substitute:
case TT.TypeKeyword:
goto matchTParams;
}
} else if (la0 == TT.Dot) {
la1 = LA(1);
if (la1 == TT.LBrack)
goto matchTParams;
} else if (la0 == TT.Not) {
switch (LA(1)) {
case TT.ContextualKeyword: case TT.Id: case TT.LParen: case TT.Operator:
case TT.Substitute: case TT.TypeKeyword:
goto matchTParams;
}
}
break;
matchTParams:
{
if (!Scan_TParams(declarationContext))
return false;
}
} while (false);
return true;
}