Skip to content

Commit a934019

Browse files
committed
Remove originalKeywordKind and jsDocCache from Identifier
1 parent 36732ac commit a934019

27 files changed

+62
-124
lines changed

src/compiler/binder.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,7 @@ import {
283283
SpreadElement,
284284
Statement,
285285
StringLiteral,
286+
stringToToken,
286287
SuperExpression,
287288
SwitchStatement,
288289
Symbol,
@@ -2421,13 +2422,14 @@ function createBinder(): (file: SourceFile, options: CompilerOptions) => void {
24212422
!isIdentifierName(node)) {
24222423

24232424
// strict mode identifiers
2425+
const originalKeywordKind = stringToToken(node.escapedText as string);
24242426
if (inStrictMode &&
2425-
node.originalKeywordKind! >= SyntaxKind.FirstFutureReservedWord &&
2426-
node.originalKeywordKind! <= SyntaxKind.LastFutureReservedWord) {
2427+
originalKeywordKind! >= SyntaxKind.FirstFutureReservedWord &&
2428+
originalKeywordKind! <= SyntaxKind.LastFutureReservedWord) {
24272429
file.bindDiagnostics.push(createDiagnosticForNode(node,
24282430
getStrictModeIdentifierMessage(node), declarationNameToString(node)));
24292431
}
2430-
else if (node.originalKeywordKind === SyntaxKind.AwaitKeyword) {
2432+
else if (originalKeywordKind === SyntaxKind.AwaitKeyword) {
24312433
if (isExternalModule(file) && isInTopLevelContext(node)) {
24322434
file.bindDiagnostics.push(createDiagnosticForNode(node,
24332435
Diagnostics.Identifier_expected_0_is_a_reserved_word_at_the_top_level_of_a_module,
@@ -2439,7 +2441,7 @@ function createBinder(): (file: SourceFile, options: CompilerOptions) => void {
24392441
declarationNameToString(node)));
24402442
}
24412443
}
2442-
else if (node.originalKeywordKind === SyntaxKind.YieldKeyword && node.flags & NodeFlags.YieldContext) {
2444+
else if (originalKeywordKind === SyntaxKind.YieldKeyword && node.flags & NodeFlags.YieldContext) {
24432445
file.bindDiagnostics.push(createDiagnosticForNode(node,
24442446
Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here,
24452447
declarationNameToString(node)));

src/compiler/checker.ts

+13-10
Original file line numberDiff line numberDiff line change
@@ -925,6 +925,7 @@ import {
925925
StringLiteralLike,
926926
StringLiteralType,
927927
StringMappingType,
928+
stringToToken,
928929
stripQuotes,
929930
StructuredType,
930931
SubstitutionType,
@@ -23209,15 +23210,17 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2320923210
break;
2321023211
case SyntaxKind.Parameter:
2321123212
const param = declaration as ParameterDeclaration;
23212-
if (isIdentifier(param.name) &&
23213-
(isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) &&
23214-
param.parent.parameters.indexOf(param) > -1 &&
23215-
(resolveName(param, param.name.escapedText, SymbolFlags.Type, undefined, param.name.escapedText, /*isUse*/ true) ||
23216-
param.name.originalKeywordKind && isTypeNodeKind(param.name.originalKeywordKind))) {
23217-
const newName = "arg" + param.parent.parameters.indexOf(param);
23218-
const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : "");
23219-
errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName);
23220-
return;
23213+
if (isIdentifier(param.name)) {
23214+
const originalKeywordKind = stringToToken(param.name.escapedText as string);1
23215+
if ((isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) &&
23216+
param.parent.parameters.indexOf(param) > -1 &&
23217+
(resolveName(param, param.name.escapedText, SymbolFlags.Type, undefined, param.name.escapedText, /*isUse*/ true) ||
23218+
originalKeywordKind && isTypeNodeKind(originalKeywordKind))) {
23219+
const newName = "arg" + param.parent.parameters.indexOf(param);
23220+
const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : "");
23221+
errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName);
23222+
return;
23223+
}
2322123224
}
2322223225
diagnostic = (declaration as ParameterDeclaration).dotDotDotToken ?
2322323226
noImplicitAny ? Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage :
@@ -46867,7 +46870,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
4686746870

4686846871
function checkGrammarNameInLetOrConstDeclarations(name: Identifier | BindingPattern): boolean {
4686946872
if (name.kind === SyntaxKind.Identifier) {
46870-
if (name.originalKeywordKind === SyntaxKind.LetKeyword) {
46873+
if (name.escapedText === "let") {
4687146874
return grammarErrorOnNode(name, Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations);
4687246875
}
4687346876
}

0 commit comments

Comments
 (0)