@zzzen/pyright-internal 1.2.0-dev.20220717 → 1.2.0-dev.20220807

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 (156) hide show
  1. package/dist/analyzer/analysis.js +1 -1
  2. package/dist/analyzer/analysis.js.map +1 -1
  3. package/dist/analyzer/checker.d.ts +1 -0
  4. package/dist/analyzer/checker.js +57 -10
  5. package/dist/analyzer/checker.js.map +1 -1
  6. package/dist/analyzer/codeFlowEngine.js +4 -5
  7. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  8. package/dist/analyzer/constraintSolver.js +9 -15
  9. package/dist/analyzer/constraintSolver.js.map +1 -1
  10. package/dist/analyzer/dataClasses.js +13 -4
  11. package/dist/analyzer/dataClasses.js.map +1 -1
  12. package/dist/analyzer/enums.d.ts +13 -0
  13. package/dist/analyzer/enums.js +207 -0
  14. package/dist/analyzer/enums.js.map +1 -0
  15. package/dist/analyzer/importResolver.js +2 -2
  16. package/dist/analyzer/importResolver.js.map +1 -1
  17. package/dist/analyzer/importStatementUtils.d.ts +8 -2
  18. package/dist/analyzer/importStatementUtils.js +75 -27
  19. package/dist/analyzer/importStatementUtils.js.map +1 -1
  20. package/dist/analyzer/parseTreeUtils.d.ts +2 -0
  21. package/dist/analyzer/parseTreeUtils.js +76 -2
  22. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  23. package/dist/analyzer/patternMatching.js +3 -3
  24. package/dist/analyzer/patternMatching.js.map +1 -1
  25. package/dist/analyzer/program.d.ts +2 -2
  26. package/dist/analyzer/program.js +10 -9
  27. package/dist/analyzer/program.js.map +1 -1
  28. package/dist/analyzer/properties.js +1 -1
  29. package/dist/analyzer/properties.js.map +1 -1
  30. package/dist/analyzer/service.d.ts +3 -2
  31. package/dist/analyzer/service.js +40 -39
  32. package/dist/analyzer/service.js.map +1 -1
  33. package/dist/analyzer/sourceFile.d.ts +3 -1
  34. package/dist/analyzer/sourceFile.js +6 -0
  35. package/dist/analyzer/sourceFile.js.map +1 -1
  36. package/dist/analyzer/typeEvaluator.js +631 -654
  37. package/dist/analyzer/typeEvaluator.js.map +1 -1
  38. package/dist/analyzer/typeEvaluatorTypes.d.ts +14 -12
  39. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  40. package/dist/analyzer/typeEvaluatorWithTracker.js +1 -0
  41. package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
  42. package/dist/analyzer/typeGuards.d.ts +2 -0
  43. package/dist/analyzer/typeGuards.js +42 -14
  44. package/dist/analyzer/typeGuards.js.map +1 -1
  45. package/dist/analyzer/typePrinter.js +8 -4
  46. package/dist/analyzer/typePrinter.js.map +1 -1
  47. package/dist/analyzer/typeUtils.d.ts +4 -4
  48. package/dist/analyzer/typeUtils.js +23 -38
  49. package/dist/analyzer/typeUtils.js.map +1 -1
  50. package/dist/analyzer/typedDicts.js +2 -2
  51. package/dist/analyzer/typedDicts.js.map +1 -1
  52. package/dist/analyzer/types.d.ts +7 -1
  53. package/dist/analyzer/types.js +70 -31
  54. package/dist/analyzer/types.js.map +1 -1
  55. package/dist/backgroundAnalysisBase.d.ts +2 -1
  56. package/dist/backgroundAnalysisBase.js +7 -0
  57. package/dist/backgroundAnalysisBase.js.map +1 -1
  58. package/dist/backgroundThreadBase.js +1 -0
  59. package/dist/backgroundThreadBase.js.map +1 -1
  60. package/dist/commands/commandResult.js +1 -1
  61. package/dist/commands/commandResult.js.map +1 -1
  62. package/dist/common/chokidarFileWatcherProvider.d.ts +1 -2
  63. package/dist/common/chokidarFileWatcherProvider.js +0 -3
  64. package/dist/common/chokidarFileWatcherProvider.js.map +1 -1
  65. package/dist/common/configOptions.d.ts +1 -0
  66. package/dist/common/configOptions.js +4 -0
  67. package/dist/common/configOptions.js.map +1 -1
  68. package/dist/common/diagnosticRules.d.ts +1 -0
  69. package/dist/common/diagnosticRules.js +1 -0
  70. package/dist/common/diagnosticRules.js.map +1 -1
  71. package/dist/common/editAction.d.ts +6 -0
  72. package/dist/common/editAction.js +15 -0
  73. package/dist/common/editAction.js.map +1 -1
  74. package/dist/common/fileSystem.d.ts +4 -1
  75. package/dist/common/fileSystem.js +6 -4
  76. package/dist/common/fileSystem.js.map +1 -1
  77. package/dist/common/realFileSystem.d.ts +2 -2
  78. package/dist/common/realFileSystem.js.map +1 -1
  79. package/dist/common/textEditUtils.d.ts +22 -2
  80. package/dist/common/textEditUtils.js +138 -1
  81. package/dist/common/textEditUtils.js.map +1 -1
  82. package/dist/common/uriParser.d.ts +2 -0
  83. package/dist/common/uriParser.js +11 -0
  84. package/dist/common/uriParser.js.map +1 -1
  85. package/dist/common/workspaceEditUtils.d.ts +1 -0
  86. package/dist/common/workspaceEditUtils.js +10 -6
  87. package/dist/common/workspaceEditUtils.js.map +1 -1
  88. package/dist/languageServerBase.d.ts +15 -10
  89. package/dist/languageServerBase.js +47 -43
  90. package/dist/languageServerBase.js.map +1 -1
  91. package/dist/languageService/autoImporter.d.ts +23 -17
  92. package/dist/languageService/autoImporter.js +42 -30
  93. package/dist/languageService/autoImporter.js.map +1 -1
  94. package/dist/languageService/codeActionProvider.d.ts +2 -2
  95. package/dist/languageService/codeActionProvider.js +1 -1
  96. package/dist/languageService/codeActionProvider.js.map +1 -1
  97. package/dist/languageService/completionProvider.d.ts +2 -1
  98. package/dist/languageService/completionProvider.js +5 -2
  99. package/dist/languageService/completionProvider.js.map +1 -1
  100. package/dist/languageService/importAdder.d.ts +2 -1
  101. package/dist/languageService/importAdder.js +9 -3
  102. package/dist/languageService/importAdder.js.map +1 -1
  103. package/dist/languageService/quickActions.js +1 -1
  104. package/dist/languageService/quickActions.js.map +1 -1
  105. package/dist/languageService/renameModuleProvider.d.ts +1 -4
  106. package/dist/languageService/renameModuleProvider.js +12 -48
  107. package/dist/languageService/renameModuleProvider.js.map +1 -1
  108. package/dist/localization/localize.d.ts +8 -0
  109. package/dist/localization/localize.js +2 -0
  110. package/dist/localization/localize.js.map +1 -1
  111. package/dist/localization/package.nls.en-us.json +2 -0
  112. package/dist/parser/parser.d.ts +1 -0
  113. package/dist/parser/parser.js +9 -2
  114. package/dist/parser/parser.js.map +1 -1
  115. package/dist/pyrightFileSystem.d.ts +19 -1
  116. package/dist/pyrightFileSystem.js +18 -1
  117. package/dist/pyrightFileSystem.js.map +1 -1
  118. package/dist/server.js +4 -4
  119. package/dist/server.js.map +1 -1
  120. package/dist/tests/chainedSourceFiles.test.js +2 -0
  121. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  122. package/dist/tests/checker.test.js +9 -0
  123. package/dist/tests/checker.test.js.map +1 -1
  124. package/dist/tests/fourslash/completions.commitChars.fourslash.js +12 -0
  125. package/dist/tests/fourslash/completions.commitChars.fourslash.js.map +1 -1
  126. package/dist/tests/fourslash/hover.init.fourslash.js +2 -2
  127. package/dist/tests/fourslash/hover.init.fourslash.js.map +1 -1
  128. package/dist/tests/harness/fourslash/fourSlashParser.js +5 -1
  129. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  130. package/dist/tests/harness/fourslash/testLanguageService.js +1 -1
  131. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  132. package/dist/tests/harness/fourslash/testState.js +8 -7
  133. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  134. package/dist/tests/importAdder.test.js +17 -2
  135. package/dist/tests/importAdder.test.js.map +1 -1
  136. package/dist/tests/renameModuleTestUtils.js +5 -87
  137. package/dist/tests/renameModuleTestUtils.js.map +1 -1
  138. package/dist/tests/testState.test.js +1 -1
  139. package/dist/tests/testState.test.js.map +1 -1
  140. package/dist/tests/testStateUtils.d.ts +8 -0
  141. package/dist/tests/testStateUtils.js +110 -0
  142. package/dist/tests/testStateUtils.js.map +1 -0
  143. package/dist/tests/testUtils.js +1 -1
  144. package/dist/tests/testUtils.js.map +1 -1
  145. package/dist/tests/typeEvaluator1.test.js +5 -5
  146. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  147. package/dist/tests/typeEvaluator2.test.js +4 -0
  148. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  149. package/dist/tests/typeEvaluator3.test.js +12 -0
  150. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  151. package/dist/tests/typeEvaluator4.test.js +12 -0
  152. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  153. package/dist/workspaceMap.d.ts +1 -0
  154. package/dist/workspaceMap.js +11 -1
  155. package/dist/workspaceMap.js.map +1 -1
  156. package/package.json +3 -3
