@zzzen/pyright-internal 1.2.0-dev.20230108 → 1.2.0-dev.20230122

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 (116) hide show
  1. package/dist/analyzer/analyzerFileInfo.js +14 -1
  2. package/dist/analyzer/analyzerFileInfo.js.map +1 -1
  3. package/dist/analyzer/backgroundAnalysisProgram.d.ts +3 -3
  4. package/dist/analyzer/backgroundAnalysisProgram.js +4 -4
  5. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  6. package/dist/analyzer/checker.d.ts +1 -2
  7. package/dist/analyzer/checker.js +123 -60
  8. package/dist/analyzer/checker.js.map +1 -1
  9. package/dist/analyzer/codeFlowEngine.js +7 -7
  10. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  11. package/dist/analyzer/constraintSolver.js +10 -7
  12. package/dist/analyzer/constraintSolver.js.map +1 -1
  13. package/dist/analyzer/dataClasses.js +6 -1
  14. package/dist/analyzer/dataClasses.js.map +1 -1
  15. package/dist/analyzer/importResolver.d.ts +2 -1
  16. package/dist/analyzer/importResolver.js +5 -1
  17. package/dist/analyzer/importResolver.js.map +1 -1
  18. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  19. package/dist/analyzer/parseTreeUtils.js +18 -2
  20. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  21. package/dist/analyzer/program.d.ts +1 -1
  22. package/dist/analyzer/program.js +18 -13
  23. package/dist/analyzer/program.js.map +1 -1
  24. package/dist/analyzer/regions.js +8 -12
  25. package/dist/analyzer/regions.js.map +1 -1
  26. package/dist/analyzer/service.d.ts +3 -2
  27. package/dist/analyzer/service.js +15 -13
  28. package/dist/analyzer/service.js.map +1 -1
  29. package/dist/analyzer/sourceFile.d.ts +3 -2
  30. package/dist/analyzer/sourceFile.js +4 -4
  31. package/dist/analyzer/sourceFile.js.map +1 -1
  32. package/dist/analyzer/typeCacheUtils.d.ts +2 -1
  33. package/dist/analyzer/typeCacheUtils.js +5 -1
  34. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  35. package/dist/analyzer/typeEvaluator.js +477 -353
  36. package/dist/analyzer/typeEvaluator.js.map +1 -1
  37. package/dist/analyzer/typeEvaluatorTypes.d.ts +18 -13
  38. package/dist/analyzer/typeEvaluatorTypes.js +15 -15
  39. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  40. package/dist/analyzer/typeGuards.js +27 -2
  41. package/dist/analyzer/typeGuards.js.map +1 -1
  42. package/dist/analyzer/typePrinter.js +32 -12
  43. package/dist/analyzer/typePrinter.js.map +1 -1
  44. package/dist/analyzer/typeUtils.d.ts +8 -0
  45. package/dist/analyzer/typeUtils.js +31 -4
  46. package/dist/analyzer/typeUtils.js.map +1 -1
  47. package/dist/analyzer/types.d.ts +4 -1
  48. package/dist/analyzer/types.js +13 -5
  49. package/dist/analyzer/types.js.map +1 -1
  50. package/dist/backgroundAnalysisBase.d.ts +4 -1
  51. package/dist/backgroundAnalysisBase.js +1 -1
  52. package/dist/backgroundAnalysisBase.js.map +1 -1
  53. package/dist/backgroundThreadBase.d.ts +5 -2
  54. package/dist/backgroundThreadBase.js.map +1 -1
  55. package/dist/commands/createTypeStub.js +3 -0
  56. package/dist/commands/createTypeStub.js.map +1 -1
  57. package/dist/common/configOptions.d.ts +1 -0
  58. package/dist/common/configOptions.js +4 -0
  59. package/dist/common/configOptions.js.map +1 -1
  60. package/dist/common/diagnosticRules.d.ts +1 -0
  61. package/dist/common/diagnosticRules.js +1 -0
  62. package/dist/common/diagnosticRules.js.map +1 -1
  63. package/dist/common/envVarUtils.js +30 -7
  64. package/dist/common/envVarUtils.js.map +1 -1
  65. package/dist/common/fileSystem.d.ts +1 -0
  66. package/dist/common/fileSystem.js.map +1 -1
  67. package/dist/languageServerBase.js +2 -2
  68. package/dist/languageServerBase.js.map +1 -1
  69. package/dist/languageService/documentSymbolCollector.d.ts +12 -4
  70. package/dist/languageService/documentSymbolCollector.js +103 -22
  71. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  72. package/dist/languageService/documentSymbolProvider.js +6 -0
  73. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  74. package/dist/languageService/hoverProvider.d.ts +1 -0
  75. package/dist/languageService/hoverProvider.js +24 -2
  76. package/dist/languageService/hoverProvider.js.map +1 -1
  77. package/dist/languageService/indentationUtils.d.ts +1 -1
  78. package/dist/languageService/indentationUtils.js +86 -30
  79. package/dist/languageService/indentationUtils.js.map +1 -1
  80. package/dist/languageService/referencesProvider.d.ts +5 -4
  81. package/dist/languageService/referencesProvider.js +15 -10
  82. package/dist/languageService/referencesProvider.js.map +1 -1
  83. package/dist/languageService/renameModuleProvider.js +11 -11
  84. package/dist/languageService/renameModuleProvider.js.map +1 -1
  85. package/dist/localization/localize.d.ts +3 -0
  86. package/dist/localization/localize.js +3 -0
  87. package/dist/localization/localize.js.map +1 -1
  88. package/dist/localization/package.nls.en-us.json +4 -1
  89. package/dist/parser/stringTokenUtils.js +1 -1
  90. package/dist/parser/stringTokenUtils.js.map +1 -1
  91. package/dist/parser/tokenizer.js +6 -2
  92. package/dist/parser/tokenizer.js.map +1 -1
  93. package/dist/tests/checker.test.js +16 -0
  94. package/dist/tests/checker.test.js.map +1 -1
  95. package/dist/tests/documentSymbolCollector.test.js +86 -5
  96. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  97. package/dist/tests/fourslash/hover.overloadedFunction.fourslash.d.ts +1 -0
  98. package/dist/tests/fourslash/hover.overloadedFunction.fourslash.js +23 -0
  99. package/dist/tests/fourslash/hover.overloadedFunction.fourslash.js.map +1 -0
  100. package/dist/tests/fourslash/rename.init.fourslash.d.ts +1 -0
  101. package/dist/tests/fourslash/rename.init.fourslash.js +23 -0
  102. package/dist/tests/fourslash/rename.init.fourslash.js.map +1 -0
  103. package/dist/tests/harness/fourslash/testState.d.ts +2 -2
  104. package/dist/tests/harness/fourslash/testState.js +9 -6
  105. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  106. package/dist/tests/indentationUtils.ptvs.test.js +12 -12
  107. package/dist/tests/indentationUtils.ptvs.test.js.map +1 -1
  108. package/dist/tests/indentationUtils.test.js +116 -7
  109. package/dist/tests/indentationUtils.test.js.map +1 -1
  110. package/dist/tests/pathUtils.test.js +10 -0
  111. package/dist/tests/pathUtils.test.js.map +1 -1
  112. package/dist/tests/typeEvaluator1.test.js +16 -0
  113. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  114. package/dist/tests/typeEvaluator3.test.js +10 -2
  115. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  116. package/package.json +3 -3
