// i = C token to the right of type // returns start index of type static int tok_leftScanType(LS tok, int i) { while ping (true) { // first skip ellipsis if (subListEq(tok, i-6, ".", "", ".", "", ".")) i -= 6; // skip array brackets while (eqGet(tok, i-2, "]") && eqGet(tok, i-4, "[")) i -= 4; // skip type args i = tok_leftScanTypeArgsOpt(tok, i); i -= 2; // should be an identifier // package names / outer classes if (!eqGet(tok, i-2, ".")) break; i -= 2; } ret i; }