Skip to content

Commit 9d9ccdb

Browse files
committed
context keys: parsing: move _nameToken to Scanner and rename to getLexeme
1 parent 1b5c3aa commit 9d9ccdb

File tree

2 files changed

+47
-47
lines changed

2 files changed

+47
-47
lines changed

src/vs/platform/contextkey/common/contextkey.ts

Lines changed: 3 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ export class Parser {
356356
} catch (e) {
357357
if (!(e instanceof ParseError)) {
358358
const token = this._peek();
359-
this._parsingErrors.push(`Unexpected error: ${e} for token ${this._nameToken(token)} at offset ${token.offset}.`);
359+
this._parsingErrors.push(`Unexpected error: ${e} for token ${Scanner.getLexeme(token)} at offset ${token.offset}.`);
360360
}
361361
return undefined;
362362
}
@@ -564,11 +564,11 @@ export class Parser {
564564
}
565565

566566
private _errExpectedButGot(expected: string, got: Token) {
567-
return this._error(`Expected ${expected} but got '${this._nameToken(got)}' at offset ${got.offset}.`);
567+
return this._error(`Expected ${expected} but got '${Scanner.getLexeme(got)}' at offset ${got.offset}.`);
568568
}
569569

570570
private _errUnexpected(token: Token) {
571-
return this._error(`Unexpected '${this._nameToken(token)}' at offset ${token.offset}.`);
571+
return this._error(`Unexpected '${Scanner.getLexeme(token)}' at offset ${token.offset}.`);
572572
}
573573

574574
// TODO@ulugbekna: the whole error reporting needs reworking - especially, when we introduce it to package.json linting
@@ -577,49 +577,6 @@ export class Parser {
577577
return new ParseError();
578578
}
579579

580-
private _nameToken(token: Token): string {
581-
if (token.lexeme !== undefined) { return token.lexeme!; }
582-
583-
switch (token.type) {
584-
case TokenType.LParen:
585-
return '(';
586-
case TokenType.RParen:
587-
return ')';
588-
case TokenType.Neg:
589-
return '!';
590-
case TokenType.Eq:
591-
return '==';
592-
case TokenType.NotEq:
593-
return '!=';
594-
case TokenType.Lt:
595-
return '<';
596-
case TokenType.LtEq:
597-
return '<=';
598-
case TokenType.Gt:
599-
return '>=';
600-
case TokenType.GtEq:
601-
return '>=';
602-
case TokenType.RegexOp:
603-
return '=~';
604-
case TokenType.True:
605-
return 'true';
606-
case TokenType.False:
607-
return 'false';
608-
case TokenType.In:
609-
return 'in';
610-
case TokenType.Not:
611-
return 'not';
612-
case TokenType.And:
613-
return '&&';
614-
case TokenType.Or:
615-
return '||';
616-
case TokenType.EOF:
617-
return 'EOF';
618-
default:
619-
throw illegalState(`all other tokens must have a lexeme : ${JSON.stringify(token)}`);
620-
}
621-
}
622-
623580
private _check(type: TokenType) {
624581
return !this._isAtEnd() && this._peek().type === type;
625582
}

src/vs/platform/contextkey/common/scanner.ts

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { CharCode } from 'vs/base/common/charCode';
7-
import { illegalArgument } from 'vs/base/common/errors';
7+
import { illegalArgument, illegalState } from 'vs/base/common/errors';
88

99
export enum TokenType {
1010
LParen = '(',
@@ -93,6 +93,49 @@ export class Scanner {
9393
}
9494
}
9595

96+
static getLexeme(token: Token): string {
97+
if (token.lexeme !== undefined) { return token.lexeme!; }
98+
99+
switch (token.type) {
100+
case TokenType.LParen:
101+
return '(';
102+
case TokenType.RParen:
103+
return ')';
104+
case TokenType.Neg:
105+
return '!';
106+
case TokenType.Eq:
107+
return '==';
108+
case TokenType.NotEq:
109+
return '!=';
110+
case TokenType.Lt:
111+
return '<';
112+
case TokenType.LtEq:
113+
return '<=';
114+
case TokenType.Gt:
115+
return '>=';
116+
case TokenType.GtEq:
117+
return '>=';
118+
case TokenType.RegexOp:
119+
return '=~';
120+
case TokenType.True:
121+
return 'true';
122+
case TokenType.False:
123+
return 'false';
124+
case TokenType.In:
125+
return 'in';
126+
case TokenType.Not:
127+
return 'not';
128+
case TokenType.And:
129+
return '&&';
130+
case TokenType.Or:
131+
return '||';
132+
case TokenType.EOF:
133+
return 'EOF';
134+
default:
135+
throw illegalState(`all other tokens must have a lexeme : ${JSON.stringify(token)}`);
136+
}
137+
}
138+
96139
private static _regexFlags = new Set(['i', 'g', 's', 'm', 'y', 'u'].map(ch => ch.charCodeAt(0)));
97140

98141
private static _keywords = new Map<string, TokenType>([

0 commit comments

Comments
 (0)