@@ -10,8 +10,21 @@
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.isAnnotationEvaluationPostponed = void 0;
13
+ const pythonVersion_1 = require("../common/pythonVersion");
13
14
  function isAnnotationEvaluationPostponed(fileInfo) {
14
- return fileInfo.futureImports.has('annotations') || fileInfo.isStubFile;
15
+ if (fileInfo.isStubFile) {
16
+ return true;
17
+ }
18
+ if (fileInfo.futureImports.has('annotations')) {
19
+ return true;
20
+ }
21
+ // As of November 22, the Python steering council has tentatively
22
+ // approved PEP 649 for Python 3.12.
23
+ // https://discuss.python.org/t/pep-649-deferred-evaluation-of-annotations-tentatively-accepted/21331
24
+ if (fileInfo.executionEnvironment.pythonVersion >= pythonVersion_1.PythonVersion.V3_12) {
25
+ return true;
26
+ }
27
+ return false;
15
28
  }
16
29
  exports.isAnnotationEvaluationPostponed = isAnnotationEvaluationPostponed;
17
30
  //# sourceMappingURL=analyzerFileInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzerFileInfo.js","sourceRoot":"","sources":["../../../src/analyzer/analyzerFileInfo.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA+CH,SAAgB,+BAA+B,CAAC,QAA0B;IACtE,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC;AAC5E,CAAC;AAFD,0EAEC"}
