@zzzen/pyright-internal 1.2.0-dev.20240218 → 1.2.0-dev.20240225

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 (86) hide show
  1. package/dist/analyzer/binder.js +1 -0
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.d.ts +1 -2
  4. package/dist/analyzer/checker.js +138 -49
  5. package/dist/analyzer/checker.js.map +1 -1
  6. package/dist/analyzer/dataClasses.js +6 -6
  7. package/dist/analyzer/dataClasses.js.map +1 -1
  8. package/dist/analyzer/decorators.js +6 -6
  9. package/dist/analyzer/decorators.js.map +1 -1
  10. package/dist/analyzer/enums.js +1 -1
  11. package/dist/analyzer/enums.js.map +1 -1
  12. package/dist/analyzer/importResolver.js +11 -3
  13. package/dist/analyzer/importResolver.js.map +1 -1
  14. package/dist/analyzer/importStatementUtils.js +2 -0
  15. package/dist/analyzer/importStatementUtils.js.map +1 -1
  16. package/dist/analyzer/namedTuples.js +1 -1
  17. package/dist/analyzer/namedTuples.js.map +1 -1
  18. package/dist/analyzer/parameterUtils.js +11 -1
  19. package/dist/analyzer/parameterUtils.js.map +1 -1
  20. package/dist/analyzer/patternMatching.js +3 -3
  21. package/dist/analyzer/patternMatching.js.map +1 -1
  22. package/dist/analyzer/properties.js +2 -2
  23. package/dist/analyzer/sourceFile.js +4 -4
  24. package/dist/analyzer/sourceFile.js.map +1 -1
  25. package/dist/analyzer/typeEvaluator.js +160 -98
  26. package/dist/analyzer/typeEvaluator.js.map +1 -1
  27. package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -0
  28. package/dist/analyzer/typeGuards.js +5 -5
  29. package/dist/analyzer/typeGuards.js.map +1 -1
  30. package/dist/analyzer/typePrinter.js +1 -1
  31. package/dist/analyzer/typePrinter.js.map +1 -1
  32. package/dist/analyzer/typeUtils.js +4 -3
  33. package/dist/analyzer/typeUtils.js.map +1 -1
  34. package/dist/analyzer/typedDicts.d.ts +6 -3
  35. package/dist/analyzer/typedDicts.js +292 -65
  36. package/dist/analyzer/typedDicts.js.map +1 -1
  37. package/dist/analyzer/types.d.ts +31 -23
  38. package/dist/analyzer/types.js +59 -44
  39. package/dist/analyzer/types.js.map +1 -1
  40. package/dist/commands/dumpFileDebugInfoCommand.js +18 -18
  41. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  42. package/dist/common/cancellationUtils.d.ts +4 -0
  43. package/dist/common/cancellationUtils.js +2 -1
  44. package/dist/common/cancellationUtils.js.map +1 -1
  45. package/dist/languageService/autoImporter.d.ts +1 -0
  46. package/dist/languageService/autoImporter.js +3 -1
  47. package/dist/languageService/autoImporter.js.map +1 -1
  48. package/dist/languageService/completionProvider.js +4 -4
  49. package/dist/languageService/completionProvider.js.map +1 -1
  50. package/dist/languageService/hoverProvider.js +1 -1
  51. package/dist/languageService/hoverProvider.js.map +1 -1
  52. package/dist/localization/localize.d.ts +30 -2
  53. package/dist/localization/localize.js +9 -2
  54. package/dist/localization/localize.js.map +1 -1
  55. package/dist/localization/package.nls.cs.json +6 -8
  56. package/dist/localization/package.nls.de.json +6 -8
  57. package/dist/localization/package.nls.en-us.json +18 -11
  58. package/dist/localization/package.nls.es.json +6 -8
  59. package/dist/localization/package.nls.fr.json +3 -5
  60. package/dist/localization/package.nls.it.json +6 -8
  61. package/dist/localization/package.nls.ja.json +7 -9
  62. package/dist/localization/package.nls.ko.json +6 -8
  63. package/dist/localization/package.nls.pl.json +6 -8
  64. package/dist/localization/package.nls.pt-br.json +3 -5
  65. package/dist/localization/package.nls.qps-ploc.json +0 -2
  66. package/dist/localization/package.nls.ru.json +3 -5
  67. package/dist/localization/package.nls.tr.json +6 -8
  68. package/dist/localization/package.nls.zh-cn.json +3 -5
  69. package/dist/localization/package.nls.zh-tw.json +6 -8
  70. package/dist/tests/checker.test.js +0 -4
  71. package/dist/tests/checker.test.js.map +1 -1
  72. package/dist/tests/harness/fourslash/testState.js +11 -0
  73. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  74. package/dist/tests/importStatementUtils.test.js +8 -0
  75. package/dist/tests/importStatementUtils.test.js.map +1 -1
  76. package/dist/tests/typeEvaluator1.test.js +12 -0
  77. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  78. package/dist/tests/typeEvaluator2.test.js +1 -1
  79. package/dist/tests/typeEvaluator3.test.js +4 -8
  80. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  81. package/dist/tests/typeEvaluator5.test.js +42 -0
  82. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  83. package/package.json +4 -4
  84. package/dist/analyzer/regions.d.ts +0 -11
  85. package/dist/analyzer/regions.js +0 -62
  86. package/dist/analyzer/regions.js.map +0 -1
