@zzzen/pyright-internal 1.2.0-dev.20240114 → 1.2.0-dev.20240121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/analyzer/binder.d.ts +1 -3
  2. package/dist/analyzer/binder.js +27 -37
  3. package/dist/analyzer/binder.js.map +1 -1
  4. package/dist/analyzer/checker.d.ts +1 -3
  5. package/dist/analyzer/checker.js +325 -381
  6. package/dist/analyzer/checker.js.map +1 -1
  7. package/dist/analyzer/commentUtils.js +7 -7
  8. package/dist/analyzer/commentUtils.js.map +1 -1
  9. package/dist/analyzer/constraintSolver.js +23 -30
  10. package/dist/analyzer/constraintSolver.js.map +1 -1
  11. package/dist/analyzer/constructorTransform.js +10 -11
  12. package/dist/analyzer/constructorTransform.js.map +1 -1
  13. package/dist/analyzer/constructors.d.ts +3 -3
  14. package/dist/analyzer/constructors.js +12 -14
  15. package/dist/analyzer/constructors.js.map +1 -1
  16. package/dist/analyzer/dataClasses.js +15 -15
  17. package/dist/analyzer/dataClasses.js.map +1 -1
  18. package/dist/analyzer/decorators.d.ts +1 -2
  19. package/dist/analyzer/decorators.js +4 -1
  20. package/dist/analyzer/decorators.js.map +1 -1
  21. package/dist/analyzer/enums.d.ts +4 -2
  22. package/dist/analyzer/enums.js +109 -50
  23. package/dist/analyzer/enums.js.map +1 -1
  24. package/dist/analyzer/functionTransform.js +1 -2
  25. package/dist/analyzer/functionTransform.js.map +1 -1
  26. package/dist/analyzer/importResolver.js +3 -3
  27. package/dist/analyzer/namedTuples.js +8 -7
  28. package/dist/analyzer/namedTuples.js.map +1 -1
  29. package/dist/analyzer/operations.js +15 -18
  30. package/dist/analyzer/operations.js.map +1 -1
  31. package/dist/analyzer/parseTreeUtils.d.ts +1 -1
  32. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  33. package/dist/analyzer/patternMatching.js +22 -19
  34. package/dist/analyzer/patternMatching.js.map +1 -1
  35. package/dist/analyzer/program.js +17 -3
  36. package/dist/analyzer/program.js.map +1 -1
  37. package/dist/analyzer/properties.js +8 -8
  38. package/dist/analyzer/properties.js.map +1 -1
  39. package/dist/analyzer/protocols.js +14 -14
  40. package/dist/analyzer/protocols.js.map +1 -1
  41. package/dist/analyzer/service.js +14 -14
  42. package/dist/analyzer/service.js.map +1 -1
  43. package/dist/analyzer/sourceFile.js +12 -12
  44. package/dist/analyzer/sourceFile.js.map +1 -1
  45. package/dist/analyzer/typeEvaluator.js +820 -748
  46. package/dist/analyzer/typeEvaluator.js.map +1 -1
  47. package/dist/analyzer/typeEvaluatorTypes.d.ts +8 -8
  48. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  49. package/dist/analyzer/typeGuards.js +2 -2
  50. package/dist/analyzer/typeGuards.js.map +1 -1
  51. package/dist/analyzer/typePrinter.js +3 -4
  52. package/dist/analyzer/typePrinter.js.map +1 -1
  53. package/dist/analyzer/typeUtils.d.ts +4 -2
  54. package/dist/analyzer/typeUtils.js +6 -0
  55. package/dist/analyzer/typeUtils.js.map +1 -1
  56. package/dist/analyzer/typedDicts.js +30 -34
  57. package/dist/analyzer/typedDicts.js.map +1 -1
  58. package/dist/analyzer/types.d.ts +5 -10
  59. package/dist/analyzer/types.js +12 -39
  60. package/dist/analyzer/types.js.map +1 -1
  61. package/dist/backgroundThreadBase.js +4 -4
  62. package/dist/backgroundThreadBase.js.map +1 -1
  63. package/dist/common/commandLineOptions.d.ts +1 -0
  64. package/dist/common/commandLineOptions.js.map +1 -1
  65. package/dist/common/configOptions.d.ts +1 -0
  66. package/dist/common/configOptions.js +13 -11
  67. package/dist/common/configOptions.js.map +1 -1
  68. package/dist/common/core.d.ts +1 -1
  69. package/dist/common/core.js.map +1 -1
  70. package/dist/common/uri/baseUri.d.ts +7 -2
  71. package/dist/common/uri/baseUri.js +47 -24
  72. package/dist/common/uri/baseUri.js.map +1 -1
  73. package/dist/common/uri/emptyUri.d.ts +6 -4
  74. package/dist/common/uri/emptyUri.js +14 -9
  75. package/dist/common/uri/emptyUri.js.map +1 -1
  76. package/dist/common/uri/fileUri.d.ts +12 -4
  77. package/dist/common/uri/fileUri.js +59 -9
  78. package/dist/common/uri/fileUri.js.map +1 -1
  79. package/dist/common/uri/uri.d.ts +5 -1
  80. package/dist/common/uri/uri.js.map +1 -1
  81. package/dist/common/uri/uriUtils.js +3 -3
  82. package/dist/common/uri/webUri.d.ts +6 -1
  83. package/dist/common/uri/webUri.js +52 -12
  84. package/dist/common/uri/webUri.js.map +1 -1
  85. package/dist/languageServerBase.d.ts +1 -0
  86. package/dist/languageServerBase.js +1 -0
  87. package/dist/languageServerBase.js.map +1 -1
  88. package/dist/languageService/analyzerServiceExecutor.js +2 -0
  89. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  90. package/dist/languageService/completionProvider.js.map +1 -1
  91. package/dist/localization/localize.d.ts +5 -5
  92. package/dist/localization/localize.js +6 -3
  93. package/dist/localization/localize.js.map +1 -1
  94. package/dist/localization/package.nls.cs.json +34 -8
  95. package/dist/localization/package.nls.de.json +34 -8
  96. package/dist/localization/package.nls.en-us.json +8 -7
  97. package/dist/localization/package.nls.es.json +34 -8
  98. package/dist/localization/package.nls.fr.json +34 -8
  99. package/dist/localization/package.nls.it.json +34 -8
  100. package/dist/localization/package.nls.ja.json +34 -8
  101. package/dist/localization/package.nls.ko.json +34 -8
  102. package/dist/localization/package.nls.pl.json +34 -8
  103. package/dist/localization/package.nls.pt-br.json +34 -8
  104. package/dist/localization/package.nls.qps-ploc.json +32 -6
  105. package/dist/localization/package.nls.ru.json +34 -8
  106. package/dist/localization/package.nls.tr.json +34 -8
  107. package/dist/localization/package.nls.zh-cn.json +34 -8
  108. package/dist/localization/package.nls.zh-tw.json +34 -8
  109. package/dist/parser/parser.d.ts +1 -1
  110. package/dist/parser/parser.js +201 -201
  111. package/dist/parser/parser.js.map +1 -1
  112. package/dist/pyright.js +13 -11
  113. package/dist/pyright.js.map +1 -1
  114. package/dist/pyrightFileSystem.js +2 -2
  115. package/dist/server.js +7 -5
  116. package/dist/server.js.map +1 -1
  117. package/dist/tests/config.test.js +4 -4
  118. package/dist/tests/filesystem.test.js +2 -2
  119. package/dist/tests/fourSlashParser.test.js +1 -1
  120. package/dist/tests/harness/fourslash/testLanguageService.js +2 -0
  121. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  122. package/dist/tests/harness/fourslash/testState.js +1 -0
  123. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  124. package/dist/tests/ipythonMode.test.js +10 -10
  125. package/dist/tests/ipythonMode.test.js.map +1 -1
  126. package/dist/tests/localizer.test.js +2 -2
  127. package/dist/tests/localizer.test.js.map +1 -1
  128. package/dist/tests/typeEvaluator1.test.js +3 -3
  129. package/dist/tests/typeEvaluator2.test.js +8 -4
  130. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  131. package/dist/tests/typeEvaluator3.test.js +18 -6
  132. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  133. package/dist/tests/typeEvaluator4.test.js +2 -2
  134. package/dist/tests/typeEvaluator5.test.js +4 -0
  135. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  136. package/dist/tests/uri.test.js +65 -8
  137. package/dist/tests/uri.test.js.map +1 -1
  138. package/dist/workspaceFactory.d.ts +1 -0
  139. package/dist/workspaceFactory.js +1 -0
  140. package/dist/workspaceFactory.js.map +1 -1
  141. package/package.json +1 -1
@@ -102,10 +102,10 @@ class Parser {
102
102
  this._getNextToken();
103
103
  const indentToken = nextToken;
104
104
  if (indentToken.isIndentAmbiguous) {
105
- this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), indentToken);
105
+ this._addSyntaxError(localize_1.LocMessage.inconsistentTabs(), indentToken);
106
106
  }
107
107
  else {
108
- this._addError(localize_1.Localizer.Diagnostic.unexpectedIndent(), nextToken);
108
+ this._addSyntaxError(localize_1.LocMessage.unexpectedIndent(), nextToken);
109
109
  }
110
110
  }
111
111
  const statement = this._parseStatement();
@@ -155,7 +155,7 @@ class Parser {
155
155
  }
156
156
  else {
157
157
  if (exprListResult.list.length === 0) {
158
- this._addError(localize_1.Localizer.Diagnostic.expectedExpr(), this._peekToken());
158
+ this._addSyntaxError(localize_1.LocMessage.expectedExpr(), this._peekToken());
159
159
  }
160
160
  parseTree = this._makeExpressionOrTuple(exprListResult, /* enclosedInParens */ false);
161
161
  }
@@ -164,7 +164,7 @@ class Parser {
164
164
  this._getNextToken();
165
165
  }
166
166
  if (!this._atEof()) {
167
- this._addError(localize_1.Localizer.Diagnostic.unexpectedExprToken(), this._peekToken());
167
+ this._addSyntaxError(localize_1.LocMessage.unexpectedExprToken(), this._peekToken());
168
168
  }