1
+ {"version":3,"file":"analyzerFileInfo.js","sourceRoot":"","sources":["../../../src/analyzer/analyzerFileInfo.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAIH,2DAAwD;AA4CxD,SAAgB,+BAA+B,CAAC,QAA0B;IACtE,IAAI,QAAQ,CAAC,UAAU,EAAE;QACrB,OAAO,IAAI,CAAC;KACf;IAED,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;QAC3C,OAAO,IAAI,CAAC;KACf;IAED,iEAAiE;IACjE,oCAAoC;IACpC,qGAAqG;IACrG,IAAI,QAAQ,CAAC,oBAAoB,CAAC,aAAa,IAAI,6BAAa,CAAC,KAAK,EAAE;QACpE,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAjBD,0EAiBC"}
@@ -1,6 +1,6 @@
1
1
  import { CancellationToken } from 'vscode-languageserver';
2
2
  import { TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument';
3
- import { BackgroundAnalysisBase, IndexOptions } from '../backgroundAnalysisBase';
3
+ import { BackgroundAnalysisBase, IndexOptions, RefreshOptions } from '../backgroundAnalysisBase';
4
4
  import { ConfigOptions } from '../common/configOptions';
5
5
  import { ConsoleInterface } from '../common/console';
6
6
  import { Diagnostic } from '../common/diagnostic';
@@ -41,12 +41,12 @@ export declare class BackgroundAnalysisProgram {
41
41
  startAnalysis(token: CancellationToken): boolean;
42
42
  analyzeFile(filePath: string, token: CancellationToken): boolean;
43
43
  startIndexing(indexOptions: IndexOptions): void;
44
- refreshIndexing(): void;
44
+ refreshIndexing(refreshOptions?: RefreshOptions): void;
45
45
  cancelIndexing(): void;
46
46
  getIndexing(filePath: string): Map<string, import("../languageService/documentSymbolProvider").IndexResults> | undefined;
47
47
  getDiagnosticsForRange(filePath: string, range: Range, token: CancellationToken): Promise<Diagnostic[]>;
48
48
  writeTypeStub(targetImportPath: string, targetIsSingleFile: boolean, stubPath: string, token: CancellationToken): Promise<any>;
49
- invalidateAndForceReanalysis(rebuildUserFileIndexing: boolean, rebuildLibraryIndexing: boolean): void;
49
+ invalidateAndForceReanalysis(rebuildUserFileIndexing: boolean, rebuildLibraryIndexing: boolean, refreshOptions?: RefreshOptions): void;
50
50
  restart(): void;
51
51
  dispose(): void;
52
52
  private _ensurePartialStubPackages;
@@ -117,9 +117,9 @@ class BackgroundAnalysisProgram {
117
117
  var _a;
118
118
  (_a = this._backgroundAnalysis) === null || _a === void 0 ? void 0 : _a.startIndexing(indexOptions, this._configOptions, this.importResolver, this.host.kind);
119
119
  }
120
- refreshIndexing() {
120
+ refreshIndexing(refreshOptions) {
121
121
  var _a;
122
- (_a = this._backgroundAnalysis) === null || _a === void 0 ? void 0 : _a.refreshIndexing(this._configOptions, this.importResolver, this.host.kind);
122
+ (_a = this._backgroundAnalysis) === null || _a === void 0 ? void 0 : _a.refreshIndexing(this._configOptions, this.importResolver, this.host.kind, refreshOptions);
123
123
  }
124
124
  cancelIndexing() {
125
125
  var _a;
@@ -143,10 +143,10 @@ class BackgroundAnalysisProgram {
143
143
  /* maxTime */ undefined, this._configOptions, this._onAnalysisCompletion, this._console, token);
144
144
  return this._program.writeTypeStub(targetImportPath, targetIsSingleFile, stubPath, token);
145
145
  }
146
- invalidateAndForceReanalysis(rebuildUserFileIndexing, rebuildLibraryIndexing) {
146
+ invalidateAndForceReanalysis(rebuildUserFileIndexing, rebuildLibraryIndexing, refreshOptions) {
147
147
  var _a;
148
148
  if (rebuildLibraryIndexing) {
149
- this.refreshIndexing();
149
+ this.refreshIndexing(refreshOptions);
150
150
  }
151
151
  (_a = this._backgroundAnalysis) === null || _a === void 0 ? void 0 : _a.invalidateAndForceReanalysis(rebuildUserFileIndexing);
152
152
  // Make sure the import resolver doesn't have invalid
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundAnalysisProgram.js","sourceRoot":"","sources":["../../../src/analyzer/backgroundAnalysisProgram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backgroundAnalysisProgram.js","sourceRoot":"","sources":["../../../src/analyzer/backgroundAnalysisProgram.ts"],"names":[],"mappings":"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"}
@@ -106,12 +106,11 @@ export declare class Checker extends ParseTreeWalker {
106
106
  private _conditionallyReportPrivateUsage;
107
107
  private _validateEnumClassOverride;
108
108
  private _validateTypedDictClassSuite;
109
- private _validateStrictTypeGuardFunction;
109
+ private _validateTypeGuardFunction;
110
110
  private _validateDunderSignatures;
111
111
  private _validateFunctionReturn;
112
112
  private _validateFinalMemberOverrides;
113
113
  private _reportDuplicateEnumMembers;
114
- private _validateInitSubclassArgs;
115
114
  private _validateProtocolCompatibility;
116
115
  private _validateDataClassPostInit;
117
116
  private _validateFinalClassNotAbstract;
@@ -215,7 +215,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
215
215
  this._validateFinalClassNotAbstract(classTypeResult.classType, node);
216
216
  this._validateDataClassPostInit(classTypeResult.classType, node);
217
217
  this._validateProtocolCompatibility(classTypeResult.classType, node);
218
- this._validateInitSubclassArgs(classTypeResult.classType, node);
219
218
  this._reportDuplicateEnumMembers(classTypeResult.classType);
220
219
  if (types_1.ClassType.isTypedDictClass(classTypeResult.classType)) {
221
220
  this._validateTypedDictClassSuite(node.suite);
@@ -382,9 +381,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
382
381
  }
383
382
  // Verify common dunder signatures.
384
383
  this._validateDunderSignatures(node, functionTypeResult.functionType, containingClassNode !== undefined);
385
- // Verify that strict type guard functions don't violate the constraints
386
- // of strict type guards.
387
- this._validateStrictTypeGuardFunction(node, functionTypeResult.functionType, containingClassNode !== undefined);
384
+ // Verify TypeGuard or StrictTypeGuard functions.
385
+ this._validateTypeGuardFunction(node, functionTypeResult.functionType, containingClassNode !== undefined);
388
386
  this._validateFunctionTypeVarUsage(node, functionTypeResult);
389
387
  }
390
388
  // If we're at the module level within a stub file, report a diagnostic
@@ -860,9 +858,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
860
858
  if (!this._isUnboundCheckSuppressed) {
861
859
  this._reportUnboundName(node);
862
860
  }
863
- // Report the use of a deprecated symbol. For now, this functionality
864
- // is disabled. We'll leave it in place for the future.
865
- // this._reportDeprecatedUse(node);
861
+ // Report the use of a deprecated symbol.
862
+ const type = this._evaluator.getType(node);
863
+ this._reportDeprecatedUse(node, type);
866
864
  return true;
867
865
  }
868
866
  visitDel(node) {
@@ -873,7 +871,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
873
871
  return false;
874
872
  }
875
873
  visitMemberAccess(node) {
876
- this._evaluator.getType(node);
874
+ const type = this._evaluator.getType(node);
875
+ this._reportDeprecatedUse(node.memberName, type);
877
876
  this._conditionallyReportPrivateUsage(node.memberName);
878
877
  // Walk the leftExpression but not the memberName.
879
878
  this.walk(node.leftExpression);
@@ -911,6 +910,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
911
910
  return true;
912
911
  }
913
912
  visitImportFromAs(node) {
913
+ var _a;
914
914
  if (this._fileInfo.isStubFile) {
915
915
  return false;
916
916
  }
@@ -934,6 +934,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
934
934
  this._addMissingModuleSourceDiagnosticIfNeeded(importResult, node.name);
935
935
  break;
936
936
  }
937
+ const type = this._evaluator.getType((_a = node.alias) !== null && _a !== void 0 ? _a : node.name);
938
+ this._reportDeprecatedUse(node.name, type);
937
939
  return false;
938
940
  }
939
941
  visitModuleName(node) {
@@ -986,7 +988,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
986
988
  return false;
987
989
  }
988
990
  _getImportResult(node, filePath) {
989
- const execEnv = this._importResolver.getConfigOption().findExecEnvironment(filePath);
991
+ const execEnv = this._importResolver.getConfigOptions().findExecEnvironment(filePath);
990
992
  const moduleNameNode = node.parent.module;
991
993
  // Handle both absolute and relative imports.
992
994
  const moduleName = moduleNameNode.leadingDots === 0
@@ -2490,24 +2492,84 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2490
2492
  }
2491
2493
  return false;
2492
2494
  }
2493
- _reportDeprecatedUse(node) {
2495
+ _reportDeprecatedUse(node, type) {
2494
2496
  var _a;
2495
- const deprecatedForm = (_a = deprecatedAliases.get(node.value)) !== null && _a !== void 0 ? _a : deprecatedSpecialForms.get(node.value);
2496
- if (!deprecatedForm) {
2497
- return;
2498
- }
2499
- const type = this._evaluator.getType(node);
2500
2497
  if (!type) {
2501
2498
  return;
2502
2499
  }
2503
- if (!(0, types_1.isInstantiableClass)(type) || type.details.fullName !== deprecatedForm.fullName) {
2504
- return;
2505
- }
2506
- if (this._fileInfo.executionEnvironment.pythonVersion >= deprecatedForm.version) {
2507
- this._evaluator.addDeprecated(localize_1.Localizer.Diagnostic.deprecatedType().format({
2508
- version: (0, pythonVersion_1.versionToString)(deprecatedForm.version),
2509
- replacement: deprecatedForm.replacementText,
2510
- }), node);
2500
+ let errorMessage;
2501
+ let deprecatedMessage;
2502
+ (0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
2503
+ if ((0, types_1.isClass)(subtype)) {
2504
+ if (!subtype.includeSubclasses &&
2505
+ subtype.details.deprecatedMessage !== undefined &&
2506
+ node.value === subtype.details.name) {
2507
+ deprecatedMessage = subtype.details.deprecatedMessage;
2508
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedClass();
2509
+ }
2510
+ }
2511
+ else if ((0, types_1.isFunction)(subtype)) {
2512
+ if (subtype.details.deprecatedMessage !== undefined && node.value === subtype.details.name) {
2513
+ deprecatedMessage = subtype.details.deprecatedMessage;
2514
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedFunction();
2515
+ }
2516
+ }
2517
+ else if ((0, types_1.isOverloadedFunction)(subtype)) {
2518
+ // Determine if the node is part of a call expression. If so,
2519
+ // we can determine which overload(s) were used to satisfy
2520
+ // the call expression and determine whether any of them
2521
+ // are deprecated.
2522
+ const callNode = ParseTreeUtils.getCallForName(node);
2523
+ if (callNode) {
2524
+ const callTypeResult = this._evaluator.getTypeResult(callNode);
2525
+ if (callTypeResult &&
2526
+ callTypeResult.overloadsUsedForCall &&
2527
+ callTypeResult.overloadsUsedForCall.length > 0) {
2528
+ callTypeResult.overloadsUsedForCall.forEach((overload) => {
2529
+ if (overload.details.deprecatedMessage !== undefined &&
2530
+ node.value === overload.details.name) {
2531
+ deprecatedMessage = overload.details.deprecatedMessage;
2532
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedFunction();
2533
+ }
2534
+ });
2535
+ }
2536
+ }
2537
+ }
2538
+ });
2539
+ if (errorMessage) {
2540
+ const diag = new diagnostic_1.DiagnosticAddendum();
2541
+ if (deprecatedMessage) {
2542
+ diag.addMessage(deprecatedMessage);
2543
+ }
2544
+ if (this._fileInfo.diagnosticRuleSet.reportDeprecated === 'none') {
2545
+ this._evaluator.addDeprecated(errorMessage + diag.getString(), node);
2546
+ }
2547
+ else {
2548
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportDeprecated, diagnosticRules_1.DiagnosticRule.reportDeprecated, errorMessage + diag.getString(), node);
2549
+ }
2550
+ }
2551
+ // We'll leave this disabled for now because this would be too noisy for most
2552
+ // code bases. We may want to add it at some future date.
2553
+ if (0) {
2554
+ const deprecatedForm = (_a = deprecatedAliases.get(node.value)) !== null && _a !== void 0 ? _a : deprecatedSpecialForms.get(node.value);
2555
+ if (deprecatedForm) {
2556
+ if ((0, types_1.isInstantiableClass)(type) && type.details.fullName === deprecatedForm.fullName) {
2557
+ if (this._fileInfo.executionEnvironment.pythonVersion >= deprecatedForm.version) {
2558
+ if (this._fileInfo.diagnosticRuleSet.reportDeprecated === 'none') {
2559
+ this._evaluator.addDeprecated(localize_1.Localizer.Diagnostic.deprecatedType().format({
2560
+ version: (0, pythonVersion_1.versionToString)(deprecatedForm.version),
2561
+ replacement: deprecatedForm.replacementText,
2562
+ }), node);
2563
+ }
2564
+ else {
2565
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportDeprecated, diagnosticRules_1.DiagnosticRule.reportDeprecated, localize_1.Localizer.Diagnostic.deprecatedType().format({
2566
+ version: (0, pythonVersion_1.versionToString)(deprecatedForm.version),
2567
+ replacement: deprecatedForm.replacementText,
2568
+ }), node);
2569
+ }
2570
+ }
2571
+ }
2572
+ }
2511
2573
  }
2512
2574
  }
2513
2575
  _reportUnboundName(node) {
@@ -2748,33 +2810,49 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2748
2810
  }
2749
2811
  });