@@ -62,7 +62,6 @@ const ParseTreeUtils = __importStar(require("./parseTreeUtils"));
62
62
  const parseTreeWalker_1 = require("./parseTreeWalker");
63
63
  const patternMatching_1 = require("./patternMatching");
64
64
  const protocols_1 = require("./protocols");
65
- const regions_1 = require("./regions");
66
65
  const scopeUtils_1 = require("./scopeUtils");
67
66
  const sourceFile_1 = require("./sourceFile");
68
67
  const sourceMapper_1 = require("./sourceMapper");
@@ -73,6 +72,7 @@ const typeEvaluator_1 = require("./typeEvaluator");
73
72
  const typeGuards_1 = require("./typeGuards");
74
73
  const typeUtils_1 = require("./typeUtils");
75
74
  const typeVarContext_1 = require("./typeVarContext");
75
+ const typedDicts_1 = require("./typedDicts");
76
76
  const types_1 = require("./types");
77
77
  // When enabled, this debug flag causes the code complexity of
78
78
  // functions to be emitted.
@@ -116,7 +116,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
116
116
  // defined in this module for things like unaccessed variables.
117
117
  this._validateSymbolTables();
118
118
  this._reportDuplicateImports();
119
- this._checkRegions();
120
119
  }
121
120
  walk(node) {
122
121
  if (!AnalyzerNodeInfo.isCodeUnreachable(node)) {
@@ -181,6 +180,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
181
180
  this._validateSlotsClassVarConflict(classTypeResult.classType);
182
181
  }
183
182
  this._validateBaseClassOverrides(classTypeResult.classType);
183
+ this._validateTypedDictOverrides(classTypeResult.classType);
184
184
  this._validateOverloadDecoratorConsistency(classTypeResult.classType);
185
185
  this._validateMultipleInheritanceBaseClasses(classTypeResult.classType, node.name);
186
186
  this._validateMultipleInheritanceCompatibility(classTypeResult.classType, node.name);
@@ -288,7 +288,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
288
288
  const kwargsType = types_1.FunctionType.getEffectiveParameterType(functionTypeResult.functionType, kwargsIndex);
289
289
  if ((0, types_1.isClass)(kwargsType) && kwargsType.details.typedDictEntries) {
290
290
  const overlappingEntries = new Set();
291
- kwargsType.details.typedDictEntries.forEach((_, name) => {
291
+ kwargsType.details.typedDictEntries.knownItems.forEach((_, name) => {
292
292
  if (keywordNames.has(name)) {
293
293
  overlappingEntries.add(name);
294
294
  }
@@ -383,7 +383,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
383
383
  }
384
384
  // Verify common dunder signatures.
385
385
  this._validateDunderSignatures(node, functionTypeResult.functionType, containingClassNode !== undefined);
386
- // Verify TypeGuard functions.
386
+ // Verify TypeGuard and TypeIs functions.
387
387
  this._validateTypeGuardFunction(node, functionTypeResult.functionType, containingClassNode !== undefined);
388
388
  this._validateFunctionTypeVarUsage(node, functionTypeResult);
389
389
  this._validateGeneratorReturnType(node, functionTypeResult.functionType);
@@ -3272,6 +3272,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3272
3272
  });
3273
3273
  }
3274
3274
  _validateTypeGuardFunction(node, functionType, isMethod) {
3275
+ var _a;
3275
3276
  const returnType = functionType.details.declaredReturnType;
3276
3277
  if (!returnType) {
3277
3278
  return;
@@ -3279,7 +3280,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3279
3280
  if (!(0, types_1.isClassInstance)(returnType) || !returnType.typeArguments || returnType.typeArguments.length < 1) {
3280
3281
  return;
3281
3282
  }
3282
- if (!types_1.ClassType.isBuiltIn(returnType, 'TypeGuard')) {
3283
+ const isTypeGuard = types_1.ClassType.isBuiltIn(returnType, 'TypeGuard');
3284
+ const isTypeIs = types_1.ClassType.isBuiltIn(returnType, 'TypeIs');
3285
+ if (!isTypeGuard && !isTypeIs) {
3283
3286
  return;
3284
3287
  }
3285
3288
  // Make sure there's at least one input parameter provided.
@@ -3294,6 +3297,25 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3294
3297
  if (paramCount < 1) {
3295
3298
  this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typeGuardParamCount(), node.name);
3296
3299
  }
3300
+ if (isTypeIs) {
3301
+ const typeGuardType = returnType.typeArguments[0];
3302
+ // Determine the type of the first parameter.
3303
+ const paramIndex = isMethod && !types_1.FunctionType.isStaticMethod(functionType) ? 1 : 0;
3304
+ if (paramIndex >= functionType.details.parameters.length) {
3305
+ return;
3306
+ }
3307
+ const paramType = types_1.FunctionType.getEffectiveParameterType(functionType, paramIndex);
3308
+ // Verify that the typeGuardType is a narrower type than the paramType.
3309
+ if (!this._evaluator.assignType(paramType, typeGuardType)) {
3310
+ const returnAnnotation = node.returnTypeAnnotation || ((_a = node.functionAnnotationComment) === null || _a === void 0 ? void 0 : _a.returnTypeAnnotation);
3311
+ if (returnAnnotation) {
3312
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typeIsReturnType().format({
3313
+ type: this._evaluator.printType(paramType),
3314
+ returnType: this._evaluator.printType(typeGuardType),
3315
+ }), returnAnnotation);
3316
+ }
3317
+ }
3318
+ }
3297
3319
  }
3298
3320
  _validateDunderSignatures(node, functionType, isMethod) {
3299
3321
  var _a;
@@ -3639,7 +3661,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3639
3661
  // variables. We need to make sure these are initialized.
3640
3662
  const abstractSymbols = new Map();
3641
3663
  if (types_1.ClassType.isFinal(classType)) {
3642
- (0, typeUtils_1.getProtocolSymbolsRecursive)(classType, abstractSymbols, 1024 /* ClassTypeFlags.SupportsAbstractMethods */);
3664
+ (0, typeUtils_1.getProtocolSymbolsRecursive)(classType, abstractSymbols, 2048 /* ClassTypeFlags.SupportsAbstractMethods */);
3643
3665
  }
3644
3666
  classType.details.fields.forEach((localSymbol, name) => {
3645
3667
  abstractSymbols.delete(name);
@@ -4042,6 +4064,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4042
4064
  }
4043
4065
  }
4044
4066
  _validateMultipleInheritanceOverride(overriddenClassAndSymbol, overrideClassAndSymbol, childClassType, memberName, errorNode) {
4067
+ var _a, _b, _c, _d;
4045
4068
  if (!(0, types_1.isClass)(overriddenClassAndSymbol.classType) || !(0, types_1.isClass)(overrideClassAndSymbol.classType)) {
4046
4069
  return;
4047
4070
  }
@@ -4122,14 +4145,16 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4122
4145
  }
4123
4146
  let overriddenTDEntry;
4124
4147
  if (overriddenClassAndSymbol.classType.details.typedDictEntries) {
4125
- overriddenTDEntry = overriddenClassAndSymbol.classType.details.typedDictEntries.get(memberName);
4148
+ overriddenTDEntry =
4149
+ (_b = (_a = overriddenClassAndSymbol.classType.details.typedDictEntries.knownItems.get(memberName)) !== null && _a !== void 0 ? _a : overriddenClassAndSymbol.classType.details.typedDictEntries.extraItems) !== null && _b !== void 0 ? _b : (0, typedDicts_1.getEffectiveExtraItemsEntryType)(this._evaluator, overriddenClassAndSymbol.classType);
4126
4150
  if (overriddenTDEntry === null || overriddenTDEntry === void 0 ? void 0 : overriddenTDEntry.isReadOnly) {
4127
4151
  isInvariant = false;
4128
4152
  }
4129
4153
  }
4130
4154
  let overrideTDEntry;
4131
4155
  if (overrideClassAndSymbol.classType.details.typedDictEntries) {
4132
- overrideTDEntry = overrideClassAndSymbol.classType.details.typedDictEntries.get(memberName);
4156
+ overrideTDEntry =
4157
+ (_d = (_c = overrideClassAndSymbol.classType.details.typedDictEntries.knownItems.get(memberName)) !== null && _c !== void 0 ? _c : overrideClassAndSymbol.classType.details.typedDictEntries.extraItems) !== null && _d !== void 0 ? _d : (0, typedDicts_1.getEffectiveExtraItemsEntryType)(this._evaluator, overrideClassAndSymbol.classType);
4133
4158
  }
4134
4159
  if (!this._evaluator.assignType(overriddenType, childOverrideType !== null && childOverrideType !== void 0 ? childOverrideType : overrideType,
4135
4160
  /* diag */ undefined,
@@ -4222,6 +4247,84 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4222
4247
  }
4223
4248
  });
4224
4249
  }
4250
+ // For a TypedDict class that derives from another TypedDict class
4251
+ // that is closed, verify that any new keys are compatible with the
4252
+ // base class.
4253
+ _validateTypedDictOverrides(classType) {
4254
+ if (!types_1.ClassType.isTypedDictClass(classType)) {
4255
+ return;
4256
+ }
4257
+ const typedDictEntries = (0, typedDicts_1.getTypedDictMembersForClass)(this._evaluator, classType, /* allowNarrowed */ false);
4258
+ for (const baseClass of classType.details.baseClasses) {
4259
+ const diag = new diagnostic_1.DiagnosticAddendum();
4260
+ if (!(0, types_1.isClass)(baseClass) ||
4261
+ !types_1.ClassType.isTypedDictClass(baseClass) ||
4262
+ !types_1.ClassType.isTypedDictEffectivelyClosed(baseClass)) {
4263
+ continue;
4264
+ }
4265
+ const baseTypedDictEntries = (0, typedDicts_1.getTypedDictMembersForClass)(this._evaluator, baseClass,
4266
+ /* allowNarrowed */ false);
4267
+ const typeVarContext = (0, typeUtils_1.buildTypeVarContextFromSpecializedClass)(baseClass);
4268
+ const baseExtraItemsType = baseTypedDictEntries.extraItems
4269
+ ? (0, typeUtils_1.applySolvedTypeVars)(baseTypedDictEntries.extraItems.valueType, typeVarContext)
4270
+ : types_1.UnknownType.create();
4271
+ for (const [name, entry] of typedDictEntries.knownItems) {
4272
+ const baseEntry = baseTypedDictEntries.knownItems.get(name);
4273
+ if (!baseEntry) {
4274
+ if (!baseTypedDictEntries.extraItems || (0, types_1.isNever)(baseTypedDictEntries.extraItems.valueType)) {
4275
+ diag.addMessage(localize_1.LocAddendum.typedDictClosedExtraNotAllowed().format({
4276
+ name,
4277
+ }));
4278
+ }
4279
+ else if (!this._evaluator.assignType(baseExtraItemsType, entry.valueType,
4280
+ /* diag */ undefined,
4281
+ /* destTypeVarContext */ undefined,
4282
+ /* srcTypeVarContext */ undefined, !baseTypedDictEntries.extraItems.isReadOnly
4283
+ ? 1 /* AssignTypeFlags.EnforceInvariance */
4284
+ : 0 /* AssignTypeFlags.Default */)) {
4285
+ diag.addMessage(localize_1.LocAddendum.typedDictClosedExtraTypeMismatch().format({
4286
+ name,
4287
+ type: this._evaluator.printType(entry.valueType),
4288
+ }));
4289
+ }
4290
+ else if (!baseTypedDictEntries.extraItems.isReadOnly && entry.isRequired) {
4291
+ diag.addMessage(localize_1.LocAddendum.typedDictClosedFieldNotRequired().format({
4292
+ name,
4293
+ }));
4294
+ }
4295
+ }
4296
+ }
4297
+ if (typedDictEntries.extraItems && baseTypedDictEntries.extraItems) {
4298
+ if (!this._evaluator.assignType(baseExtraItemsType, typedDictEntries.extraItems.valueType,
4299
+ /* diag */ undefined,
4300
+ /* destTypeVarContext */ undefined,
4301
+ /* srcTypeVarContext */ undefined, !baseTypedDictEntries.extraItems.isReadOnly
4302
+ ? 1 /* AssignTypeFlags.EnforceInvariance */
4303
+ : 0 /* AssignTypeFlags.Default */)) {
4304
+ diag.addMessage(localize_1.LocAddendum.typedDictClosedExtraTypeMismatch().format({
4305
+ name: '__extra_items__',
4306
+ type: this._evaluator.printType(typedDictEntries.extraItems.valueType),
4307
+ }));
4308
+ }
4309
+ }
4310
+ if (!diag.isEmpty() && classType.details.declaration) {
4311
+ const declNode = (0, declarationUtils_1.getNameNodeForDeclaration)(classType.details.declaration);
4312
+ if (declNode) {
4313
+ if (baseTypedDictEntries.extraItems) {
4314
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleVariableOverride, localize_1.LocMessage.typedDictClosedExtras().format({
4315
+ name: baseClass.details.name,
4316
+ type: this._evaluator.printType(baseExtraItemsType),
4317
+ }) + diag.getString(), declNode);
4318
+ }
4319
+ else {
4320
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleVariableOverride, localize_1.LocMessage.typedDictClosedNoExtras().format({
4321
+ name: baseClass.details.name,
4322
+ }) + diag.getString(), declNode);
4323
+ }
4324
+ }
4325
+ }
4326
+ }
4327
+ }
4225
4328
  // Validates that any overridden methods or variables contain the same