@@ -30,7 +30,7 @@ exports.analyzeProgram = exports.nullCallback = void 0;
30
30
  const cancellationUtils_1 = require("../common/cancellationUtils");
31
31
  const debug = __importStar(require("../common/debug"));
32
32
  const timing_1 = require("../common/timing");
33
- const nullCallback = (_) => {
33
+ const nullCallback = () => {
34
34
  /* empty */
35
35
  };
36
36
  exports.nullCallback = nullCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/analyzer/analysis.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;AAIH,mEAAuG;AAGvG,uDAAyC;AAEzC,6CAA4C;AAGrC,MAAM,YAAY,GAA6B,CAAC,CAAC,EAAE,EAAE;IACxD,WAAW;AACf,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAeF,SAAgB,cAAc,CAC1B,OAAgB,EAChB,OAAoC,EACpC,aAA4B,EAC5B,QAA8C,EAC9C,OAAyB,EACzB,KAAwB;IAExB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,oBAAY,CAAC;IAEpC,IAAI;QACA,IAAA,gDAA4B,EAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,iBAAQ,EAAE,CAAC;QAChC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEhD,MAAM,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAEpD,wCAAwC;QACxC,IAAI,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;YAC3C,QAAQ,CAAC;gBACL,WAAW;gBACX,cAAc,EAAE,OAAO,CAAC,YAAY,EAAE;gBACtC,sBAAsB,EAAE,kBAAkB;gBAC1C,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,EAAE;gBACxD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,WAAW;aACd,CAAC,CAAC;SACN;KACJ;IAAC,OAAO,CAAM,EAAE;QACb,IAAI,8CAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAClC,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,OAAO,CAAC,CAAC;QAEvD,QAAQ,CAAC;YACL,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,CAAC;YACjB,sBAAsB,EAAE,CAAC;YACzB,qBAAqB,EAAE,IAAI;YAC3B,kBAAkB,EAAE,IAAI;YACxB,wBAAwB,EAAE,KAAK;YAC/B,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;SACvC,CAAC,CAAC;KACN;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAxDD,wCAwDC"}
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/analyzer/analysis.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;AAIH,mEAAuG;AAGvG,uDAAyC;AAEzC,6CAA4C;AAGrC,MAAM,YAAY,GAA6B,GAAG,EAAE;IACvD,WAAW;AACf,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAeF,SAAgB,cAAc,CAC1B,OAAgB,EAChB,OAAoC,EACpC,aAA4B,EAC5B,QAA8C,EAC9C,OAAyB,EACzB,KAAwB;IAExB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,oBAAY,CAAC;IAEpC,IAAI;QACA,IAAA,gDAA4B,EAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,iBAAQ,EAAE,CAAC;QAChC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEhD,MAAM,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAEpD,wCAAwC;QACxC,IAAI,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;YAC3C,QAAQ,CAAC;gBACL,WAAW;gBACX,cAAc,EAAE,OAAO,CAAC,YAAY,EAAE;gBACtC,sBAAsB,EAAE,kBAAkB;gBAC1C,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,EAAE;gBACxD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,WAAW;aACd,CAAC,CAAC;SACN;KACJ;IAAC,OAAO,CAAM,EAAE;QACb,IAAI,8CAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAClC,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,OAAO,CAAC,CAAC;QAEvD,QAAQ,CAAC;YACL,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,CAAC;YACjB,sBAAsB,EAAE,CAAC;YACzB,qBAAqB,EAAE,IAAI;YAC3B,kBAAkB,EAAE,IAAI;YACxB,wBAAwB,EAAE,KAAK;YAC/B,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;SACvC,CAAC,CAAC;KACN;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAxDD,wCAwDC"}
@@ -67,6 +67,7 @@ export declare class Checker extends ParseTreeWalker {
67
67
  private _validateExhaustiveMatch;
68
68
  private _suppressUnboundCheck;
69
69
  private _validateIllegalDefaultParamInitializer;
70
+ private _validateContainmentTypes;
70
71
  private _validateComparisonTypes;
71
72
  private _isTypeComparable;
72
73
  private _isTypeValidForUnusedValueTest;
@@ -737,6 +737,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
737
737
  this._validateComparisonTypes(node);
738
738
  }
739
739
  }