2750
2812
  }
2751
- _validateStrictTypeGuardFunction(node, functionType, isMethod) {
2813
+ _validateTypeGuardFunction(node, functionType, isMethod) {
2752
2814
  var _a;
2753
- // Is this a strict type guard function?
2754
- if (!functionType.details.declaredReturnType) {
2815
+ const returnType = functionType.details.declaredReturnType;
2816
+ if (!returnType) {
2755
2817
  return;
2756
2818
  }
2757
- if (!(0, types_1.isClassInstance)(functionType.details.declaredReturnType) ||
2758
- !types_1.ClassType.isBuiltIn(functionType.details.declaredReturnType, 'StrictTypeGuard') ||
2759
- !functionType.details.declaredReturnType.typeArguments ||
2760
- functionType.details.declaredReturnType.typeArguments.length < 1) {
2819
+ if (!(0, types_1.isClassInstance)(returnType) || !returnType.typeArguments || returnType.typeArguments.length < 1) {
2761
2820
  return;
2762
2821
  }
2763
- const typeGuardType = functionType.details.declaredReturnType.typeArguments[0];
2764
- // Determine the type of the first parameter.
2765
- const paramIndex = isMethod && !types_1.FunctionType.isStaticMethod(functionType) ? 1 : 0;
2766
- if (paramIndex >= functionType.details.parameters.length) {
2822
+ const isNormalTypeGuard = types_1.ClassType.isBuiltIn(returnType, 'TypeGuard');
2823
+ const isStrictTypeGuard = types_1.ClassType.isBuiltIn(returnType, 'StrictTypeGuard');
2824
+ if (!isNormalTypeGuard && !isStrictTypeGuard) {
2767
2825
  return;
2768
2826
  }
2769
- const paramType = types_1.FunctionType.getEffectiveParameterType(functionType, paramIndex);
2770
- // Verify that the typeGuardType is a narrower type than the paramType.
2771
- if (!this._evaluator.assignType(paramType, typeGuardType)) {
2772
- const returnAnnotation = node.returnTypeAnnotation || ((_a = node.functionAnnotationComment) === null || _a === void 0 ? void 0 : _a.returnTypeAnnotation);
2773
- if (returnAnnotation) {
2774
- this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.strictTypeGuardReturnType().format({
2775
- type: this._evaluator.printType(paramType),
2776
- returnType: this._evaluator.printType(typeGuardType),
2777
- }), returnAnnotation);
2827
+ // Make sure there's at least one input parameter provided.
2828
+ let paramCount = functionType.details.parameters.length;
2829
+ if (isMethod) {
2830
+ if (types_1.FunctionType.isInstanceMethod(functionType) ||
2831
+ types_1.FunctionType.isConstructorMethod(functionType) ||
2832
+ types_1.FunctionType.isClassMethod(functionType)) {
2833
+ paramCount--;
2834
+ }
2835
+ }
2836
+ if (paramCount < 1) {
2837
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeGuardParamCount(), node.name);
2838
+ }
2839
+ if (isStrictTypeGuard) {
2840
+ const typeGuardType = returnType.typeArguments[0];
2841
+ // Determine the type of the first parameter.
2842
+ const paramIndex = isMethod && !types_1.FunctionType.isStaticMethod(functionType) ? 1 : 0;
2843
+ if (paramIndex >= functionType.details.parameters.length) {
2844
+ return;
2845
+ }
2846
+ const paramType = types_1.FunctionType.getEffectiveParameterType(functionType, paramIndex);
2847
+ // Verify that the typeGuardType is a narrower type than the paramType.
2848
+ if (!this._evaluator.assignType(paramType, typeGuardType)) {
2849
+ const returnAnnotation = node.returnTypeAnnotation || ((_a = node.functionAnnotationComment) === null || _a === void 0 ? void 0 : _a.returnTypeAnnotation);
2850
+ if (returnAnnotation) {
2851
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.strictTypeGuardReturnType().format({
2852
+ type: this._evaluator.printType(paramType),
2853
+ returnType: this._evaluator.printType(typeGuardType),
2854
+ }), returnAnnotation);
2855
+ }
2778
2856
  }
2779
2857
  }
2780
2858
  }
@@ -2914,22 +2992,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2914
2992
  }
2915
2993
  });