4226
4329
  // types as the original method. Also marks the class as abstract if one
4227
4330
  // or more abstract methods are not overridden.
@@ -4341,7 +4444,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4341
4444
  this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.overriddenMethodNotFound().format({ name: funcNode.name.value }), funcNode.name);
4342
4445
  }
4343
4446
  _validateBaseClassOverride(baseClassAndSymbol, overrideSymbol, overrideType, childClassType, memberName) {
4344
- var _a, _b, _c, _d, _e, _f, _g, _h;
4447
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
4345
4448
  if (!(0, types_1.isInstantiableClass)(baseClassAndSymbol.classType)) {
4346
4449
  return;
4347
4450
  }
@@ -4533,15 +4636,28 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4533
4636
  }
4534
4637
  }
4535
4638
  let overriddenTDEntry;
4536
- if (baseClass.details.typedDictEntries) {
4537
- overriddenTDEntry = baseClass.details.typedDictEntries.get(memberName);
4538
- if (overriddenTDEntry === null || overriddenTDEntry === void 0 ? void 0 : overriddenTDEntry.isReadOnly) {
4539
- isInvariant = false;
4540
- }
4541
- }
4542
4639
  let overrideTDEntry;
4543
- if (childClassType.details.typedDictEntries) {
4544
- overrideTDEntry = childClassType.details.typedDictEntries.get(memberName);
4640
+ if (!overrideSymbol.isIgnoredForProtocolMatch()) {
4641
+ if (baseClass.details.typedDictEntries) {
4642
+ overriddenTDEntry =
4643
+ (_e = (_d = baseClass.details.typedDictEntries.knownItems.get(memberName)) !== null && _d !== void 0 ? _d : baseClass.details.typedDictEntries.extraItems) !== null && _e !== void 0 ? _e : (0, typedDicts_1.getEffectiveExtraItemsEntryType)(this._evaluator, baseClass);
4644
+ if (overriddenTDEntry === null || overriddenTDEntry === void 0 ? void 0 : overriddenTDEntry.isReadOnly) {
4645
+ isInvariant = false;
4646
+ }
4647
+ }
4648
+ if (childClassType.details.typedDictEntries) {
4649
+ // Exempt __extra_items__ here. We'll check this separately
4650
+ // in _validateTypedDictOverrides. If we don't skip it here,
4651
+ // redundant errors will be produced.
4652
+ if (types_1.ClassType.isTypedDictMarkedClosed(childClassType) && memberName === '__extra_items__') {
4653
+ overrideTDEntry = overriddenTDEntry;
4654
+ overrideType = baseType;
4655
+ }
4656
+ else {
4657
+ overrideTDEntry =
4658
+ (_g = (_f = childClassType.details.typedDictEntries.knownItems.get(memberName)) !== null && _f !== void 0 ? _f : childClassType.details.typedDictEntries.extraItems) !== null && _g !== void 0 ? _g : (0, typedDicts_1.getEffectiveExtraItemsEntryType)(this._evaluator, childClassType);
4659
+ }
4660
+ }
4545
4661
  }
4546
4662
  let diagAddendum = new diagnostic_1.DiagnosticAddendum();
4547
4663
  if (!this._evaluator.assignType(baseType, overrideType, diagAddendum,
@@ -4558,7 +4674,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4558
4674
  const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleVariableOverride, localize_1.LocMessage.symbolOverridden().format({
4559
4675
  name: memberName,
4560
4676
  className: baseClass.details.name,
4561
- }) + diagAddendum.getString(), (_d = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _d !== void 0 ? _d : lastDecl.node);
4677
+ }) + diagAddendum.getString(), (_h = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _h !== void 0 ? _h : lastDecl.node);
4562
4678
  const origDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(baseClassAndSymbol.symbol);
4563
4679
  if (diag && origDecl) {
4564
4680
  diag.addRelatedInfo(localize_1.LocAddendum.overriddenSymbol(), origDecl.uri, origDecl.range);
@@ -4579,14 +4695,14 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4579
4695
  const message = overrideTDEntry.isRequired
4580
4696
  ? localize_1.LocMessage.typedDictFieldRequiredRedefinition
4581
4697
  : localize_1.LocMessage.typedDictFieldNotRequiredRedefinition;
4582
- this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, message().format({ name: memberName }), (_e = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _e !== void 0 ? _e : lastDecl.node);
4698
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, message().format({ name: memberName }), (_j = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _j !== void 0 ? _j : lastDecl.node);
4583
4699
  }
4584
4700
  // Make sure that the derived class isn't marking a previously writable
4585
4701
  // entry as read-only.
4586
4702
  if (!overriddenTDEntry.isReadOnly && overrideTDEntry.isReadOnly) {
4587
4703
  this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictFieldReadOnlyRedefinition().format({
4588
4704
  name: memberName,
4589
- }), (_f = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _f !== void 0 ? _f : lastDecl.node);
4705
+ }), (_k = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _k !== void 0 ? _k : lastDecl.node);
4590
4706
  }