740
+ else if (node.operator === 41 /* In */ || node.operator === 42 /* NotIn */) {
741
+ // Don't apply this rule if it's within an assert.
742
+ if (!ParseTreeUtils.isWithinAssertExpression(node)) {
743
+ this._validateContainmentTypes(node);
744
+ }
745
+ }
740
746
  this._evaluator.getType(node);
741
747
  return true;
742
748
  }
@@ -831,11 +837,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
831
837
  return true;
832
838
  }
833
839
  visitDel(node) {
834
- this._suppressUnboundCheck(() => {
835
- node.expressions.forEach((expr) => {
836
- this._evaluator.verifyDeleteExpression(expr);
837
- this.walk(expr);
838
- });
840
+ node.expressions.forEach((expr) => {
841
+ this._evaluator.verifyDeleteExpression(expr);
842
+ this.walk(expr);
839
843
  });
840
844
  return false;
841
845
  }
@@ -982,11 +986,46 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
982
986
  }
983
987
  }
984
988
  }
989
+ _validateContainmentTypes(node) {
990
+ const leftType = this._evaluator.getType(node.leftExpression);
991
+ const containerType = this._evaluator.getType(node.rightExpression);
992
+ if (!leftType || !containerType) {
993
+ return;
994
+ }
995
+ if ((0, types_1.isNever)(leftType) || (0, types_1.isNever)(containerType)) {
996
+ return;
997
+ }
998
+ // Use the common narrowing logic for containment.
999
+ const elementType = (0, typeGuards_1.getElementTypeForContainerNarrowing)(containerType);
1000
+ if (!elementType) {
1001
+ return;
1002
+ }
1003
+ const narrowedType = (0, typeGuards_1.narrowTypeForContainerElementType)(this._evaluator, leftType, this._evaluator.makeTopLevelTypeVarsConcrete(elementType));
1004
+ if ((0, types_1.isNever)(narrowedType)) {
1005
+ const getMessage = () => {
1006
+ return node.operator === 41 /* In */
1007
+ ? localize_1.Localizer.Diagnostic.containmentAlwaysFalse()
1008
+ : localize_1.Localizer.Diagnostic.containmentAlwaysTrue();
1009
+ };
1010
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnnecessaryContains, diagnosticRules_1.DiagnosticRule.reportUnnecessaryContains, getMessage().format({
1011
+ leftType: this._evaluator.printType(leftType, /* expandTypeAlias */ true),
1012
+ rightType: this._evaluator.printType(elementType, /* expandTypeAlias */ true),
1013
+ }), node);
1014
+ }
1015
+ }
985
1016
  // Determines whether the types of the two operands for an == or != operation