2916
2994
  }
2917
- _validateInitSubclassArgs(classType, node) {
2918
- const argList = [];
2919
- // Collect arguments that will be passed to the `__init_subclass__`
2920
- // method described in PEP 487.
2921
- node.arguments.forEach((arg) => {
2922
- if (arg.name && arg.name.value !== 'metaclass') {
2923
- argList.push({
2924
- argumentCategory: 0 /* Simple */,
2925
- node: arg,
2926
- name: arg.name,
2927
- valueExpression: arg.valueExpression,
2928
- });
2929
- }
2930
- });
2931
- this._evaluator.validateInitSubclassArgs(node, classType, argList);
2932
- }
2933
2995
  // If a non-protocol class explicitly inherits from a protocol class, this method
2934
2996
  // verifies that any class or instance variables declared but not assigned
2935
2997
  // in the protocol class are implemented in the subclass. It also checks that any
@@ -4016,7 +4078,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4016
4078
  if (types_1.FunctionType.isOverloaded(functionType)) {
4017
4079
  return;
4018
4080
  }
4019
- if (!this._evaluator.assignType(paramType, expectedType)) {
4081
+ const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(functionType));
4082
+ if (!this._evaluator.assignType(paramType, expectedType, /* diag */ undefined, typeVarContext)) {
4020
4083
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.clsSelfParamTypeMismatch().format({
4021
4084
  name: paramInfo.name,
4022
4085
  classType: this._evaluator.printType(expectedType),