169
169
  return {
170
170
  parseTree,
@@ -188,7 +188,7 @@ class Parser {
188
188
  // Handle the errant condition of a dedent token here to provide
189
189
  // better recovery.
190
190
  if (this._consumeTokenIfType(4 /* TokenType.Dedent */)) {
191
- this._addError(localize_1.Localizer.Diagnostic.unexpectedUnindent(), this._peekToken());
191
+ this._addSyntaxError(localize_1.LocMessage.unexpectedUnindent(), this._peekToken());
192
192
  }
193
193
  switch (this._peekKeywordType()) {
194
194
  case 20 /* KeywordType.If */:
@@ -257,14 +257,14 @@ class Parser {
257
257
  case 17 /* KeywordType.For */:
258
258
  return this._parseForStatement(asyncToken);
259
259
  }
260
- this._addError(localize_1.Localizer.Diagnostic.unexpectedAsyncToken(), asyncToken);
260
+ this._addSyntaxError(localize_1.LocMessage.unexpectedAsyncToken(), asyncToken);
261
261
  return undefined;
262
262
  }
263
263
  // type_alias_stmt: "type" name [type_param_seq] = expr
264
264
  _parseTypeAliasStatement() {
265
265
  const typeToken = this._getKeywordToken(35 /* KeywordType.Type */);
266
266
  if (!this._parseOptions.isStubFile && this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_12) {
267
- this._addError(localize_1.Localizer.Diagnostic.typeAliasStatementIllegal(), typeToken);
267
+ this._addSyntaxError(localize_1.LocMessage.typeAliasStatementIllegal(), typeToken);
268
268
  }
269
269
  const nameToken = this._getTokenIfIdentifier();
270
270
  (0, debug_1.assert)(nameToken !== undefined);
@@ -276,7 +276,7 @@ class Parser {
276
276
  const assignToken = this._peekToken();
277
277
  if (assignToken.type !== 9 /* TokenType.Operator */ ||
278
278
  assignToken.operatorType !== 2 /* OperatorType.Assign */) {
279
- this._addError(localize_1.Localizer.Diagnostic.expectedEquals(), assignToken);
279
+ this._addSyntaxError(localize_1.LocMessage.expectedEquals(), assignToken);
280
280
  }
281
281
  else {
282
282
  this._getNextToken();
@@ -293,7 +293,7 @@ class Parser {
293
293
  const firstToken = this._peekToken();
294
294
  if (firstToken.type === 16 /* TokenType.CloseBracket */) {
295
295
  if (typeVariableNodes.length === 0) {
296
- this._addError(localize_1.Localizer.Diagnostic.typeParametersMissing(), this._peekToken());
296
+ this._addSyntaxError(localize_1.LocMessage.typeParametersMissing(), this._peekToken());
297
297
  }
298
298
  break;
299
299
  }
@@ -308,7 +308,7 @@ class Parser {
308
308
  }
309
309
  const closingToken = this._peekToken();
310
310
  if (closingToken.type !== 16 /* TokenType.CloseBracket */) {
311
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseBracket(), this._peekToken());
311
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseBracket(), this._peekToken());
312
312
  this._consumeTokensUntilType([2 /* TokenType.NewLine */, 16 /* TokenType.CloseBracket */, 10 /* TokenType.Colon */]);
313
313
  }
314
314
  else {
@@ -327,7 +327,7 @@ class Parser {
327
327
  }
328
328
  const nameToken = this._getTokenIfIdentifier();
329
329
  if (!nameToken) {
330
- this._addError(localize_1.Localizer.Diagnostic.expectedTypeParameterName(), this._peekToken());
330
+ this._addSyntaxError(localize_1.LocMessage.expectedTypeParameterName(), this._peekToken());
331
331
  return undefined;
332
332
  }
333
333
  const name = parseNodes_1.NameNode.create(nameToken);
@@ -335,7 +335,7 @@ class Parser {
335
335
  if (this._consumeTokenIfType(10 /* TokenType.Colon */)) {
336
336
  boundExpression = this._parseExpression(/* allowUnpack */ false);
337
337
  if (typeParamCategory !== parseNodes_1.TypeParameterCategory.TypeVar) {
338
- this._addError(localize_1.Localizer.Diagnostic.typeParameterBoundNotAllowed(), boundExpression);
338
+ this._addSyntaxError(localize_1.LocMessage.typeParameterBoundNotAllowed(), boundExpression);
339
339
  }
340
340
  }
341
341
  let defaultExpression;
@@ -343,7 +343,7 @@ class Parser {
343
343
  defaultExpression = this._parseExpression(
344
344
  /* allowUnpack */ typeParamCategory === parseNodes_1.TypeParameterCategory.TypeVarTuple);
345
345
  if (!this._parseOptions.isStubFile && this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_13) {
346
- this._addError(localize_1.Localizer.Diagnostic.typeVarDefaultIllegal(), defaultExpression);
346
+ this._addSyntaxError(localize_1.LocMessage.typeVarDefaultIllegal(), defaultExpression);
347
347
  }
348
348
  }
349
349
  return parseNodes_1.TypeParameterNode.create(name, typeParamCategory, boundExpression, defaultExpression);
@@ -364,7 +364,7 @@ class Parser {
364
364
  this._getKeywordToken(25 /* KeywordType.Match */);
365
365
  const expression = this._parseTestOrStarListAsExpression(
366
366
  /* allowAssignmentExpression */ true,
367
- /* allowMultipleUnpack */ true, 12 /* ErrorExpressionCategory.MissingPatternSubject */, () => localize_1.Localizer.Diagnostic.expectedReturnExpr());
367
+ /* allowMultipleUnpack */ true, 12 /* ErrorExpressionCategory.MissingPatternSubject */, () => localize_1.LocMessage.expectedReturnExpr());
368
368
  smellsLikeMatchStatement =
369
369
  expression.nodeType !== 0 /* ParseNodeType.Error */ && this._peekToken().type === 10 /* TokenType.Colon */;
370
370
  // Set the token index back to the start.
@@ -376,11 +376,11 @@ class Parser {
376
376
  const matchToken = this._getKeywordToken(25 /* KeywordType.Match */);
377
377
  const subjectExpression = this._parseTestOrStarListAsExpression(
378
378
  /* allowAssignmentExpression */ true,
379
- /* allowMultipleUnpack */ true, 12 /* ErrorExpressionCategory.MissingPatternSubject */, () => localize_1.Localizer.Diagnostic.expectedReturnExpr());
379
+ /* allowMultipleUnpack */ true, 12 /* ErrorExpressionCategory.MissingPatternSubject */, () => localize_1.LocMessage.expectedReturnExpr());
380
380
  const matchNode = parseNodes_1.MatchNode.create(matchToken, subjectExpression);
381
381
  const nextToken = this._peekToken();
382
382
  if (!this._consumeTokenIfType(10 /* TokenType.Colon */)) {
383
- this._addError(localize_1.Localizer.Diagnostic.expectedColon(), nextToken);
383
+ this._addSyntaxError(localize_1.LocMessage.expectedColon(), nextToken);
384
384
  // Try to perform parse recovery by consuming tokens until
385
385
  // we find the end of the line.
386
386
  if (this._consumeTokensUntilType([2 /* TokenType.NewLine */, 10 /* TokenType.Colon */])) {
@@ -390,17 +390,17 @@ class Parser {
390
390
  else {
391
391
  (0, parseNodes_1.extendRange)(matchNode, nextToken);
392
392
  if (!this._consumeTokenIfType(2 /* TokenType.NewLine */)) {
393
- this._addError(localize_1.Localizer.Diagnostic.expectedNewline(), nextToken);
393
+ this._addSyntaxError(localize_1.LocMessage.expectedNewline(), nextToken);
394
394
  }
395
395
  else {
396
396
  const possibleIndent = this._peekToken();
397
397
  if (!this._consumeTokenIfType(3 /* TokenType.Indent */)) {
398
- this._addError(localize_1.Localizer.Diagnostic.expectedIndentedBlock(), this._peekToken());
398
+ this._addSyntaxError(localize_1.LocMessage.expectedIndentedBlock(), this._peekToken());
399
399
  }
400
400
  else {
401
401
  const indentToken = possibleIndent;
402
402
  if (indentToken.isIndentAmbiguous) {
403
- this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), indentToken);
403
+ this._addSyntaxError(localize_1.LocMessage.inconsistentTabs(), indentToken);
404
404
  }
405
405
  }
406
406
  while (true) {
@@ -410,10 +410,10 @@ class Parser {
410
410
  this._getNextToken();
411
411
  const indentToken = possibleUnexpectedIndent;
412
412
  if (indentToken.isIndentAmbiguous) {
413
- this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), indentToken);
413
+ this._addSyntaxError(localize_1.LocMessage.inconsistentTabs(), indentToken);
414
414
  }
415
415
  else {
416
- this._addError(localize_1.Localizer.Diagnostic.unexpectedIndent(), possibleUnexpectedIndent);
416
+ this._addSyntaxError(localize_1.LocMessage.unexpectedIndent(), possibleUnexpectedIndent);
417
417
  }
418
418
  }
419
419
  const caseStatement = this._parseCaseStatement();
@@ -430,10 +430,10 @@ class Parser {
430
430
  const dedentToken = this._peekToken();
431
431
  if (this._consumeTokenIfType(4 /* TokenType.Dedent */)) {
432
432
  if (!dedentToken.matchesIndent) {
433
- this._addError(localize_1.Localizer.Diagnostic.inconsistentIndent(), dedentToken);
433
+ this._addSyntaxError(localize_1.LocMessage.inconsistentIndent(), dedentToken);
434
434
  }
435
435
  if (dedentToken.isDedentAmbiguous) {
436
- this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), dedentToken);
436
+ this._addSyntaxError(localize_1.LocMessage.inconsistentTabs(), dedentToken);
437
437
  }
438
438
  break;
439
439
  }
@@ -446,18 +446,18 @@ class Parser {
446
446
  (0, parseNodes_1.extendRange)(matchNode, matchNode.cases[matchNode.cases.length - 1]);
447
447
  }
448
448
  else {
449
- this._addError(localize_1.Localizer.Diagnostic.zeroCaseStatementsFound(), matchToken);
449
+ this._addSyntaxError(localize_1.LocMessage.zeroCaseStatementsFound(), matchToken);
450
450
  }
451
451
  }
452
452
  // This feature requires Python 3.10.
453
453
  if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_10) {
454
- this._addError(localize_1.Localizer.Diagnostic.matchIncompatible(), matchToken);
454
+ this._addSyntaxError(localize_1.LocMessage.matchIncompatible(), matchToken);
455
455
  }
456
456
  // Validate that only the last entry uses an irrefutable pattern.
457
457
  for (let i = 0; i < matchNode.cases.length - 1; i++) {
458
458
  const caseNode = matchNode.cases[i];
459
459
  if (!caseNode.guardExpression && caseNode.isIrrefutable) {
460
- this._addError(localize_1.Localizer.Diagnostic.casePatternIsIrrefutable(), caseNode.pattern);
460
+ this._addSyntaxError(localize_1.LocMessage.casePatternIsIrrefutable(), caseNode.pattern);
461
461
  }
462
462
  }
463
463
  return matchNode;
@@ -468,7 +468,7 @@ class Parser {
468
468
  _parseCaseStatement() {
469
469
  const caseToken = this._peekToken();
470
470
  if (!this._consumeTokenIfKeyword(6 /* KeywordType.Case */)) {
471
- this._addError(localize_1.Localizer.Diagnostic.expectedCase(), caseToken);
471
+ this._addSyntaxError(localize_1.LocMessage.expectedCase(), caseToken);
472
472
  return undefined;
473
473
  }
474
474
  const patternList = this._parsePatternSequence();
@@ -477,7 +477,7 @@ class Parser {
477
477
  casePattern = patternList.parseError;
478
478
  }
479
479
  else if (patternList.list.length === 0) {
480
- this._addError(localize_1.Localizer.Diagnostic.expectedPatternExpr(), this._peekToken());
480
+ this._addSyntaxError(localize_1.LocMessage.expectedPatternExpr(), this._peekToken());
481
481
  casePattern = parseNodes_1.ErrorNode.create(caseToken, 11 /* ErrorExpressionCategory.MissingPattern */);
482
482
  }
483
483
  else if (patternList.list.length === 1 && !patternList.trailingComma) {
@@ -522,7 +522,7 @@ class Parser {
522
522
  _reportDuplicatePatternCaptureTargets(node, globalNameMap, localNameMap) {
523
523
  const reportTargetIfDuplicate = (nameNode) => {
524
524
  if (globalNameMap.has(nameNode.value) || localNameMap.has(nameNode.value)) {
525
- this._addError(localize_1.Localizer.Diagnostic.duplicateCapturePatternTarget().format({
525
+ this._addSyntaxError(localize_1.LocMessage.duplicateCapturePatternTarget().format({
526
526
  name: nameNode.value,
527
527
  }), nameNode);
528
528
  }
@@ -643,7 +643,7 @@ class Parser {
643
643
  entry.orPatterns[0].nodeType === 69 /* ParseNodeType.PatternCapture */ &&
644
644
  entry.orPatterns[0].isStar);
645
645
  if (starEntries.length > 1) {
646
- this._addError(localize_1.Localizer.Diagnostic.duplicateStarPattern(), starEntries[1].orPatterns[0]);
646
+ this._addSyntaxError(localize_1.LocMessage.duplicateStarPattern(), starEntries[1].orPatterns[0]);
647
647
  }
648
648
  return patternList;
649
649
  }
@@ -662,7 +662,7 @@ class Parser {
662
662
  // Star patterns cannot be ORed with other patterns.
663
663
  orPatterns.forEach((patternAtom) => {
664
664
  if (patternAtom.nodeType === 69 /* ParseNodeType.PatternCapture */ && patternAtom.isStar) {
665
- this._addError(localize_1.Localizer.Diagnostic.starPatternInOrPattern(), patternAtom);
665
+ this._addSyntaxError(localize_1.LocMessage.starPatternInOrPattern(), patternAtom);
666
666
  }
667
667
  });
668
668
  }
@@ -673,7 +673,7 @@ class Parser {
673
673
  target = parseNodes_1.NameNode.create(nameToken);
674
674
  }
675
675
  else {
676
- this._addError(localize_1.Localizer.Diagnostic.expectedNameAfterAs(), this._peekToken());
676
+ this._addSyntaxError(localize_1.LocMessage.expectedNameAfterAs(), this._peekToken());
677
677
  }
678
678
  }
679
679
  // Star patterns cannot be used with AS pattern.
@@ -681,12 +681,12 @@ class Parser {
681
681
  orPatterns.length === 1 &&
682
682
  orPatterns[0].nodeType === 69 /* ParseNodeType.PatternCapture */ &&
683
683
  orPatterns[0].isStar) {
684
- this._addError(localize_1.Localizer.Diagnostic.starPatternInAsPattern(), orPatterns[0]);
684
+ this._addSyntaxError(localize_1.LocMessage.starPatternInAsPattern(), orPatterns[0]);
685
685
  }
686
686
  // Validate that irrefutable patterns are not in any entries other than the last.
687
687
  orPatterns.forEach((orPattern, index) => {
688
688
  if (index < orPatterns.length - 1 && this._isPatternIrrefutable(orPattern)) {
689
- this._addError(localize_1.Localizer.Diagnostic.orPatternIrrefutable(), orPattern);
689
+ this._addSyntaxError(localize_1.LocMessage.orPatternIrrefutable(), orPattern);
690
690
  }
691
691
  });
692
692
  // Validate that all bound variables are the same within all or patterns.
@@ -700,10 +700,10 @@ class Parser {
700
700
  if (localNameSet.size < fullNameSet.size) {
701
701
  const missingNames = Array.from(fullNameSet.keys()).filter((name) => !localNameSet.has(name));
702
702
  const diag = new diagnostic_1.DiagnosticAddendum();
703
- diag.addMessage(localize_1.Localizer.DiagnosticAddendum.orPatternMissingName().format({
703
+ diag.addMessage(localize_1.LocAddendum.orPatternMissingName().format({
704
704
  name: missingNames.map((name) => `"${name}"`).join(', '),
705
705
  }));
706
- this._addError(localize_1.Localizer.Diagnostic.orPatternMissingName() + diag.getString(), orPattern);
706
+ this._addSyntaxError(localize_1.LocMessage.orPatternMissingName() + diag.getString(), orPattern);
707
707
  }
708
708
  });
709
709
  return parseNodes_1.PatternAsNode.create(orPatterns, target);
@@ -739,7 +739,7 @@ class Parser {
739
739
  : patternCaptureOrValue.expression;
740
740
  const classPattern = parseNodes_1.PatternClassNode.create(classNameExpr, args);
741
741
  if (!this._consumeTokenIfType(14 /* TokenType.CloseParenthesis */)) {
742
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
742
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseParen(), openParenToken);
743
743
  // Consume the remainder of tokens on the line for error
744
744
  // recovery.
745
745
  this._consumeTokensUntilType([2 /* TokenType.NewLine */]);
@@ -755,7 +755,7 @@ class Parser {
755
755
  const starToken = this._getNextToken();
756
756
  const identifierToken = this._getTokenIfIdentifier();
757
757
  if (!identifierToken) {
758
- this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
758
+ this._addSyntaxError(localize_1.LocMessage.expectedIdentifier(), this._peekToken());
759
759
  return parseNodes_1.ErrorNode.create(starToken, 2 /* ErrorExpressionCategory.MissingExpression */);
760
760
  }
761
761
  else {
@@ -789,9 +789,9 @@ class Parser {
789
789
  (0, parseNodes_1.extendRange)(casePattern, endToken);
790
790
  }
791
791
  else {
792
- this._addError(nextToken.type === 13 /* TokenType.OpenParenthesis */
793
- ? localize_1.Localizer.Diagnostic.expectedCloseParen()
794
- : localize_1.Localizer.Diagnostic.expectedCloseBracket(), nextToken);
792
+ this._addSyntaxError(nextToken.type === 13 /* TokenType.OpenParenthesis */
793
+ ? localize_1.LocMessage.expectedCloseParen()
794
+ : localize_1.LocMessage.expectedCloseBracket(), nextToken);
795
795
  this._consumeTokensUntilType([
796
796
  10 /* TokenType.Colon */,
797
797
  nextToken.type === 13 /* TokenType.OpenParenthesis */ ? 14 /* TokenType.CloseParenthesis */ : 16 /* TokenType.CloseBracket */,
@@ -807,12 +807,12 @@ class Parser {
807
807
  (0, parseNodes_1.extendRange)(mappingPattern, lastToken);
808
808
  }
809
809
  else {
810
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseBrace(), nextToken);
810
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseBrace(), nextToken);
811
811
  this._consumeTokensUntilType([10 /* TokenType.Colon */, 18 /* TokenType.CloseCurlyBrace */]);
812
812
  }
813
813
  return mappingPattern;
814
814
  }
815
- return this._handleExpressionParseError(11 /* ErrorExpressionCategory.MissingPattern */, localize_1.Localizer.Diagnostic.expectedPatternExpr());
815
+ return this._handleExpressionParseError(11 /* ErrorExpressionCategory.MissingPattern */, localize_1.LocMessage.expectedPatternExpr());
816
816
  }
817
817
  // pattern_arguments:
818
818
  // | positional_patterns [',' keyword_patterns]
@@ -834,7 +834,7 @@ class Parser {
834
834
  sawKeywordArg = true;
835
835
  }
836
836
  else if (sawKeywordArg && !arg.name) {
837
- this._addError(localize_1.Localizer.Diagnostic.positionArgAfterNamedArg(), arg);
837
+ this._addSyntaxError(localize_1.LocMessage.positionArgAfterNamedArg(), arg);
838
838
  }
839
839
  argList.push(arg);
840
840
  if (!this._consumeTokenIfType(12 /* TokenType.Comma */)) {
@@ -880,7 +880,7 @@ class Parser {
880
880
  // Check for f-strings, which are not allowed.
881
881
  stringList.strings.forEach((stringAtom) => {
882
882
  if (stringAtom.nodeType === 27 /* ParseNodeType.FormatString */) {
883
- this._addError(localize_1.Localizer.Diagnostic.formatStringInPattern(), stringAtom);
883
+ this._addSyntaxError(localize_1.LocMessage.formatStringInPattern(), stringAtom);
884
884
  }
885
885
  });
886
886
  return parseNodes_1.PatternLiteralNode.create(stringList);
@@ -914,7 +914,7 @@ class Parser {
914
914
  realValue = realValue.expression;
915
915
  }
916
916
  if (realValue.nodeType !== 40 /* ParseNodeType.Number */ || (imagValue !== undefined && realValue.isImaginary)) {
917
- this._addError(localize_1.Localizer.Diagnostic.expectedComplexNumberLiteral(), expression);
917
+ this._addSyntaxError(localize_1.LocMessage.expectedComplexNumberLiteral(), expression);
918
918
  imagValue = undefined;
919
919
  }
920
920
  }
@@ -923,7 +923,7 @@ class Parser {
923
923
  imagValue = imagValue.expression;
924
924
  }
925
925
  if (imagValue.nodeType !== 40 /* ParseNodeType.Number */ || !imagValue.isImaginary) {
926
- this._addError(localize_1.Localizer.Diagnostic.expectedComplexNumberLiteral(), expression);
926
+ this._addSyntaxError(localize_1.LocMessage.expectedComplexNumberLiteral(), expression);
927
927
  }
928
928
  }
929
929
  return parseNodes_1.PatternLiteralNode.create(expression);
@@ -934,7 +934,7 @@ class Parser {
934
934
  // Verify there's at most one ** entry.
935
935
  const starStarEntries = itemList.list.filter((entry) => entry.nodeType === 72 /* ParseNodeType.PatternMappingExpandEntry */);
936
936
  if (starStarEntries.length > 1) {
937
- this._addError(localize_1.Localizer.Diagnostic.duplicateStarStarPattern(), starStarEntries[1]);
937
+ this._addSyntaxError(localize_1.LocMessage.duplicateStarStarPattern(), starStarEntries[1]);
938
938
  }
939
939
  return parseNodes_1.PatternMappingNode.create(firstToken, itemList.list);
940
940
  }
@@ -949,12 +949,12 @@ class Parser {
949
949
  if (this._consumeTokenIfOperator(29 /* OperatorType.Power */)) {
950
950
  const identifierToken = this._getTokenIfIdentifier();
951
951
  if (!identifierToken) {
952
- this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
952
+ this._addSyntaxError(localize_1.LocMessage.expectedIdentifier(), this._peekToken());
953
953
  return parseNodes_1.ErrorNode.create(this._peekToken(), 11 /* ErrorExpressionCategory.MissingPattern */);
954
954
  }
955
955
  const nameNode = parseNodes_1.NameNode.create(identifierToken);
956
956
  if (identifierToken.value === '_') {
957
- this._addError(localize_1.Localizer.Diagnostic.starStarWildcardNotAllowed(), nameNode);
957
+ this._addSyntaxError(localize_1.LocMessage.starStarWildcardNotAllowed(), nameNode);
958
958
  }
959
959
  return parseNodes_1.PatternMappingExpandEntryNode.create(doubleStar, nameNode);
960
960
  }
@@ -969,18 +969,18 @@ class Parser {
969
969
  keyExpression = patternCaptureOrValue;
970
970
  }
971
971
  else {
972
- this._addError(localize_1.Localizer.Diagnostic.expectedPatternValue(), patternCaptureOrValue);
972
+ this._addSyntaxError(localize_1.LocMessage.expectedPatternValue(), patternCaptureOrValue);
973
973
  keyExpression = parseNodes_1.ErrorNode.create(this._peekToken(), 11 /* ErrorExpressionCategory.MissingPattern */);
974
974
  }
975
975
  }
976
976
  }
977
977
  if (!keyExpression) {
978
- this._addError(localize_1.Localizer.Diagnostic.expectedPatternExpr(), this._peekToken());
978
+ this._addSyntaxError(localize_1.LocMessage.expectedPatternExpr(), this._peekToken());
979
979
  keyExpression = parseNodes_1.ErrorNode.create(this._peekToken(), 11 /* ErrorExpressionCategory.MissingPattern */);
980
980
  }
981
981
  let valuePattern;
982
982
  if (!this._consumeTokenIfType(10 /* TokenType.Colon */)) {
983
- this._addError(localize_1.Localizer.Diagnostic.expectedColon(), this._peekToken());
983
+ this._addSyntaxError(localize_1.LocMessage.expectedColon(), this._peekToken());
984
984
  valuePattern = parseNodes_1.ErrorNode.create(this._peekToken(), 11 /* ErrorExpressionCategory.MissingPattern */);
985
985
  }
986
986
  else {
@@ -999,7 +999,7 @@ class Parser {
999
999
  nameOrMember = nameOrMember ? parseNodes_1.MemberAccessNode.create(nameOrMember, nameNode) : nameNode;
1000
1000
  }
1001
1001
  else {
1002
- this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
1002
+ this._addSyntaxError(localize_1.LocMessage.expectedIdentifier(), this._peekToken());
1003
1003
  break;
1004
1004
  }
1005
1005
  if (!this._consumeTokenIfType(20 /* TokenType.Dot */)) {
@@ -1007,7 +1007,7 @@ class Parser {
1007
1007
  }
1008
1008
  }
1009
1009
  if (!nameOrMember) {
1010
- this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
1010
+ this._addSyntaxError(localize_1.LocMessage.expectedIdentifier(), this._peekToken());
1011
1011
  return parseNodes_1.ErrorNode.create(this._peekToken(), 11 /* ErrorExpressionCategory.MissingPattern */);
1012
1012
  }
1013
1013
  if (nameOrMember.nodeType === 35 /* ParseNodeType.MemberAccess */) {
@@ -1062,7 +1062,7 @@ class Parser {
1062
1062
  const nextToken = this._peekToken();
1063
1063
  const suite = parseNodes_1.SuiteNode.create(nextToken);
1064
1064
  if (!this._consumeTokenIfType(10 /* TokenType.Colon */)) {
1065
- this._addError(localize_1.Localizer.Diagnostic.expectedColon(), nextToken);
1065
+ this._addSyntaxError(localize_1.LocMessage.expectedColon(), nextToken);
1066
1066
  // Try to perform parse recovery by consuming tokens.
1067
1067
  if (this._consumeTokensUntilType([2 /* TokenType.NewLine */, 10 /* TokenType.Colon */])) {
1068
1068
  if (this._peekTokenType() === 10 /* TokenType.Colon */) {
@@ -1086,7 +1086,7 @@ class Parser {
1086
1086
  }
1087
1087
  if (nextToken.type === 4 /* TokenType.Dedent */) {
1088
1088
  if (nextToken.isDedentAmbiguous) {
1089
- this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), nextToken);
1089
+ this._addSyntaxError(localize_1.LocMessage.inconsistentTabs(), nextToken);
1090
1090
  }
1091
1091
  indent--;
1092
1092
  if (indent === 0) {
@@ -1118,12 +1118,12 @@ class Parser {
1118
1118
  }
1119
1119
  const possibleIndent = this._peekToken();
1120
1120
  if (!this._consumeTokenIfType(3 /* TokenType.Indent */)) {
1121
- this._addError(localize_1.Localizer.Diagnostic.expectedIndentedBlock(), this._peekToken());
1121
+ this._addSyntaxError(localize_1.LocMessage.expectedIndentedBlock(), this._peekToken());
1122
1122
  return suite;
1123
1123
  }
1124
1124
  const bodyIndentToken = possibleIndent;
1125
1125
  if (bodyIndentToken.isIndentAmbiguous) {
1126
- this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), bodyIndentToken);
1126
+ this._addSyntaxError(localize_1.LocMessage.inconsistentTabs(), bodyIndentToken);
1127
1127
  }
1128
1128
  while (true) {
1129
1129
  // Handle a common error here and see if we can recover.
@@ -1132,20 +1132,20 @@ class Parser {
1132
1132
  this._getNextToken();
1133
1133
  const indentToken = nextToken;
1134
1134
  if (indentToken.isIndentAmbiguous) {
1135
- this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), indentToken);
1135
+ this._addSyntaxError(localize_1.LocMessage.inconsistentTabs(), indentToken);
1136
1136
  }
1137
1137
  else {
1138
- this._addError(localize_1.Localizer.Diagnostic.unexpectedIndent(), nextToken);
1138
+ this._addSyntaxError(localize_1.LocMessage.unexpectedIndent(), nextToken);
1139
1139
  }
1140
1140
  }
1141
1141
  else if (nextToken.type === 4 /* TokenType.Dedent */) {
1142
1142
  // When we see a dedent, stop before parsing the dedented statement.
1143
1143
  const dedentToken = nextToken;
1144
1144
  if (!dedentToken.matchesIndent) {
1145
- this._addError(localize_1.Localizer.Diagnostic.inconsistentIndent(), dedentToken);
1145
+ this._addSyntaxError(localize_1.LocMessage.inconsistentIndent(), dedentToken);
1146
1146
  }
1147
1147
  if (dedentToken.isDedentAmbiguous) {
1148
- this._addError(localize_1.Localizer.Diagnostic.inconsistentTabs(), dedentToken);
1148
+ this._addSyntaxError(localize_1.LocMessage.inconsistentTabs(), dedentToken);
1149
1149
  }
1150
1150
  // When the suite is incomplete (no statements), leave the dedent token for
1151
1151
  // recovery. This allows a single dedent token to cause us to break out of
@@ -1201,18 +1201,18 @@ class Parser {
1201
1201
  // for_stmt: [async] 'for' exprlist 'in' testlist suite ['else' suite]
1202
1202
  _parseForStatement(asyncToken) {
1203
1203
  const forToken = this._getKeywordToken(17 /* KeywordType.For */);
1204
- const targetExpr = this._parseExpressionListAsPossibleTuple(2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedExpr(), forToken);
1204
+ const targetExpr = this._parseExpressionListAsPossibleTuple(2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedExpr(), forToken);
1205
1205
  let seqExpr;
1206
1206
  let forSuite;
1207
1207
  let elseSuite;
1208
1208
  if (!this._consumeTokenIfKeyword(22 /* KeywordType.In */)) {
1209
- seqExpr = this._handleExpressionParseError(0 /* ErrorExpressionCategory.MissingIn */, localize_1.Localizer.Diagnostic.expectedIn());
1209
+ seqExpr = this._handleExpressionParseError(0 /* ErrorExpressionCategory.MissingIn */, localize_1.LocMessage.expectedIn());
1210
1210
  forSuite = parseNodes_1.SuiteNode.create(this._peekToken());
1211
1211
  }
1212
1212
  else {
1213
1213
  seqExpr = this._parseTestOrStarListAsExpression(
1214
1214
  /* allowAssignmentExpression */ false,
1215
- /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedInExpr());
1215
+ /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedInExpr());
1216
1216
  forSuite = this._parseLoopSuite();
1217
1217
  // Versions of Python earlier than 3.9 didn't allow unpack operators if the
1218
1218
  // tuple wasn't enclosed in parentheses.
@@ -1221,7 +1221,7 @@ class Parser {
1221
1221
  let sawStar = false;
1222
1222
  seqExpr.expressions.forEach((expr) => {
1223
1223
  if (expr.nodeType === 56 /* ParseNodeType.Unpack */ && !sawStar) {
1224
- this._addError(localize_1.Localizer.Diagnostic.unpackOperatorNotAllowed(), expr);
1224
+ this._addSyntaxError(localize_1.LocMessage.unpackOperatorNotAllowed(), expr);
1225
1225
  sawStar = true;
1226
1226
  }
1227
1227
  });
@@ -1254,10 +1254,10 @@ class Parser {
1254
1254
  return undefined;
1255
1255
  }
1256
1256
  if (target.nodeType === 56 /* ParseNodeType.Unpack */) {
1257
- this._addError(localize_1.Localizer.Diagnostic.unpackIllegalInComprehension(), target);
1257
+ this._addSyntaxError(localize_1.LocMessage.unpackIllegalInComprehension(), target);
1258
1258
  }
1259
1259
  else if (target.nodeType === 16 /* ParseNodeType.DictionaryExpandEntry */) {
1260
- this._addError(localize_1.Localizer.Diagnostic.dictExpandIllegalInComprehension(), target);
1260
+ this._addSyntaxError(localize_1.LocMessage.dictExpandIllegalInComprehension(), target);
1261
1261
  }
1262
1262
  const listCompNode = parseNodes_1.ListComprehensionNode.create(target, isGenerator);
1263
1263
  const forIfList = [compFor];
@@ -1295,10 +1295,10 @@ class Parser {
1295
1295
  asyncToken = this._getKeywordToken(3 /* KeywordType.Async */);
1296
1296
  }
1297
1297
  const forToken = this._getKeywordToken(17 /* KeywordType.For */);
1298
- const targetExpr = this._parseExpressionListAsPossibleTuple(2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedExpr(), forToken);
1298
+ const targetExpr = this._parseExpressionListAsPossibleTuple(2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedExpr(), forToken);
1299
1299
  let seqExpr;
1300
1300
  if (!this._consumeTokenIfKeyword(22 /* KeywordType.In */)) {
1301
- seqExpr = this._handleExpressionParseError(0 /* ErrorExpressionCategory.MissingIn */, localize_1.Localizer.Diagnostic.expectedIn());
1301
+ seqExpr = this._handleExpressionParseError(0 /* ErrorExpressionCategory.MissingIn */, localize_1.LocMessage.expectedIn());
1302
1302
  }
1303
1303
  else {
1304
1304
  this._disallowAssignmentExpression(() => {
@@ -1356,7 +1356,7 @@ class Parser {
1356
1356
  let isExceptGroup = false;
1357
1357
  if (this._consumeTokenIfOperator(26 /* OperatorType.Multiply */)) {
1358
1358
  if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_11 && !this._parseOptions.isStubFile) {
1359
- this._addError(localize_1.Localizer.Diagnostic.exceptionGroupIncompatible(), possibleStarToken);
1359
+ this._addSyntaxError(localize_1.LocMessage.exceptionGroupIncompatible(), possibleStarToken);
1360
1360
  }
1361
1361
  isExceptGroup = true;
1362
1362
  }
@@ -1367,14 +1367,14 @@ class Parser {
1367
1367
  if (this._consumeTokenIfKeyword(1 /* KeywordType.As */)) {
1368
1368
  symbolName = this._getTokenIfIdentifier();
1369
1369
  if (!symbolName) {
1370
- this._addError(localize_1.Localizer.Diagnostic.expectedNameAfterAs(), this._peekToken());
1370
+ this._addSyntaxError(localize_1.LocMessage.expectedNameAfterAs(), this._peekToken());
1371
1371
  }
1372
1372
  }
1373
1373
  else {
1374
1374
  // Handle the python 2.x syntax in a graceful manner.
1375
1375
  const peekToken = this._peekToken();
1376
1376
  if (this._consumeTokenIfType(12 /* TokenType.Comma */)) {
1377
- this._addError(localize_1.Localizer.Diagnostic.expectedAsAfterException(), peekToken);
1377
+ this._addSyntaxError(localize_1.LocMessage.expectedAsAfterException(), peekToken);
1378
1378
  // Parse the expression expected in python 2.x, but discard it.
1379
1379
  this._parseTestExpression(/* allowAssignmentExpression */ false);
1380
1380
  }
@@ -1382,13 +1382,13 @@ class Parser {
1382
1382
  }
1383
1383
  if (!typeExpr) {
1384
1384
  if (sawCatchAllExcept) {
1385
- this._addError(localize_1.Localizer.Diagnostic.duplicateCatchAll(), exceptToken);
1385
+ this._addSyntaxError(localize_1.LocMessage.duplicateCatchAll(), exceptToken);
1386
1386
  }
1387
1387
  sawCatchAllExcept = true;
1388
1388
  }
1389
1389
  else {
1390
1390
  if (sawCatchAllExcept) {
1391
- this._addError(localize_1.Localizer.Diagnostic.namedExceptAfterCatchAll(), typeExpr);
1391
+ this._addSyntaxError(localize_1.LocMessage.namedExceptAfterCatchAll(), typeExpr);
1392
1392
  }
1393
1393
  }
1394
1394
  const exceptSuite = this._parseSuite(this._isInFunction);
@@ -1418,7 +1418,7 @@ class Parser {
1418
1418
  (0, parseNodes_1.extendRange)(tryNode, tryNode.finallySuite);
1419
1419
  }
1420
1420
  if (!tryNode.finallySuite && tryNode.exceptClauses.length === 0) {
1421
- this._addError(localize_1.Localizer.Diagnostic.tryWithoutExcept(), tryToken);
1421
+ this._addSyntaxError(localize_1.LocMessage.tryWithoutExcept(), tryToken);
1422
1422
  }
1423
1423
  return tryNode;
1424
1424
  }
@@ -1428,7 +1428,7 @@ class Parser {
1428
1428
  const defToken = this._getKeywordToken(10 /* KeywordType.Def */);
1429
1429
  const nameToken = this._getTokenIfIdentifier();
1430
1430
  if (!nameToken) {
1431
- this._addError(localize_1.Localizer.Diagnostic.expectedFunctionName(), defToken);
1431
+ this._addSyntaxError(localize_1.LocMessage.expectedFunctionName(), defToken);
1432
1432
  return parseNodes_1.ErrorNode.create(defToken, 10 /* ErrorExpressionCategory.MissingFunctionParameterList */, undefined, decorators);
1433
1433
  }
1434
1434
  let typeParameters;
@@ -1436,17 +1436,17 @@ class Parser {
1436
1436
  if (possibleOpenBracket.type === 15 /* TokenType.OpenBracket */) {
1437
1437
  typeParameters = this._parseTypeParameterList();
1438
1438
  if (!this._parseOptions.isStubFile && this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_12) {
1439
- this._addError(localize_1.Localizer.Diagnostic.functionTypeParametersIllegal(), typeParameters);
1439
+ this._addSyntaxError(localize_1.LocMessage.functionTypeParametersIllegal(), typeParameters);
1440
1440
  }
1441
1441
  }
1442
1442
  const openParenToken = this._peekToken();
1443
1443
  if (!this._consumeTokenIfType(13 /* TokenType.OpenParenthesis */)) {
1444
- this._addError(localize_1.Localizer.Diagnostic.expectedOpenParen(), this._peekToken());
1444
+ this._addSyntaxError(localize_1.LocMessage.expectedOpenParen(), this._peekToken());
1445
1445
  return parseNodes_1.ErrorNode.create(nameToken, 10 /* ErrorExpressionCategory.MissingFunctionParameterList */, parseNodes_1.NameNode.create(nameToken), decorators);
1446
1446
  }
1447
1447
  const paramList = this._parseVarArgsList(14 /* TokenType.CloseParenthesis */, /* allowAnnotations */ true);
1448
1448
  if (!this._consumeTokenIfType(14 /* TokenType.CloseParenthesis */)) {
1449
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
1449
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseParen(), openParenToken);
1450
1450
  this._consumeTokensUntilType([10 /* TokenType.Colon */]);
1451
1451
  }
1452
1452
  let returnType;
@@ -1523,7 +1523,7 @@ class Parser {
1523
1523
  if (param.name) {
1524
1524
  const name = param.name.value;
1525
1525
  if (paramMap.has(name)) {
1526
- this._addError(localize_1.Localizer.Diagnostic.duplicateParam().format({ name }), param.name);
1526
+ this._addSyntaxError(localize_1.LocMessage.duplicateParam().format({ name }), param.name);
1527
1527
  }
1528
1528
  else {
1529
1529
  paramMap.set(name, name);
@@ -1531,19 +1531,19 @@ class Parser {
1531
1531
  }
1532
1532
  else if (param.category === 0 /* ParameterCategory.Simple */) {
1533
1533
  if (paramList.length === 0) {
1534
- this._addError(localize_1.Localizer.Diagnostic.positionOnlyFirstParam(), param);
1534
+ this._addSyntaxError(localize_1.LocMessage.positionOnlyFirstParam(), param);
1535
1535
  }
1536
1536
  }
1537
1537
  if (param.category === 0 /* ParameterCategory.Simple */) {
1538
1538
  if (!param.name) {
1539
1539
  if (sawPositionOnlySeparator) {
1540
- this._addError(localize_1.Localizer.Diagnostic.duplicatePositionOnly(), param);
1540
+ this._addSyntaxError(localize_1.LocMessage.duplicatePositionOnly(), param);
1541
1541
  }
1542
1542
  else if (sawKeywordOnlySeparator) {
1543
- this._addError(localize_1.Localizer.Diagnostic.positionOnlyAfterKeywordOnly(), param);
1543
+ this._addSyntaxError(localize_1.LocMessage.positionOnlyAfterKeywordOnly(), param);
1544
1544
  }
1545
1545
  else if (sawArgs) {
1546
- this._addError(localize_1.Localizer.Diagnostic.positionOnlyAfterArgs(), param);
1546
+ this._addSyntaxError(localize_1.LocMessage.positionOnlyAfterArgs(), param);
1547
1547
  }
1548
1548
  sawPositionOnlySeparator = true;
1549
1549
  }
@@ -1557,7 +1557,7 @@ class Parser {
1557
1557
  else if (sawDefaultParam && !sawKeywordOnlySeparator && !sawArgs) {
1558
1558
  // Report this error only once.
1559
1559
  if (!reportedNonDefaultParamErr) {
1560
- this._addError(localize_1.Localizer.Diagnostic.nonDefaultAfterDefault(), param);
1560
+ this._addSyntaxError(localize_1.LocMessage.nonDefaultAfterDefault(), param);
1561
1561
  reportedNonDefaultParamErr = true;
1562
1562
  }
1563
1563
  }
@@ -1567,32 +1567,32 @@ class Parser {
1567
1567
  if (param.category === 1 /* ParameterCategory.ArgsList */) {
1568
1568
  if (!param.name) {
1569
1569
  if (sawKeywordOnlySeparator) {
1570
- this._addError(localize_1.Localizer.Diagnostic.duplicateKeywordOnly(), param);
1570
+ this._addSyntaxError(localize_1.LocMessage.duplicateKeywordOnly(), param);
1571
1571
  }
1572
1572
  else if (sawArgs) {
1573
- this._addError(localize_1.Localizer.Diagnostic.keywordOnlyAfterArgs(), param);
1573
+ this._addSyntaxError(localize_1.LocMessage.keywordOnlyAfterArgs(), param);
1574
1574
  }
1575
1575
  sawKeywordOnlySeparator = true;
1576
1576
  }
1577
1577
  else {
1578
1578
  if (sawKeywordOnlySeparator || sawArgs) {
1579
- this._addError(localize_1.Localizer.Diagnostic.duplicateArgsParam(), param);
1579
+ this._addSyntaxError(localize_1.LocMessage.duplicateArgsParam(), param);
1580
1580
  }
1581
1581
  sawArgs = true;
1582
1582
  }
1583
1583
  }
1584
1584
  if (param.category === 2 /* ParameterCategory.KwargsDict */) {
1585
1585
  if (sawKwArgs) {
1586
- this._addError(localize_1.Localizer.Diagnostic.duplicateKwargsParam(), param);
1586
+ this._addSyntaxError(localize_1.LocMessage.duplicateKwargsParam(), param);
1587
1587
  }
1588
1588
  sawKwArgs = true;
1589
1589
  // A **kwargs cannot immediately follow a keyword-only separator ("*").
1590
1590
  if (sawKeywordOnlySeparator && !sawKeywordOnlyParamAfterSeparator) {
1591
- this._addError(localize_1.Localizer.Diagnostic.keywordParameterMissing(), param);
1591
+ this._addSyntaxError(localize_1.LocMessage.keywordParameterMissing(), param);
1592
1592
  }
1593
1593
  }
1594
1594
  else if (sawKwArgs) {
1595
- this._addError(localize_1.Localizer.Diagnostic.paramAfterKwargsParam(), param);
1595
+ this._addSyntaxError(localize_1.LocMessage.paramAfterKwargsParam(), param);
1596
1596
  }
1597
1597
  const foundComma = this._consumeTokenIfType(12 /* TokenType.Comma */);
1598
1598
  if (allowAnnotations && !param.typeAnnotation) {
@@ -1611,7 +1611,7 @@ class Parser {
1611
1611
  if (paramList.length > 0) {
1612
1612
  const lastParam = paramList[paramList.length - 1];
1613
1613
  if (lastParam.category === 1 /* ParameterCategory.ArgsList */ && !lastParam.name) {
1614
- this._addError(localize_1.Localizer.Diagnostic.expectedNamedParameter(), lastParam);
1614
+ this._addSyntaxError(localize_1.LocMessage.expectedNamedParameter(), lastParam);
1615
1615
  }
1616
1616
  }
1617
1617
  return paramList;
@@ -1628,7 +1628,7 @@ class Parser {
1628
1628
  }
1629
1629
  else if (this._consumeTokenIfOperator(10 /* OperatorType.Divide */)) {
1630
1630
  if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_8 && !this._parseOptions.isStubFile) {
1631
- this._addError(localize_1.Localizer.Diagnostic.positionOnlyIncompatible(), firstToken);
1631
+ this._addSyntaxError(localize_1.LocMessage.positionOnlyIncompatible(), firstToken);
1632
1632
  }
1633
1633
  slashCount = 1;
1634
1634
  }
@@ -1648,10 +1648,10 @@ class Parser {
1648
1648
  if (this._consumeTokensUntilType([14 /* TokenType.CloseParenthesis */])) {
1649
1649
  this._getNextToken();
1650
1650
  }
1651
- this._addError(localize_1.Localizer.Diagnostic.sublistParamsIncompatible(), sublistStart);
1651
+ this._addSyntaxError(localize_1.LocMessage.sublistParamsIncompatible(), sublistStart);
1652
1652
  }
1653
1653
  else {
1654
- this._addError(localize_1.Localizer.Diagnostic.expectedParamName(), this._peekToken());
1654
+ this._addSyntaxError(localize_1.LocMessage.expectedParamName(), this._peekToken());
1655
1655
  }
1656
1656
  }
1657
1657
  let paramType = 0 /* ParameterCategory.Simple */;
@@ -1677,7 +1677,7 @@ class Parser {
1677
1677
  paramNode.defaultValue.parent = paramNode;
1678
1678
  (0, parseNodes_1.extendRange)(paramNode, paramNode.defaultValue);
1679
1679
  if (starCount > 0) {
1680
- this._addError(localize_1.Localizer.Diagnostic.defaultValueNotAllowed(), paramNode.defaultValue);
1680
+ this._addSyntaxError(localize_1.LocMessage.defaultValueNotAllowed(), paramNode.defaultValue);
1681
1681
  }
1682
1682
  }
1683
1683
  return paramNode;
@@ -1718,7 +1718,7 @@ class Parser {
1718
1718
  if (isParenthesizedWithItemList) {
1719
1719
  this._consumeTokenIfType(13 /* TokenType.OpenParenthesis */);
1720
1720
  if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_9) {
1721
- this._addError(localize_1.Localizer.Diagnostic.parenthesizedContextManagerIllegal(), possibleParen);
1721
+ this._addSyntaxError(localize_1.LocMessage.parenthesizedContextManagerIllegal(), possibleParen);
1722
1722
  }
1723
1723
  }
1724
1724
  while (true) {
@@ -1732,7 +1732,7 @@ class Parser {
1732
1732
  }
1733
1733
  if (isParenthesizedWithItemList) {
1734
1734
  if (!this._consumeTokenIfType(14 /* TokenType.CloseParenthesis */)) {
1735
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), possibleParen);
1735
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseParen(), possibleParen);
1736
1736
  }
1737
1737
  }
1738
1738
  let typeComment;
@@ -1785,7 +1785,7 @@ class Parser {
1785
1785
  if (nextToken.keywordType === 3 /* KeywordType.Async */) {
1786
1786
  this._getNextToken();
1787
1787
  if (this._peekKeywordType() !== 10 /* KeywordType.Def */) {
1788
- this._addError(localize_1.Localizer.Diagnostic.expectedFunctionAfterAsync(), this._peekToken());
1788
+ this._addSyntaxError(localize_1.LocMessage.expectedFunctionAfterAsync(), this._peekToken());
1789
1789
  }
1790
1790
  else {
1791
1791
  return this._parseFunctionDef(nextToken, decoratorList);
@@ -1798,7 +1798,7 @@ class Parser {
1798
1798
  return this._parseClassDef(decoratorList);
1799
1799
  }
1800
1800
  }
1801
- this._addError(localize_1.Localizer.Diagnostic.expectedAfterDecorator(), this._peekToken());
1801
+ this._addSyntaxError(localize_1.LocMessage.expectedAfterDecorator(), this._peekToken());
1802
1802
  // Return a dummy class declaration so the completion provider has
1803
1803
  // some parse nodes to work with.
1804
1804
  return parseNodes_1.ClassNode.createDummyForDecorators(decoratorList);
@@ -1820,12 +1820,12 @@ class Parser {
1820
1820
  isSupportedExpressionForm = true;
1821
1821
  }
1822
1822
  if (!isSupportedExpressionForm) {
1823
- this._addError(localize_1.Localizer.Diagnostic.expectedDecoratorExpr(), expression);
1823
+ this._addSyntaxError(localize_1.LocMessage.expectedDecoratorExpr(), expression);
1824
1824
  }
1825
1825
  }
1826
1826
  const decoratorNode = parseNodes_1.DecoratorNode.create(atOperator, expression);
1827
1827
  if (!this._consumeTokenIfType(2 /* TokenType.NewLine */)) {
1828
- this._addError(localize_1.Localizer.Diagnostic.expectedDecoratorNewline(), this._peekToken());
1828
+ this._addSyntaxError(localize_1.LocMessage.expectedDecoratorNewline(), this._peekToken());
1829
1829
  this._consumeTokensUntilType([2 /* TokenType.NewLine */]);
1830
1830
  }
1831
1831
  return decoratorNode;
@@ -1844,7 +1844,7 @@ class Parser {
1844
1844
  const classToken = this._getKeywordToken(7 /* KeywordType.Class */);
1845
1845
  let nameToken = this._getTokenIfIdentifier();
1846
1846
  if (!nameToken) {
1847
- this._addError(localize_1.Localizer.Diagnostic.expectedClassName(), this._peekToken());
1847
+ this._addSyntaxError(localize_1.LocMessage.expectedClassName(), this._peekToken());
1848
1848
  nameToken = tokenizerTypes_1.IdentifierToken.create(0, 0, '', /* comments */ undefined);
1849
1849
  }
1850
1850
  let typeParameters;
@@ -1852,7 +1852,7 @@ class Parser {
1852
1852
  if (possibleOpenBracket.type === 15 /* TokenType.OpenBracket */) {
1853
1853
  typeParameters = this._parseTypeParameterList();
1854
1854
  if (!this._parseOptions.isStubFile && this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_12) {
1855
- this._addError(localize_1.Localizer.Diagnostic.classTypeParametersIllegal(), typeParameters);
1855
+ this._addSyntaxError(localize_1.LocMessage.classTypeParametersIllegal(), typeParameters);
1856
1856
  }
1857
1857
  }
1858
1858
  let argList = [];
@@ -1860,7 +1860,7 @@ class Parser {
1860
1860
  if (this._consumeTokenIfType(13 /* TokenType.OpenParenthesis */)) {
1861
1861
  argList = this._parseArgList().args;
1862
1862
  if (!this._consumeTokenIfType(14 /* TokenType.CloseParenthesis */)) {
1863
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
1863
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseParen(), openParenToken);
1864
1864
  }
1865
1865
  }
1866
1866
  const suite = this._parseSuite(/* isFunction */ false, this._parseOptions.skipFunctionAndClassBody);
@@ -1886,17 +1886,17 @@ class Parser {
1886
1886
  _parseBreakStatement() {
1887
1887
  const breakToken = this._getKeywordToken(5 /* KeywordType.Break */);
1888
1888
  if (!this._isInLoop) {
1889
- this._addError(localize_1.Localizer.Diagnostic.breakOutsideLoop(), breakToken);
1889
+ this._addSyntaxError(localize_1.LocMessage.breakOutsideLoop(), breakToken);
1890
1890
  }
1891
1891
  return parseNodes_1.BreakNode.create(breakToken);
1892
1892
  }
1893
1893
  _parseContinueStatement() {
1894
1894
  const continueToken = this._getKeywordToken(8 /* KeywordType.Continue */);
1895
1895
  if (!this._isInLoop) {
1896
- this._addError(localize_1.Localizer.Diagnostic.continueOutsideLoop(), continueToken);
1896
+ this._addSyntaxError(localize_1.LocMessage.continueOutsideLoop(), continueToken);
1897
1897
  }
1898
1898
  else if (this._isInFinally) {
1899
- this._addError(localize_1.Localizer.Diagnostic.continueInFinally(), continueToken);
1899
+ this._addSyntaxError(localize_1.LocMessage.continueInFinally(), continueToken);
1900
1900
  }
1901
1901
  return parseNodes_1.ContinueNode.create(continueToken);
1902
1902
  }
@@ -1905,12 +1905,12 @@ class Parser {
1905
1905
  const returnToken = this._getKeywordToken(32 /* KeywordType.Return */);
1906
1906
  const returnNode = parseNodes_1.ReturnNode.create(returnToken);
1907
1907
  if (!this._isInFunction) {
1908
- this._addError(localize_1.Localizer.Diagnostic.returnOutsideFunction(), returnToken);
1908
+ this._addSyntaxError(localize_1.LocMessage.returnOutsideFunction(), returnToken);
1909
1909
  }
1910
1910
  if (!this._isNextTokenNeverExpression()) {
1911
1911
  const returnExpr = this._parseTestOrStarListAsExpression(
1912
1912
  /* allowAssignmentExpression */ true,
1913
- /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedReturnExpr());
1913
+ /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedReturnExpr());
1914
1914
  this._reportConditionalErrorForStarTupleElement(returnExpr);
1915
1915
  returnNode.returnExpression = returnExpr;
1916
1916
  returnNode.returnExpression.parent = returnNode;
@@ -1931,7 +1931,7 @@ class Parser {
1931
1931
  const isFutureImport = modName.leadingDots === 0 && modName.nameParts.length === 1 && modName.nameParts[0].value === '__future__';
1932
1932
  const possibleInputToken = this._peekToken();
1933
1933
  if (!this._consumeTokenIfKeyword(21 /* KeywordType.Import */)) {
1934
- this._addError(localize_1.Localizer.Diagnostic.expectedImport(), this._peekToken());
1934
+ this._addSyntaxError(localize_1.LocMessage.expectedImport(), this._peekToken());
1935
1935
  if (!modName.hasTrailingDot) {
1936
1936
  importFromNode.missingImportKeyword = true;
1937
1937
  }
@@ -1960,7 +1960,7 @@ class Parser {
1960
1960
  if (this._consumeTokenIfKeyword(1 /* KeywordType.As */)) {
1961
1961
  const aliasName = this._getTokenIfIdentifier();
1962
1962
  if (!aliasName) {
1963
- this._addError(localize_1.Localizer.Diagnostic.expectedImportAlias(), this._peekToken());
1963
+ this._addSyntaxError(localize_1.LocMessage.expectedImportAlias(), this._peekToken());
1964
1964
  }
1965
1965
  else {
1966
1966
  importFromAsNode.alias = parseNodes_1.NameNode.create(aliasName);
@@ -1982,20 +1982,20 @@ class Parser {
1982
1982
  trailingCommaToken = nextToken;
1983
1983
  }
1984
1984
  if (importFromNode.imports.length === 0) {
1985
- this._addError(localize_1.Localizer.Diagnostic.expectedImportSymbols(), this._peekToken());
1985
+ this._addSyntaxError(localize_1.LocMessage.expectedImportSymbols(), this._peekToken());
1986
1986
  }
1987
1987
  if (inParen) {
1988
1988
  importFromNode.usesParens = true;
1989
1989
  const nextToken = this._peekToken();
1990
1990
  if (!this._consumeTokenIfType(14 /* TokenType.CloseParenthesis */)) {
1991
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
1991
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseParen(), openParenToken);
1992
1992
  }
1993
1993
  else {
1994
1994
  (0, parseNodes_1.extendRange)(importFromNode, nextToken);
1995
1995
  }
1996
1996
  }
1997
1997
  else if (trailingCommaToken) {
1998
- this._addError(localize_1.Localizer.Diagnostic.trailingCommaInFromImport(), trailingCommaToken);
1998
+ this._addSyntaxError(localize_1.LocMessage.trailingCommaInFromImport(), trailingCommaToken);
1999
1999
  }
2000
2000
  }
2001
2001
  }
@@ -2048,11 +2048,11 @@ class Parser {
2048
2048
  (0, parseNodes_1.extendRange)(importAsNode, importAsNode.alias);
2049
2049
  }
2050
2050
  else {
2051
- this._addError(localize_1.Localizer.Diagnostic.expectedImportAlias(), this._peekToken());
2051
+ this._addSyntaxError(localize_1.LocMessage.expectedImportAlias(), this._peekToken());
2052
2052
  }
2053
2053
  }
2054
2054
  if (importAsNode.module.leadingDots > 0) {
2055
- this._addError(localize_1.Localizer.Diagnostic.relativeImportNotAllowed(), importAsNode.module);
2055
+ this._addSyntaxError(localize_1.LocMessage.relativeImportNotAllowed(), importAsNode.module);
2056
2056
  }
2057
2057
  importNode.list.push(importAsNode);
2058
2058
  importAsNode.parent = importNode;
@@ -2118,7 +2118,7 @@ class Parser {
2118
2118
  const identifier = this._getTokenIfIdentifier();
2119
2119
  if (!identifier) {
2120
2120
  if (!allowJustDots || moduleNameNode.leadingDots === 0 || moduleNameNode.nameParts.length > 0) {
2121
- this._addError(localize_1.Localizer.Diagnostic.expectedModuleName(), this._peekToken());
2121
+ this._addSyntaxError(localize_1.LocMessage.expectedModuleName(), this._peekToken());
2122
2122
  moduleNameNode.hasTrailingDot = true;
2123
2123
  }
2124
2124
  break;
@@ -2165,7 +2165,7 @@ class Parser {
2165
2165
  while (true) {
2166
2166
  const name = this._getTokenIfIdentifier();
2167
2167
  if (!name) {
2168
- this._addError(localize_1.Localizer.Diagnostic.expectedIdentifier(), this._peekToken());
2168
+ this._addSyntaxError(localize_1.LocMessage.expectedIdentifier(), this._peekToken());
2169
2169
  break;
2170
2170
  }
2171
2171
  nameList.push(parseNodes_1.NameNode.create(name));
@@ -2223,7 +2223,7 @@ class Parser {
2223
2223
  const delToken = this._getKeywordToken(11 /* KeywordType.Del */);
2224
2224
  const exprListResult = this._parseExpressionList(/* allowStar */ true);
2225
2225
  if (!exprListResult.parseError && exprListResult.list.length === 0) {
2226
- this._addError(localize_1.Localizer.Diagnostic.expectedDelExpr(), this._peekToken());
2226
+ this._addSyntaxError(localize_1.LocMessage.expectedDelExpr(), this._peekToken());
2227
2227
  }
2228
2228
  const delNode = parseNodes_1.DelNode.create(delToken);
2229
2229
  delNode.expressions = exprListResult.list;
@@ -2242,7 +2242,7 @@ class Parser {
2242
2242
  const nextToken = this._peekToken();
2243
2243
  if (this._consumeTokenIfKeyword(18 /* KeywordType.From */)) {
2244
2244
  if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_3) {
2245
- this._addError(localize_1.Localizer.Diagnostic.yieldFromIllegal(), nextToken);
2245
+ this._addSyntaxError(localize_1.LocMessage.yieldFromIllegal(), nextToken);
2246
2246
  }
2247
2247
  return parseNodes_1.YieldFromNode.create(yieldToken, this._parseTestExpression(/* allowAssignmentExpression */ false));
2248
2248
  }
@@ -2250,7 +2250,7 @@ class Parser {
2250
2250
  if (!this._isNextTokenNeverExpression()) {
2251
2251
  exprList = this._parseTestOrStarListAsExpression(
2252
2252
  /* allowAssignmentExpression */ false,
2253
- /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedYieldExpr());
2253
+ /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedYieldExpr());
2254
2254
  this._reportConditionalErrorForStarTupleElement(exprList);
2255
2255
  }
2256
2256
  return parseNodes_1.YieldNode.create(yieldToken, exprList);
@@ -2271,7 +2271,7 @@ class Parser {
2271
2271
  const text = this._fileContents.substr(invalidToken.start, invalidToken.length);
2272
2272
  const firstCharCode = text.charCodeAt(0);
2273
2273
  // Remove any non-printable characters.
2274
- this._addError(localize_1.Localizer.Diagnostic.invalidTokenChars().format({ text: `\\u${firstCharCode.toString(16)}` }), invalidToken);
2274
+ this._addSyntaxError(localize_1.LocMessage.invalidTokenChars().format({ text: `\\u${firstCharCode.toString(16)}` }), invalidToken);
2275
2275
  this._consumeTokensUntilType([2 /* TokenType.NewLine */]);
2276
2276
  break;
2277
2277
  }
@@ -2294,7 +2294,7 @@ class Parser {
2294
2294
  }
2295
2295
  }
2296
2296
  if (!this._consumeTokenIfType(2 /* TokenType.NewLine */)) {
2297
- this._addError(localize_1.Localizer.Diagnostic.expectedNewlineOrSemicolon(), this._peekToken());
2297
+ this._addSyntaxError(localize_1.LocMessage.expectedNewlineOrSemicolon(), this._peekToken());
2298
2298
  }
2299
2299
  return statement;
2300
2300
  }
@@ -2356,7 +2356,7 @@ class Parser {
2356
2356
  // that's surrounded by parens.
2357
2357
  if (exprListResult.list.length === 1 && !exprListResult.trailingComma) {
2358
2358
  if (exprListResult.list[0].nodeType === 56 /* ParseNodeType.Unpack */) {
2359
- this._addError(localize_1.Localizer.Diagnostic.unpackOperatorNotAllowed(), exprListResult.list[0]);
2359
+ this._addSyntaxError(localize_1.LocMessage.unpackOperatorNotAllowed(), exprListResult.list[0]);
2360
2360
  }
2361
2361
  return exprListResult.list[0];
2362
2362
  }
@@ -2375,7 +2375,7 @@ class Parser {
2375
2375
  }
2376
2376
  _parseExpressionListAsPossibleTuple(errorCategory, getErrorString, errorToken) {
2377
2377
  if (this._isNextTokenNeverExpression()) {
2378
- this._addError(getErrorString(), errorToken);
2378
+ this._addSyntaxError(getErrorString(), errorToken);
2379
2379
  return parseNodes_1.ErrorNode.create(errorToken, errorCategory);
2380
2380
  }
2381
2381
  const exprListResult = this._parseExpressionList(/* allowStar */ true);
@@ -2418,7 +2418,7 @@ class Parser {
2418
2418
  for (const expr of exprListResult.list) {
2419
2419
  if (expr.nodeType === 56 /* ParseNodeType.Unpack */) {
2420
2420
  if (sawStar) {
2421
- this._addError(localize_1.Localizer.Diagnostic.duplicateUnpack(), expr);
2421
+ this._addSyntaxError(localize_1.LocMessage.duplicateUnpack(), expr);
2422
2422
  break;
2423
2423
  }
2424
2424
  sawStar = true;
@@ -2461,7 +2461,7 @@ class Parser {
2461
2461
  return testExpr;
2462
2462
  }
2463
2463
  if (!this._consumeTokenIfKeyword(13 /* KeywordType.Else */)) {
2464
- return parseNodes_1.TernaryNode.create(ifExpr, testExpr, this._handleExpressionParseError(1 /* ErrorExpressionCategory.MissingElse */, localize_1.Localizer.Diagnostic.expectedElse()));
2464
+ return parseNodes_1.TernaryNode.create(ifExpr, testExpr, this._handleExpressionParseError(1 /* ErrorExpressionCategory.MissingElse */, localize_1.LocMessage.expectedElse()));
2465
2465
  }
2466
2466
  const elseExpr = this._parseTestExpression(/* allowAssignmentExpression */ true);
2467
2467
  return parseNodes_1.TernaryNode.create(ifExpr, testExpr, elseExpr);
@@ -2480,10 +2480,10 @@ class Parser {
2480
2480
  return leftExpr;
2481
2481
  }
2482
2482
  if (!this._assignmentExpressionsAllowed || disallowAssignmentExpression) {
2483
- this._addError(localize_1.Localizer.Diagnostic.walrusNotAllowed(), walrusToken);
2483
+ this._addSyntaxError(localize_1.LocMessage.walrusNotAllowed(), walrusToken);
2484
2484
  }
2485
2485
  if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_8) {
2486
- this._addError(localize_1.Localizer.Diagnostic.walrusIllegal(), walrusToken);
2486
+ this._addSyntaxError(localize_1.LocMessage.walrusIllegal(), walrusToken);
2487
2487
  }
2488
2488
  const rightExpr = this._parseTestExpression(/* allowAssignmentExpression */ false);
2489
2489
  return parseNodes_1.AssignmentExpressionNode.create(leftExpr, rightExpr);
@@ -2542,7 +2542,7 @@ class Parser {
2542
2542
  if (tokenizer_1.Tokenizer.isOperatorComparison(this._peekOperatorType())) {
2543
2543
  comparisonOperator = this._peekOperatorType();
2544
2544
  if (comparisonOperator === 19 /* OperatorType.LessOrGreaterThan */) {
2545
- this._addError(localize_1.Localizer.Diagnostic.operatorLessOrGreaterDeprecated(), peekToken);
2545
+ this._addSyntaxError(localize_1.LocMessage.operatorLessOrGreaterDeprecated(), peekToken);
2546
2546
  comparisonOperator = 28 /* OperatorType.NotEquals */;
2547
2547
  }
2548
2548
  this._getNextToken();
@@ -2731,7 +2731,7 @@ class Parser {
2731
2731
  if (this._peekKeywordType() === 4 /* KeywordType.Await */) {
2732
2732
  awaitToken = this._getKeywordToken(4 /* KeywordType.Await */);
2733
2733
  if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_5) {
2734
- this._addError(localize_1.Localizer.Diagnostic.awaitIllegal(), awaitToken);
2734
+ this._addSyntaxError(localize_1.LocMessage.awaitIllegal(), awaitToken);
2735
2735
  }
2736
2736
  }
2737
2737
  let atomExpression = this._parseAtom();
@@ -2753,7 +2753,7 @@ class Parser {
2753
2753
  argListResult.args.forEach((arg) => {
2754
2754
  if (arg.valueExpression.nodeType === 32 /* ParseNodeType.ListComprehension */) {
2755
2755
  if (!arg.valueExpression.isParenthesized) {
2756
- this._addError(localize_1.Localizer.Diagnostic.generatorNotParenthesized(), arg.valueExpression);
2756
+ this._addSyntaxError(localize_1.LocMessage.generatorNotParenthesized(), arg.valueExpression);
2757
2757
  }
2758
2758
  }
2759
2759
  });
@@ -2761,7 +2761,7 @@ class Parser {
2761
2761
  const nextToken = this._peekToken();
2762
2762
  let isArgListTerminated = false;
2763
2763
  if (!this._consumeTokenIfType(14 /* TokenType.CloseParenthesis */)) {
2764
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), startOfTrailerToken);
2764
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseParen(), startOfTrailerToken);
2765
2765
  // Consume the remainder of tokens on the line for error
2766
2766
  // recovery.
2767
2767
  this._consumeTokensUntilType([2 /* TokenType.NewLine */]);
@@ -2777,7 +2777,7 @@ class Parser {
2777
2777
  atomExpression = callNode;
2778
2778
  if (atomExpression.maxChildDepth !== undefined && atomExpression.maxChildDepth >= maxChildNodeDepth) {
2779
2779
  atomExpression = parseNodes_1.ErrorNode.create(atomExpression, 14 /* ErrorExpressionCategory.MaxDepthExceeded */);
2780
- this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), atomExpression);
2780
+ this._addSyntaxError(localize_1.LocMessage.maxParseDepthExceeded(), atomExpression);
2781
2781
  }
2782
2782
  // If the argument list wasn't terminated, break out of the loop
2783
2783
  if (!isArgListTerminated) {
@@ -2805,24 +2805,24 @@ class Parser {
2805
2805
  if (!this._consumeTokenIfType(16 /* TokenType.CloseBracket */)) {
2806
2806
  // Handle the error case, but don't use the error node in this
2807
2807
  // case because it creates problems for the completion provider.
2808
- this._handleExpressionParseError(6 /* ErrorExpressionCategory.MissingIndexCloseBracket */, localize_1.Localizer.Diagnostic.expectedCloseBracket(), startOfTrailerToken, indexNode);
2808
+ this._handleExpressionParseError(6 /* ErrorExpressionCategory.MissingIndexCloseBracket */, localize_1.LocMessage.expectedCloseBracket(), startOfTrailerToken, indexNode);
2809
2809
  }
2810
2810
  atomExpression = indexNode;
2811
2811
  if (atomExpression.maxChildDepth !== undefined && atomExpression.maxChildDepth >= maxChildNodeDepth) {
2812
2812
  atomExpression = parseNodes_1.ErrorNode.create(atomExpression, 14 /* ErrorExpressionCategory.MaxDepthExceeded */);
2813
- this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), atomExpression);
2813
+ this._addSyntaxError(localize_1.LocMessage.maxParseDepthExceeded(), atomExpression);
2814
2814
  }
2815
2815
  }
2816
2816
  else if (this._consumeTokenIfType(20 /* TokenType.Dot */)) {
2817
2817
  // Is it a member access?
2818
2818
  const memberName = this._getTokenIfIdentifier();
2819
2819
  if (!memberName) {
2820
- return this._handleExpressionParseError(7 /* ErrorExpressionCategory.MissingMemberAccessName */, localize_1.Localizer.Diagnostic.expectedMemberName(), startOfTrailerToken, atomExpression, [8 /* TokenType.Keyword */]);
2820
+ return this._handleExpressionParseError(7 /* ErrorExpressionCategory.MissingMemberAccessName */, localize_1.LocMessage.expectedMemberName(), startOfTrailerToken, atomExpression, [8 /* TokenType.Keyword */]);
2821
2821
  }
2822
2822
  atomExpression = parseNodes_1.MemberAccessNode.create(atomExpression, parseNodes_1.NameNode.create(memberName));
2823
2823
  if (atomExpression.maxChildDepth !== undefined && atomExpression.maxChildDepth >= maxChildNodeDepth) {
2824
2824
  atomExpression = parseNodes_1.ErrorNode.create(atomExpression, 14 /* ErrorExpressionCategory.MaxDepthExceeded */);
2825
- this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), atomExpression);
2825
+ this._addSyntaxError(localize_1.LocMessage.maxParseDepthExceeded(), atomExpression);
2826
2826
  }
2827
2827
  }
2828
2828
  else {
@@ -2863,7 +2863,7 @@ class Parser {
2863
2863
  nameIdentifier = nameExpr.token;
2864
2864
  }
2865
2865
  else {
2866
- this._addError(localize_1.Localizer.Diagnostic.expectedParamName(), nameExpr);
2866
+ this._addSyntaxError(localize_1.LocMessage.expectedParamName(), nameExpr);
2867
2867
  }
2868
2868
  }
2869
2869
  else if (valueExpr.nodeType === 38 /* ParseNodeType.Name */ &&
@@ -2872,7 +2872,7 @@ class Parser {
2872
2872
  valueExpr = this._parseTestExpression(/* allowAssignmentExpression */ true);
2873
2873
  // Python 3.10 and newer allow assignment expressions to be used inside of a subscript.
2874
2874
  if (!this._parseOptions.isStubFile && this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_10) {
2875
- this._addError(localize_1.Localizer.Diagnostic.assignmentExprInSubscript(), valueExpr);
2875
+ this._addSyntaxError(localize_1.LocMessage.assignmentExprInSubscript(), valueExpr);
2876
2876
  }
2877
2877
  }
2878
2878
  }
@@ -2885,21 +2885,21 @@ class Parser {
2885
2885
  sawKeywordArg = true;
2886
2886
  }
2887
2887
  else if (sawKeywordArg && argNode.argumentCategory === 0 /* ArgumentCategory.Simple */) {
2888
- this._addError(localize_1.Localizer.Diagnostic.positionArgAfterNamedArg(), argNode);
2888
+ this._addSyntaxError(localize_1.LocMessage.positionArgAfterNamedArg(), argNode);
2889
2889
  }
2890
2890
  argList.push(argNode);
2891
2891
  if (argNode.name) {
2892
- this._addError(localize_1.Localizer.Diagnostic.keywordSubscriptIllegal(), argNode.name);
2892
+ this._addSyntaxError(localize_1.LocMessage.keywordSubscriptIllegal(), argNode.name);
2893
2893
  }
2894
2894
  if (argType !== 0 /* ArgumentCategory.Simple */) {
2895
2895
  const unpackListAllowed = this._parseOptions.isStubFile ||
2896
2896
  this._isParsingQuotedText ||
2897
2897
  this._getLanguageVersion() >= pythonVersion_1.PythonVersion.V3_11;
2898
2898
  if (argType === 1 /* ArgumentCategory.UnpackedList */ && !unpackListAllowed) {
2899
- this._addError(localize_1.Localizer.Diagnostic.unpackedSubscriptIllegal(), argNode);
2899
+ this._addSyntaxError(localize_1.LocMessage.unpackedSubscriptIllegal(), argNode);
2900
2900
  }
2901
2901
  if (argType === 2 /* ArgumentCategory.UnpackedDictionary */) {
2902
- this._addError(localize_1.Localizer.Diagnostic.unpackedDictSubscriptIllegal(), argNode);
2902
+ this._addSyntaxError(localize_1.LocMessage.unpackedDictSubscriptIllegal(), argNode);
2903
2903
  }
2904
2904
  }
2905
2905
  if (!this._consumeTokenIfType(12 /* TokenType.Comma */)) {
@@ -2910,7 +2910,7 @@ class Parser {
2910
2910
  }
2911
2911
  // An empty subscript list is illegal.
2912
2912
  if (argList.length === 0) {
2913
- const errorNode = this._handleExpressionParseError(3 /* ErrorExpressionCategory.MissingIndexOrSlice */, localize_1.Localizer.Diagnostic.expectedSliceIndex(),
2913
+ const errorNode = this._handleExpressionParseError(3 /* ErrorExpressionCategory.MissingIndexOrSlice */, localize_1.LocMessage.expectedSliceIndex(),
2914
2914
  /* targetToken */ undefined,
2915
2915
  /* childNode */ undefined, [16 /* TokenType.CloseBracket */]);
2916
2916
  argList.push(parseNodes_1.ArgumentNode.create(this._peekToken(), errorNode, 0 /* ArgumentCategory.Simple */));
@@ -2987,7 +2987,7 @@ class Parser {
2987
2987
  sawKeywordArg = true;
2988
2988
  }
2989
2989
  else if (sawKeywordArg && arg.argumentCategory === 0 /* ArgumentCategory.Simple */) {
2990
- this._addError(localize_1.Localizer.Diagnostic.positionArgAfterNamedArg(), arg);
2990
+ this._addSyntaxError(localize_1.LocMessage.positionArgAfterNamedArg(), arg);
2991
2991
  }
2992
2992
  argList.push(arg);
2993
2993
  if (!this._consumeTokenIfType(12 /* TokenType.Comma */)) {
@@ -3020,7 +3020,7 @@ class Parser {
3020
3020
  nameIdentifier = nameExpr.token;
3021
3021
  }
3022
3022
  else {
3023
- this._addError(localize_1.Localizer.Diagnostic.expectedParamName(), nameExpr);
3023
+ this._addSyntaxError(localize_1.LocMessage.expectedParamName(), nameExpr);
3024
3024
  }
3025
3025
  }
3026
3026
  else {
@@ -3060,8 +3060,8 @@ class Parser {
3060
3060
  // Atoms with backticks are no longer allowed in Python 3.x, but they
3061
3061
  // were a thing in Python 2.x. We'll parse them to improve parse recovery
3062
3062
  // and emit an error.
3063
- this._addError(localize_1.Localizer.Diagnostic.backticksIllegal(), nextToken);
3064
- const expressionNode = this._parseTestListAsExpression(2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedExpr());
3063
+ this._addSyntaxError(localize_1.LocMessage.backticksIllegal(), nextToken);
3064
+ const expressionNode = this._parseTestListAsExpression(2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedExpr());
3065
3065
  this._consumeTokenIfType(22 /* TokenType.Backtick */);
3066
3066
  return expressionNode;
3067
3067
  }
@@ -3104,7 +3104,7 @@ class Parser {
3104
3104
  return parseNodes_1.NameNode.create(keywordAsIdentifier);
3105
3105
  }
3106
3106
  }
3107
- return this._handleExpressionParseError(2 /* ErrorExpressionCategory.MissingExpression */, localize_1.Localizer.Diagnostic.expectedExpr());
3107
+ return this._handleExpressionParseError(2 /* ErrorExpressionCategory.MissingExpression */, localize_1.LocMessage.expectedExpr());
3108
3108
  }
3109
3109
  // Allocates a dummy "error expression" and consumes the remainder
3110
3110
  // of the tokens on the line for error recovery. A partially-completed
@@ -3112,7 +3112,7 @@ class Parser {
3112
3112
  // what to do.
3113
3113
  _handleExpressionParseError(category, errorMsg, targetToken, childNode, additionalStopTokens) {
3114
3114
  var _a;
3115
- this._addError(errorMsg, targetToken !== null && targetToken !== void 0 ? targetToken : this._peekToken());
3115
+ this._addSyntaxError(errorMsg, targetToken !== null && targetToken !== void 0 ? targetToken : this._peekToken());
3116
3116
  const stopTokens = [2 /* TokenType.NewLine */];
3117
3117
  if (additionalStopTokens) {
3118
3118
  (0, collectionUtils_1.appendArray)(stopTokens, additionalStopTokens);
@@ -3132,7 +3132,7 @@ class Parser {
3132
3132
  const lambdaToken = this._getKeywordToken(24 /* KeywordType.Lambda */);
3133
3133
  const argList = this._parseVarArgsList(10 /* TokenType.Colon */, /* allowAnnotations */ false);
3134
3134
  if (!this._consumeTokenIfType(10 /* TokenType.Colon */)) {
3135
- this._addError(localize_1.Localizer.Diagnostic.expectedColon(), this._peekToken());
3135
+ this._addSyntaxError(localize_1.LocMessage.expectedColon(), this._peekToken());
3136
3136
  }
3137
3137
  let testExpr;
3138
3138
  if (allowConditional) {
@@ -3163,7 +3163,7 @@ class Parser {
3163
3163
  const yieldExpr = this._tryParseYieldExpression();
3164
3164
  if (yieldExpr) {
3165
3165
  if (this._peekTokenType() !== 14 /* TokenType.CloseParenthesis */) {
3166
- return this._handleExpressionParseError(8 /* ErrorExpressionCategory.MissingTupleCloseParen */, localize_1.Localizer.Diagnostic.expectedCloseParen(), startParen, yieldExpr);
3166
+ return this._handleExpressionParseError(8 /* ErrorExpressionCategory.MissingTupleCloseParen */, localize_1.LocMessage.expectedCloseParen(), startParen, yieldExpr);
3167
3167
  }
3168
3168
  else {
3169
3169
  (0, parseNodes_1.extendRange)(yieldExpr, this._getNextToken());
@@ -3174,7 +3174,7 @@ class Parser {
3174
3174
  const tupleOrExpression = this._makeExpressionOrTuple(exprListResult, /* enclosedInParens */ true);
3175
3175
  (0, parseNodes_1.extendRange)(tupleOrExpression, startParen);
3176
3176
  if (this._peekTokenType() !== 14 /* TokenType.CloseParenthesis */) {
3177
- return this._handleExpressionParseError(8 /* ErrorExpressionCategory.MissingTupleCloseParen */, localize_1.Localizer.Diagnostic.expectedCloseParen(), startParen, (_a = exprListResult.parseError) !== null && _a !== void 0 ? _a : tupleOrExpression);
3177
+ return this._handleExpressionParseError(8 /* ErrorExpressionCategory.MissingTupleCloseParen */, localize_1.LocMessage.expectedCloseParen(), startParen, (_a = exprListResult.parseError) !== null && _a !== void 0 ? _a : tupleOrExpression);
3178
3178
  }
3179
3179
  else {
3180
3180
  (0, parseNodes_1.extendRange)(tupleOrExpression, this._getNextToken());
@@ -3190,7 +3190,7 @@ class Parser {
3190
3190
  const exprListResult = this._parseTestListWithComprehension(/* isGenerator */ false);
3191
3191
  const closeBracket = this._peekToken();
3192
3192
  if (!this._consumeTokenIfType(16 /* TokenType.CloseBracket */)) {
3193
- return this._handleExpressionParseError(9 /* ErrorExpressionCategory.MissingListCloseBracket */, localize_1.Localizer.Diagnostic.expectedCloseBracket(), startBracket, (_a = exprListResult.parseError) !== null && _a !== void 0 ? _a : _createList());
3193
+ return this._handleExpressionParseError(9 /* ErrorExpressionCategory.MissingListCloseBracket */, localize_1.LocMessage.expectedCloseBracket(), startBracket, (_a = exprListResult.parseError) !== null && _a !== void 0 ? _a : _createList());
3194
3194
  }
3195
3195
  return _createList();
3196
3196
  function _createList() {
@@ -3257,10 +3257,10 @@ class Parser {
3257
3257
  }
3258
3258
  if (keyExpression && valueExpression) {
3259
3259
  if (keyExpression.nodeType === 56 /* ParseNodeType.Unpack */) {
3260
- this._addError(localize_1.Localizer.Diagnostic.unpackInDict(), keyExpression);
3260
+ this._addSyntaxError(localize_1.LocMessage.unpackInDict(), keyExpression);
3261
3261
  }
3262
3262
  if (isSet) {
3263
- this._addError(localize_1.Localizer.Diagnostic.keyValueInSet(), valueExpression);
3263
+ this._addSyntaxError(localize_1.LocMessage.keyValueInSet(), valueExpression);
3264
3264
  }
3265
3265
  else {
3266
3266
  const keyEntryNode = parseNodes_1.DictionaryKeyEntryNode.create(keyExpression, valueExpression);
@@ -3270,7 +3270,7 @@ class Parser {
3270
3270
  dictEntry = listComp;
3271
3271
  sawListComprehension = true;
3272
3272
  if (!isFirstEntry) {
3273
- this._addError(localize_1.Localizer.Diagnostic.comprehensionInDict(), dictEntry);
3273
+ this._addSyntaxError(localize_1.LocMessage.comprehensionInDict(), dictEntry);
3274
3274
  }
3275
3275
  }
3276
3276
  dictionaryEntries.push(dictEntry);
@@ -3279,7 +3279,7 @@ class Parser {
3279
3279
  }
3280
3280
  else if (doubleStarExpression) {
3281
3281
  if (isSet) {
3282
- this._addError(localize_1.Localizer.Diagnostic.unpackInSet(), doubleStarExpression);
3282
+ this._addSyntaxError(localize_1.LocMessage.unpackInSet(), doubleStarExpression);
3283
3283
  }
3284
3284
  else {
3285
3285
  const listEntryNode = parseNodes_1.DictionaryExpandEntryNode.create(doubleStarExpression);
@@ -3290,7 +3290,7 @@ class Parser {
3290
3290
  expandEntryNode = listComp;
3291
3291
  sawListComprehension = true;
3292
3292
  if (!isFirstEntry) {
3293
- this._addError(localize_1.Localizer.Diagnostic.comprehensionInDict(), doubleStarExpression);
3293
+ this._addSyntaxError(localize_1.LocMessage.comprehensionInDict(), doubleStarExpression);
3294
3294
  }
3295
3295
  }
3296
3296
  dictionaryEntries.push(expandEntryNode);
@@ -3304,7 +3304,7 @@ class Parser {
3304
3304
  const missingValueErrorNode = parseNodes_1.ErrorNode.create(this._peekToken(), 13 /* ErrorExpressionCategory.MissingDictValue */);
3305
3305
  const keyEntryNode = parseNodes_1.DictionaryKeyEntryNode.create(keyExpression, missingValueErrorNode);
3306
3306
  dictionaryEntries.push(keyEntryNode);
3307
- this._addError(localize_1.Localizer.Diagnostic.dictKeyValuePairs(), keyExpression);
3307
+ this._addSyntaxError(localize_1.LocMessage.dictKeyValuePairs(), keyExpression);
3308
3308
  }
3309
3309
  else {
3310
3310
  const listComp = this._tryParseListComprehension(keyExpression, /* isGenerator */ false);
@@ -3312,7 +3312,7 @@ class Parser {
3312
3312
  keyExpression = listComp;
3313
3313
  sawListComprehension = true;
3314
3314
  if (!isFirstEntry) {
3315
- this._addError(localize_1.Localizer.Diagnostic.comprehensionInSet(), keyExpression);
3315
+ this._addSyntaxError(localize_1.LocMessage.comprehensionInSet(), keyExpression);
3316
3316
  }
3317
3317
  }
3318
3318
  setEntries.push(keyExpression);
@@ -3332,7 +3332,7 @@ class Parser {
3332
3332
  }
3333
3333
  let closeCurlyBrace = this._peekToken();
3334
3334
  if (!this._consumeTokenIfType(18 /* TokenType.CloseCurlyBrace */)) {
3335
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseBrace(), startBrace);
3335
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseBrace(), startBrace);
3336
3336
  closeCurlyBrace = undefined;
3337
3337
  }
3338
3338
  if (isSet) {
@@ -3402,7 +3402,7 @@ class Parser {
3402
3402
  var _a, _b;
3403
3403
  let leftExpr = this._parseTestOrStarListAsExpression(
3404
3404
  /* allowAssignmentExpression */ false,
3405
- /* allowMultipleUnpack */ false, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedExpr());
3405
+ /* allowMultipleUnpack */ false, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedExpr());
3406
3406
  let annotationExpr;
3407
3407
  if (leftExpr.nodeType === 0 /* ParseNodeType.Error */) {
3408
3408
  return leftExpr;
@@ -3412,7 +3412,7 @@ class Parser {
3412
3412
  annotationExpr = this._parseTypeAnnotation();
3413
3413
  leftExpr = parseNodes_1.TypeAnnotationNode.create(leftExpr, annotationExpr);
3414
3414
  if (!this._parseOptions.isStubFile && this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_6) {
3415
- this._addError(localize_1.Localizer.Diagnostic.varAnnotationIllegal(), annotationExpr);
3415
+ this._addSyntaxError(localize_1.LocMessage.varAnnotationIllegal(), annotationExpr);
3416
3416
  }
3417
3417
  if (!this._consumeTokenIfOperator(2 /* OperatorType.Assign */)) {
3418
3418
  return leftExpr;
@@ -3428,7 +3428,7 @@ class Parser {
3428
3428
  }
3429
3429
  const rightExpr = (_a = this._tryParseYieldExpression()) !== null && _a !== void 0 ? _a : this._parseTestOrStarListAsExpression(
3430
3430
  /* allowAssignmentExpression */ false,
3431
- /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedAssignRightHandExpr());
3431
+ /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedAssignRightHandExpr());
3432
3432
  this._isParsingTypeAnnotation = wasParsingTypeAnnotation;
3433
3433
  return parseNodes_1.AssignmentNode.create(leftExpr, rightExpr);
3434
3434
  }
@@ -3438,7 +3438,7 @@ class Parser {
3438
3438
  }
3439
3439
  if (tokenizer_1.Tokenizer.isOperatorAssignment(this._peekOperatorType())) {
3440
3440
  const operatorToken = this._getNextToken();
3441
- const rightExpr = (_b = this._tryParseYieldExpression()) !== null && _b !== void 0 ? _b : this._parseTestListAsExpression(2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedBinaryRightHandExpr());
3441
+ const rightExpr = (_b = this._tryParseYieldExpression()) !== null && _b !== void 0 ? _b : this._parseTestListAsExpression(2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedBinaryRightHandExpr());
3442
3442
  // Make a shallow copy of the dest expression but give it a new ID.
3443
3443
  const destExpr = Object.assign({}, leftExpr);
3444
3444
  destExpr.id = (0, parseNodes_1.getNextNodeId)();
@@ -3455,7 +3455,7 @@ class Parser {
3455
3455
  rightExpr =
3456
3456
  (_a = this._tryParseYieldExpression()) !== null && _a !== void 0 ? _a : this._parseTestOrStarListAsExpression(
3457
3457
  /* allowAssignmentExpression */ false,
3458
- /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedAssignRightHandExpr());
3458
+ /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedAssignRightHandExpr());
3459
3459
  if (rightExpr.nodeType === 0 /* ParseNodeType.Error */) {
3460
3460
  break;
3461
3461
  }
@@ -3494,7 +3494,7 @@ class Parser {
3494
3494
  _parseFunctionTypeAnnotation() {
3495
3495
  const openParenToken = this._peekToken();
3496
3496
  if (!this._consumeTokenIfType(13 /* TokenType.OpenParenthesis */)) {
3497
- this._addError(localize_1.Localizer.Diagnostic.expectedOpenParen(), this._peekToken());
3497
+ this._addSyntaxError(localize_1.LocMessage.expectedOpenParen(), this._peekToken());
3498
3498
  return undefined;
3499
3499
  }
3500
3500
  let paramAnnotations = [];
@@ -3516,11 +3516,11 @@ class Parser {
3516
3516
  }
3517
3517
  }
3518
3518
  if (!this._consumeTokenIfType(14 /* TokenType.CloseParenthesis */)) {
3519
- this._addError(localize_1.Localizer.Diagnostic.expectedCloseParen(), openParenToken);
3519
+ this._addSyntaxError(localize_1.LocMessage.expectedCloseParen(), openParenToken);
3520
3520
  this._consumeTokensUntilType([10 /* TokenType.Colon */]);
3521
3521
  }
3522
3522
  if (!this._consumeTokenIfType(21 /* TokenType.Arrow */)) {
3523
- this._addError(localize_1.Localizer.Diagnostic.expectedArrow(), this._peekToken());
3523
+ this._addSyntaxError(localize_1.LocMessage.expectedArrow(), this._peekToken());
3524
3524
  return undefined;
3525
3525
  }
3526
3526
  const returnType = this._parseTypeAnnotation();
@@ -3543,7 +3543,7 @@ class Parser {
3543
3543
  !this._parseOptions.isStubFile &&
3544
3544
  !this._isParsingQuotedText &&
3545
3545
  this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_11) {
3546
- this._addError(localize_1.Localizer.Diagnostic.unpackedSubscriptIllegal(), startToken);
3546
+ this._addSyntaxError(localize_1.LocMessage.unpackedSubscriptIllegal(), startToken);
3547
3547
  }
3548
3548
  let result = this._parseTestExpression(/* allowAssignmentExpression */ false);
3549
3549
  if (isUnpack) {
@@ -3554,20 +3554,20 @@ class Parser {
3554
3554
  }
3555
3555
  _reportStringTokenErrors(stringToken, unescapedResult) {
3556
3556
  if (stringToken.flags & 65536 /* StringTokenFlags.Unterminated */) {
3557
- this._addError(localize_1.Localizer.Diagnostic.stringUnterminated(), stringToken);
3557
+ this._addSyntaxError(localize_1.LocMessage.stringUnterminated(), stringToken);
3558
3558
  }
3559
3559
  if (unescapedResult === null || unescapedResult === void 0 ? void 0 : unescapedResult.nonAsciiInBytes) {
3560
- this._addError(localize_1.Localizer.Diagnostic.stringNonAsciiBytes(), stringToken);
3560
+ this._addSyntaxError(localize_1.LocMessage.stringNonAsciiBytes(), stringToken);
3561
3561
  }
3562
3562
  if (stringToken.flags & 64 /* StringTokenFlags.Format */) {
3563
3563
  if (this._getLanguageVersion() < pythonVersion_1.PythonVersion.V3_6) {
3564
- this._addError(localize_1.Localizer.Diagnostic.formatStringIllegal(), stringToken);
3564
+ this._addSyntaxError(localize_1.LocMessage.formatStringIllegal(), stringToken);
3565
3565
  }
3566
3566
  if (stringToken.flags & 32 /* StringTokenFlags.Bytes */) {
3567
- this._addError(localize_1.Localizer.Diagnostic.formatStringBytes(), stringToken);
3567
+ this._addSyntaxError(localize_1.LocMessage.formatStringBytes(), stringToken);
3568
3568
  }
3569
3569
  if (stringToken.flags & 16 /* StringTokenFlags.Unicode */) {
3570
- this._addError(localize_1.Localizer.Diagnostic.formatStringUnicode(), stringToken);
3570
+ this._addSyntaxError(localize_1.LocMessage.formatStringUnicode(), stringToken);
3571
3571
  }
3572
3572
  }
3573
3573
  }
@@ -3615,7 +3615,7 @@ class Parser {
3615
3615
  const parseResults = parser.parseTextExpression(this._fileContents, stringToken.start, stringToken.length, this._parseOptions, 1 /* ParseTextMode.VariableAnnotation */,
3616
3616
  /* initialParenDepth */ undefined, this._typingSymbolAliases);
3617
3617
  parseResults.diagnostics.forEach((diag) => {
3618
- this._addError(diag.message, stringListNode);
3618
+ this._addSyntaxError(diag.message, stringListNode);
3619
3619
  });
3620
3620
  if (!parseResults.parseTree) {
3621
3621
  return undefined;
@@ -3630,7 +3630,7 @@ class Parser {
3630
3630
  const parseResults = parser.parseTextExpression(this._fileContents, stringToken.start, stringToken.length, this._parseOptions, 2 /* ParseTextMode.FunctionAnnotation */,
3631
3631
  /* initialParenDepth */ undefined, this._typingSymbolAliases);
3632
3632
  parseResults.diagnostics.forEach((diag) => {
3633
- this._addError(diag.message, stringListNode);
3633
+ this._addSyntaxError(diag.message, stringListNode);
3634
3634
  });
3635
3635
  if (!parseResults.parseTree || parseResults.parseTree.nodeType !== 62 /* ParseNodeType.FunctionAnnotation */) {
3636
3636
  return;
@@ -3648,7 +3648,7 @@ class Parser {
3648
3648
  // Consume the expression.
3649
3649
  const expr = (_a = this._tryParseYieldExpression()) !== null && _a !== void 0 ? _a : this._parseTestOrStarListAsExpression(
3650
3650
  /* allowAssignmentExpression */ true,
3651
- /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.Localizer.Diagnostic.expectedExpr());
3651
+ /* allowMultipleUnpack */ true, 2 /* ErrorExpressionCategory.MissingExpression */, () => localize_1.LocMessage.expectedExpr());
3652
3652
  fieldExpressions.push(expr);
3653
3653
  if (expr.nodeType === 0 /* ParseNodeType.Error */) {
3654
3654
  return false;
@@ -3659,7 +3659,7 @@ class Parser {
3659
3659
  nextToken.operatorType === 2 /* OperatorType.Assign */) {
3660
3660
  // This feature requires Python 3.8 or newer.
3661
3661
  if (this._parseOptions.pythonVersion < pythonVersion_1.PythonVersion.V3_8) {
3662
- this._addError(localize_1.Localizer.Diagnostic.formatStringDebuggingIllegal(), nextToken);
3662
+ this._addSyntaxError(localize_1.LocMessage.formatStringDebuggingIllegal(), nextToken);
3663
3663
  }
3664
3664
  this._getNextToken();
3665
3665
  nextToken = this._peekToken();
@@ -3669,7 +3669,7 @@ class Parser {
3669
3669
  this._getNextToken();
3670
3670
  nextToken = this._peekToken();
3671
3671
  if (nextToken.type !== 7 /* TokenType.Identifier */) {
3672
- this._addError(localize_1.Localizer.Diagnostic.formatStringExpectedConversion(), nextToken);
3672
+ this._addSyntaxError(localize_1.LocMessage.formatStringExpectedConversion(), nextToken);
3673
3673
  }
3674
3674
  else {
3675
3675
  this._getNextToken();
@@ -3682,7 +3682,7 @@ class Parser {
3682
3682
  nextToken = this._peekToken();
3683
3683
  }
3684
3684
  if (nextToken.type !== 18 /* TokenType.CloseCurlyBrace */) {
3685
- this._addError(localize_1.Localizer.Diagnostic.formatStringUnterminated(), nextToken);
3685
+ this._addSyntaxError(localize_1.LocMessage.formatStringUnterminated(), nextToken);
3686
3686
  return false;
3687
3687
  }
3688
3688
  else {
@@ -3705,7 +3705,7 @@ class Parser {
3705
3705
  // The Python interpreter reports an error at the point where the
3706
3706
  // nesting level exceeds 1. Don't report the error again for deeper nestings.
3707
3707
  if (nestingDepth === 2) {
3708
- this._addError(localize_1.Localizer.Diagnostic.formatStringNestedFormatSpecifier(), nextToken);
3708
+ this._addSyntaxError(localize_1.LocMessage.formatStringNestedFormatSpecifier(), nextToken);
3709
3709
  }
3710
3710
  this._parseFStringReplacementField(fieldExpressions, middleTokens, formatExpressions, nestingDepth + 1);
3711
3711
  continue;
@@ -3724,7 +3724,7 @@ class Parser {
3724
3724
  if (nextToken.type === 26 /* TokenType.FStringEnd */) {
3725
3725
  endToken = nextToken;
3726
3726
  if ((endToken.flags & 65536 /* StringTokenFlags.Unterminated */) !== 0) {
3727
- this._addError(localize_1.Localizer.Diagnostic.stringUnterminated(), startToken);
3727
+ this._addSyntaxError(localize_1.LocMessage.stringUnterminated(), startToken);
3728
3728
  }
3729
3729
  this._getNextToken();
3730
3730
  break;
@@ -3750,9 +3750,9 @@ class Parser {
3750
3750
  if (this._consumeTokensUntilType([26 /* TokenType.FStringEnd */])) {
3751
3751
  this._getNextToken();
3752
3752
  }
3753
- this._addError(nextToken.type === 18 /* TokenType.CloseCurlyBrace */
3754
- ? localize_1.Localizer.Diagnostic.formatStringBrace()
3755
- : localize_1.Localizer.Diagnostic.stringUnterminated(), nextToken);
3753
+ this._addSyntaxError(nextToken.type === 18 /* TokenType.CloseCurlyBrace */
3754
+ ? localize_1.LocMessage.formatStringBrace()
3755
+ : localize_1.LocMessage.stringUnterminated(), nextToken);
3756
3756
  break;
3757
3757
  }
3758
3758
  this._reportStringTokenErrors(startToken);
@@ -3764,11 +3764,11 @@ class Parser {
3764
3764
  // or type evaluator.
3765
3765
  if (leftExpression.maxChildDepth !== undefined && leftExpression.maxChildDepth >= maxChildNodeDepth) {
3766
3766
  leftExpression = parseNodes_1.ErrorNode.create(leftExpression, 14 /* ErrorExpressionCategory.MaxDepthExceeded */);
3767
- this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), leftExpression);
3767
+ this._addSyntaxError(localize_1.LocMessage.maxParseDepthExceeded(), leftExpression);
3768
3768
  }
3769
3769
  if (rightExpression.maxChildDepth !== undefined && rightExpression.maxChildDepth >= maxChildNodeDepth) {
3770
3770
  rightExpression = parseNodes_1.ErrorNode.create(rightExpression, 14 /* ErrorExpressionCategory.MaxDepthExceeded */);
3771
- this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), rightExpression);
3771
+ this._addSyntaxError(localize_1.LocMessage.maxParseDepthExceeded(), rightExpression);
3772
3772
  }
3773
3773
  return parseNodes_1.BinaryOperationNode.create(leftExpression, rightExpression, operatorToken, operator);
3774
3774
  }
@@ -3778,7 +3778,7 @@ class Parser {
3778
3778
  // or type evaluator.
3779
3779
  if (expression.maxChildDepth !== undefined && expression.maxChildDepth >= maxChildNodeDepth) {
3780
3780
  expression = parseNodes_1.ErrorNode.create(expression, 14 /* ErrorExpressionCategory.MaxDepthExceeded */);
3781
- this._addError(localize_1.Localizer.Diagnostic.maxParseDepthExceeded(), expression);
3781
+ this._addSyntaxError(localize_1.LocMessage.maxParseDepthExceeded(), expression);
3782
3782
  }
3783
3783
  return parseNodes_1.UnaryOperationNode.create(operatorToken, expression, operator);
3784
3784
  }
@@ -3803,12 +3803,12 @@ class Parser {
3803
3803
  // parse errors that span strings.
3804
3804
  if (stringNode.strings.length > 1) {
3805
3805
  if (this._isParsingQuotedText) {
3806
- this._addError(localize_1.Localizer.Diagnostic.annotationSpansStrings(), stringNode);
3806
+ this._addSyntaxError(localize_1.LocMessage.annotationSpansStrings(), stringNode);
3807
3807
  }
3808
3808
  }
3809
3809
  else if (stringNode.strings[0].nodeType === 27 /* ParseNodeType.FormatString */) {
3810
3810
  if (this._isParsingQuotedText) {
3811
- this._addError(localize_1.Localizer.Diagnostic.annotationFormatString(), stringNode);
3811
+ this._addSyntaxError(localize_1.LocMessage.annotationFormatString(), stringNode);
3812
3812
  }
3813
3813
  }
3814
3814
  else {
@@ -3821,7 +3821,7 @@ class Parser {
3821
3821
  // error ranges back to the escaped text.
3822
3822
  if (unescapedString.length !== stringToken.length - prefixLength - stringToken.quoteMarkLength) {
3823
3823
  if (this._isParsingQuotedText) {
3824
- this._addError(localize_1.Localizer.Diagnostic.annotationStringEscape(), stringNode);
3824
+ this._addSyntaxError(localize_1.LocMessage.annotationStringEscape(), stringNode);
3825
3825
  }
3826
3826
  }
3827
3827
  else {
@@ -3830,7 +3830,7 @@ class Parser {
3830
3830
  if (parseResults.diagnostics.length === 0 ||
3831
3831
  this._parseOptions.reportErrorsForParsedStringContents) {
3832
3832
  parseResults.diagnostics.forEach((diag) => {
3833
- this._addError(diag.message, stringNode);
3833
+ this._addSyntaxError(diag.message, stringNode);
3834
3834
  });
3835
3835
  if (parseResults.parseTree) {
3836
3836
  (0, debug_1.assert)(parseResults.parseTree.nodeType !== 62 /* ParseNodeType.FunctionAnnotation */);
@@ -3858,7 +3858,7 @@ class Parser {
3858
3858
  }
3859
3859
  for (const expr of possibleTupleExpr.expressions) {
3860
3860
  if (expr.nodeType === 56 /* ParseNodeType.Unpack */) {
3861
- this._addError(localize_1.Localizer.Diagnostic.unpackTuplesIllegal(), expr);
3861
+ this._addSyntaxError(localize_1.LocMessage.unpackTuplesIllegal(), expr);
3862
3862
  return;
3863
3863
  }
3864
3864
  }
@@ -3965,7 +3965,7 @@ class Parser {
3965
3965
  // If the next token is invalid, treat it as an identifier.
3966
3966
  if (nextToken.type === 0 /* TokenType.Invalid */) {
3967
3967
  this._getNextToken();
3968
- this._addError(localize_1.Localizer.Diagnostic.invalidIdentifierChar(), nextToken);
3968
+ this._addSyntaxError(localize_1.LocMessage.invalidIdentifierChar(), nextToken);
3969
3969
  return tokenizerTypes_1.IdentifierToken.create(nextToken.start, nextToken.length, '', nextToken.comments);
3970
3970
  }
3971
3971
  // If this is a "soft keyword", it can be converted into an identifier.
@@ -4036,7 +4036,7 @@ class Parser {
4036
4036
  this._areErrorsSuppressed = errorsWereSuppressed;
4037
4037
  }
4038
4038
  }
4039
- _addError(message, range) {
4039
+ _addSyntaxError(message, range) {
4040
4040
  (0, debug_1.assert)(range !== undefined);
4041
4041
  if (!this._areErrorsSuppressed) {
4042
4042
  this._diagSink.addError(message, (0, positionUtils_1.convertOffsetsToRange)(range.start, range.start + range.length, this._tokenizerOutput.lines));