LNode UsingDirective(int startIndex, VList<LNode> attrs)
{
TokenType la0;
Token end = default(Token);
LNode nsName = default(LNode);
Token static_ = default(Token);
Token t = default(Token);
t = Match((int) TT.Using);
// Line 1480: (&{Is($LI, S.Static)} TT.AttrKeyword ExprStart TT.Semicolon / ExprStart (&{nsName.Calls(S.Assign, 2)} RestOfAlias / TT.Semicolon))
do {
la0 = LA0;
if (la0 == TT.AttrKeyword) {
if (Is(0, S.Static)) {
static_ = MatchAny();
nsName = ExprStart(true);
end = Match((int) TT.Semicolon);
// line 1482
attrs.Add(F.Id(static_));
} else
goto matchExprStart;
} else
goto matchExprStart;
break;
matchExprStart:
{
nsName = ExprStart(true);
// Line 1485: (&{nsName.Calls(S.Assign, 2)} RestOfAlias / TT.Semicolon)
do {
switch (LA0) {
case TT.Semicolon:
{
if (nsName.Calls(S.Assign, 2))
goto matchRestOfAlias;
else
end = MatchAny();
}
break;
case TT.Colon: case TT.ContextualKeyword: case TT.LBrace:
goto matchRestOfAlias;
default:
{
// line 1491
Error("Expected ';'");
}
break;
}
break;
matchRestOfAlias:
{
Check(nsName.Calls(S.Assign, 2), "Expected nsName.Calls(S.Assign, 2)");
LNode aliasedType = nsName.Args[1, F.Missing];
nsName = nsName.Args[0, F.Missing];
var r = RestOfAlias(startIndex, t, aliasedType, nsName);
// line 1489
return r.WithAttrs(attrs).PlusAttr(_filePrivate);
}
} while (false);
}
} while (false);
// line 1494
return F.Call(S.Import, nsName, t.StartIndex, end.EndIndex, t.StartIndex, t.EndIndex).WithAttrs(attrs);
}