4591
4707
  }
4592
4708
  // Verify that there is not a Final mismatch.
@@ -4596,7 +4712,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4596
4712
  const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleVariableOverride, localize_1.LocMessage.variableFinalOverride().format({
4597
4713
  name: memberName,
4598
4714
  className: baseClass.details.name,
4599
- }), (_g = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _g !== void 0 ? _g : lastDecl.node);
4715
+ }), (_l = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _l !== void 0 ? _l : lastDecl.node);
4600
4716
  if (diag) {
4601
4717
  diag.addRelatedInfo(localize_1.LocAddendum.overriddenSymbol(), overrideFinalVarDecl.uri, overrideFinalVarDecl.range);
4602
4718
  }
@@ -4625,7 +4741,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4625
4741
  const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleVariableOverride, unformattedMessage.format({
4626
4742
  name: memberName,
4627
4743
  className: baseClass.details.name,
4628
- }), (_h = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _h !== void 0 ? _h : lastDecl.node);
4744
+ }), (_m = (0, declarationUtils_1.getNameNodeForDeclaration)(lastDecl)) !== null && _m !== void 0 ? _m : lastDecl.node);
4629
4745
  const origDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(baseClassAndSymbol.symbol);
4630
4746
  if (diag && origDecl) {
4631
4747
  diag.addRelatedInfo(localize_1.LocAddendum.overriddenSymbol(), origDecl.uri, origDecl.range);
@@ -4999,33 +5115,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4999
5115
  }