986
1017
  // have overlapping types.
987
1018
  _validateComparisonTypes(node) {
1019
+ let rightExpression = node.rightExpression;
1020
+ // Check for chained comparisons.
1021
+ if (rightExpression.nodeType === 7 /* BinaryOperation */ &&
1022
+ !rightExpression.parenthesized &&
1023
+ ParseTreeUtils.operatorSupportsChaining(rightExpression.operator)) {
1024
+ // Use the left side of the right expression for comparison purposes.
1025
+ rightExpression = rightExpression.leftExpression;
1026
+ }
988
1027
  const leftType = this._evaluator.getType(node.leftExpression);
989
- const rightType = this._evaluator.getType(node.rightExpression);
1028
+ const rightType = this._evaluator.getType(rightExpression);
990
1029
  if (!leftType || !rightType) {
991
1030
  return;
992
1031
  }
@@ -2235,7 +2274,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2235
2274
  };
2236
2275
  // If arg1IncludesSubclasses is true, it contains a Type[X] class rather than X. A Type[X]
2237
2276
  // could be a subclass of X, so the "unnecessary isinstance check" may be legit.
2238
- if (!arg1IncludesSubclasses && (0, types_1.isTypeSame)(filteredType, arg0Type, /* ignorePseudoGeneric */ true)) {
2277
+ if (!arg1IncludesSubclasses && (0, types_1.isTypeSame)(filteredType, arg0Type, { ignorePseudoGeneric: true })) {
2239
2278
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnnecessaryIsInstance, diagnosticRules_1.DiagnosticRule.reportUnnecessaryIsInstance, isInstanceCheck
2240
2279
  ? localize_1.Localizer.Diagnostic.unnecessaryIsInstanceAlways().format({
2241
2280
  testType: this._evaluator.printType(arg0Type, /* expandTypeAlias */ false),
@@ -2814,6 +2853,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2814
2853
  if (this._fileInfo.diagnosticRuleSet.reportUninitializedInstanceVariable === 'none') {
2815
2854
  return;
2816
2855
  }
2856
+ // Protocol classes are exempted from this check.
2857
+ if (types_1.ClassType.isProtocolClass(classType)) {
2858
+ return;
2859
+ }
2817
2860
  classType.details.fields.forEach((localSymbol, name) => {
2818
2861
  // This applies only to instance members.
2819
2862
  if (!localSymbol.isInstanceMember()) {
@@ -3478,6 +3521,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3478
3521
  // Performs checks on a function that is located within a class
3479
3522
  // and has been determined not to be a property accessor.
3480
3523
  _validateMethod(node, functionType, classNode) {
3524
+ var _a, _b, _c, _d;
3481
3525
  const classTypeInfo = this._evaluator.getTypeOfClass(classNode);
3482
3526
  const classType = classTypeInfo === null || classTypeInfo === void 0 ? void 0 : classTypeInfo.classType;
3483
3527
  if (node.name && classType) {
@@ -3490,7 +3534,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3490
3534
  }
3491
3535
  }
3492
3536
  }
3493
- if (node.name && node.name.value === '__new__') {
3537
+ if (((_a = node.name) === null || _a === void 0 ? void 0 : _a.value) === '__new__') {
3494
3538
  // __new__ overrides should have a "cls" parameter.
3495
3539
  if (node.parameters.length === 0 ||
3496
3540
  !node.parameters[0].name ||
@@ -3501,7 +3545,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3501
3545
  this._validateClsSelfParameterType(functionType, classType, /* isCls */ true);
3502
3546
  }
3503
3547
  }
3504
- else if (node.name && node.name.value === '__init_subclass__') {
3548
+ else if (((_b = node.name) === null || _b === void 0 ? void 0 : _b.value) === '__init_subclass__') {
3505
3549
  // __init_subclass__ overrides should have a "cls" parameter.
3506
3550
  if (node.parameters.length === 0 || !node.parameters[0].name || node.parameters[0].name.value !== 'cls') {
3507
3551
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportSelfClsParameterName, diagnosticRules_1.DiagnosticRule.reportSelfClsParameterName, localize_1.Localizer.Diagnostic.initSubclassClsParam(), node.parameters.length > 0 ? node.parameters[0] : node.name);
@@ -3510,7 +3554,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3510
3554
  this._validateClsSelfParameterType(functionType, classType, /* isCls */ true);
3511
3555
  }
3512
3556
  }
3513
- else if (node.name && node.name.value === '__class_getitem__') {
3557
+ else if (((_c = node.name) === null || _c === void 0 ? void 0 : _c.value) === '__class_getitem__') {
3514
3558
  // __class_getitem__ overrides should have a "cls" parameter.
3515
3559
  if (node.parameters.length === 0 || !node.parameters[0].name || node.parameters[0].name.value !== 'cls') {
3516
3560
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportSelfClsParameterName, diagnosticRules_1.DiagnosticRule.reportSelfClsParameterName, localize_1.Localizer.Diagnostic.classGetItemClsParam(), node.parameters.length > 0 ? node.parameters[0] : node.name);
@@ -3519,6 +3563,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3519
3563
  this._validateClsSelfParameterType(functionType, classType, /* isCls */ true);
3520
3564
  }
3521
3565
  }
3566
+ else if (((_d = node.name) === null || _d === void 0 ? void 0 : _d.value) === '_generate_next_value_') {
3567
+ // Skip this check for _generate_next_value_.
3568
+ }
3522
3569
  else if (types_1.FunctionType.isStaticMethod(functionType)) {
3523
3570
  // Static methods should not have "self" or "cls" parameters.
3524
3571
  if (node.parameters.length > 0 && node.parameters[0].name) {