5000
5116
  });
5001
5117
  }
5002
- _checkRegions() {
5003
- const regionComments = (0, regions_1.getRegionComments)(this._parseResults);
5004
- const regionStack = [];
5005
- regionComments.forEach((regionComment) => {
5006
- if (regionComment.type === 0 /* RegionCommentType.Region */) {
5007
- regionStack.push(regionComment);
5008
- }
5009
- else {
5010
- if (regionStack.length > 0) {
5011
- regionStack.pop();
5012
- }
5013
- else {
5014
- this._addDiagnosticForRegionComment(regionComment, localize_1.LocMessage.unmatchedEndregionComment());
5015
- }
5016
- }
5017
- });
5018
- regionStack.forEach((regionComment) => {
5019
- this._addDiagnosticForRegionComment(regionComment, localize_1.LocMessage.unmatchedRegionComment());
5020
- });
5021
- }
5022
- _addDiagnosticForRegionComment(regionComment, message) {
5023
- return this._evaluator.addDiagnosticForTextRange(this._fileInfo, 'error', '', message, {
5024
- // extend range to include # character
5025
- start: regionComment.comment.start - 1,
5026
- length: regionComment.comment.length + 1,
5027
- });
5028
- }
5029
5118
  }
5030
5119
  exports.Checker = Checker;
5031
5120
  //# sourceMappingURL=checker.js.map