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

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 (93) 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 -1
  7. package/dist/analyzer/checker.js +128 -42
  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 +4 -2
  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/program.js +13 -12
  16. package/dist/analyzer/program.js.map +1 -1
  17. package/dist/analyzer/service.d.ts +3 -2
  18. package/dist/analyzer/service.js +14 -12
  19. package/dist/analyzer/service.js.map +1 -1
  20. package/dist/analyzer/sourceFile.d.ts +3 -2
  21. package/dist/analyzer/sourceFile.js +4 -4
  22. package/dist/analyzer/sourceFile.js.map +1 -1
  23. package/dist/analyzer/typeCacheUtils.d.ts +2 -1
  24. package/dist/analyzer/typeCacheUtils.js +5 -1
  25. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  26. package/dist/analyzer/typeEvaluator.js +395 -330
  27. package/dist/analyzer/typeEvaluator.js.map +1 -1
  28. package/dist/analyzer/typeEvaluatorTypes.d.ts +18 -12
  29. package/dist/analyzer/typeEvaluatorTypes.js +15 -15
  30. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  31. package/dist/analyzer/typeGuards.js +25 -2
  32. package/dist/analyzer/typeGuards.js.map +1 -1
  33. package/dist/analyzer/typeUtils.d.ts +7 -0
  34. package/dist/analyzer/typeUtils.js +10 -3
  35. package/dist/analyzer/typeUtils.js.map +1 -1
  36. package/dist/analyzer/types.d.ts +3 -0
  37. package/dist/analyzer/types.js +10 -2
  38. package/dist/analyzer/types.js.map +1 -1
  39. package/dist/backgroundAnalysisBase.d.ts +4 -1
  40. package/dist/backgroundAnalysisBase.js +1 -1
  41. package/dist/backgroundAnalysisBase.js.map +1 -1
  42. package/dist/backgroundThreadBase.d.ts +5 -2
  43. package/dist/backgroundThreadBase.js.map +1 -1
  44. package/dist/commands/createTypeStub.js +3 -0
  45. package/dist/commands/createTypeStub.js.map +1 -1
  46. package/dist/common/configOptions.d.ts +1 -0
  47. package/dist/common/configOptions.js +4 -0
  48. package/dist/common/configOptions.js.map +1 -1
  49. package/dist/common/diagnosticRules.d.ts +1 -0
  50. package/dist/common/diagnosticRules.js +1 -0
  51. package/dist/common/diagnosticRules.js.map +1 -1
  52. package/dist/common/fileSystem.d.ts +1 -0
  53. package/dist/common/fileSystem.js.map +1 -1
  54. package/dist/languageServerBase.js +2 -2
  55. package/dist/languageServerBase.js.map +1 -1
  56. package/dist/languageService/documentSymbolCollector.d.ts +12 -4
  57. package/dist/languageService/documentSymbolCollector.js +103 -22
  58. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  59. package/dist/languageService/documentSymbolProvider.js +6 -0
  60. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  61. package/dist/languageService/indentationUtils.d.ts +1 -1
  62. package/dist/languageService/indentationUtils.js +73 -28
  63. package/dist/languageService/indentationUtils.js.map +1 -1
  64. package/dist/languageService/referencesProvider.d.ts +5 -4
  65. package/dist/languageService/referencesProvider.js +15 -10
  66. package/dist/languageService/referencesProvider.js.map +1 -1
  67. package/dist/languageService/renameModuleProvider.js +11 -11
  68. package/dist/languageService/renameModuleProvider.js.map +1 -1
  69. package/dist/localization/localize.d.ts +3 -0
  70. package/dist/localization/localize.js +3 -0
  71. package/dist/localization/localize.js.map +1 -1
  72. package/dist/localization/package.nls.en-us.json +3 -0
  73. package/dist/parser/tokenizer.js +6 -2
  74. package/dist/parser/tokenizer.js.map +1 -1
  75. package/dist/tests/checker.test.js +16 -0
  76. package/dist/tests/checker.test.js.map +1 -1
  77. package/dist/tests/documentSymbolCollector.test.js +86 -5
  78. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  79. package/dist/tests/fourslash/rename.init.fourslash.d.ts +1 -0
  80. package/dist/tests/fourslash/rename.init.fourslash.js +23 -0
  81. package/dist/tests/fourslash/rename.init.fourslash.js.map +1 -0
  82. package/dist/tests/harness/fourslash/testState.d.ts +2 -2
  83. package/dist/tests/harness/fourslash/testState.js +9 -6
  84. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  85. package/dist/tests/indentationUtils.ptvs.test.js +12 -12
  86. package/dist/tests/indentationUtils.ptvs.test.js.map +1 -1
  87. package/dist/tests/indentationUtils.test.js +65 -7
  88. package/dist/tests/indentationUtils.test.js.map +1 -1
  89. package/dist/tests/typeEvaluator1.test.js +8 -0
  90. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  91. package/dist/tests/typeEvaluator3.test.js +6 -2
  92. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  93. 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,7 +106,7 @@ 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;
@@ -382,9 +382,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
382
382
  }
383
383
  // Verify common dunder signatures.
384
384
  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);
385
+ // Verify TypeGuard or StrictTypeGuard functions.
386
+ this._validateTypeGuardFunction(node, functionTypeResult.functionType, containingClassNode !== undefined);
388
387
  this._validateFunctionTypeVarUsage(node, functionTypeResult);
389
388
  }
390
389
  // If we're at the module level within a stub file, report a diagnostic
@@ -860,9 +859,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
860
859
  if (!this._isUnboundCheckSuppressed) {
861
860
  this._reportUnboundName(node);
862
861
  }
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);
862
+ // Report the use of a deprecated symbol.
863
+ const type = this._evaluator.getType(node);
864
+ this._reportDeprecatedUse(node, type);
866
865
  return true;
867
866
  }
868
867
  visitDel(node) {
@@ -873,7 +872,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
873
872
  return false;
874
873
  }
875
874
  visitMemberAccess(node) {
876
- this._evaluator.getType(node);
875
+ const type = this._evaluator.getType(node);
876
+ this._reportDeprecatedUse(node.memberName, type);
877
877
  this._conditionallyReportPrivateUsage(node.memberName);
878
878
  // Walk the leftExpression but not the memberName.
879
879
  this.walk(node.leftExpression);
@@ -911,6 +911,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
911
911
  return true;
912
912
  }
913
913
  visitImportFromAs(node) {
914
+ var _a;
914
915
  if (this._fileInfo.isStubFile) {
915
916
  return false;
916
917
  }
@@ -934,6 +935,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
934
935
  this._addMissingModuleSourceDiagnosticIfNeeded(importResult, node.name);
935
936
  break;
936
937
  }
938
+ const type = this._evaluator.getType((_a = node.alias) !== null && _a !== void 0 ? _a : node.name);
939
+ this._reportDeprecatedUse(node.name, type);
937
940
  return false;
938
941
  }
939
942
  visitModuleName(node) {
@@ -2490,24 +2493,90 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2490
2493
  }
2491
2494
  return false;
2492
2495
  }
2493
- _reportDeprecatedUse(node) {
2496
+ _reportDeprecatedUse(node, type) {
2494
2497
  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
2498
  if (!type) {
2501
2499
  return;
2502
2500
  }
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);
2501
+ let errorMessage;
2502
+ let deprecatedMessage;
2503
+ (0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
2504
+ var _a, _b, _c;
2505
+ if ((0, types_1.isClass)(subtype)) {
2506
+ if (!subtype.includeSubclasses &&
2507
+ subtype.details.deprecatedMessage !== undefined &&
2508
+ node.value === subtype.details.name) {
2509
+ deprecatedMessage = subtype.details.deprecatedMessage;
2510
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedClass();
2511
+ }
2512
+ }
2513
+ else if ((0, types_1.isFunction)(subtype)) {
2514
+ if (subtype.details.deprecatedMessage !== undefined && node.value === subtype.details.name) {
2515
+ deprecatedMessage = subtype.details.deprecatedMessage;
2516
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedFunction();
2517
+ }
2518
+ }
2519
+ else if ((0, types_1.isOverloadedFunction)(subtype)) {
2520
+ // Determine if the node is part of a call expression. If so,
2521
+ // we can determine which overload(s) were used to satisfy
2522
+ // the call expression and determine whether any of them
2523
+ // are deprecated.
2524
+ let callTypeResult;
2525
+ if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 9 /* Call */ && node.parent.leftExpression === node) {
2526
+ callTypeResult = this._evaluator.getTypeResult(node.parent);
2527
+ }
2528
+ else if (((_b = node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 35 /* MemberAccess */ &&
2529
+ node.parent.memberName === node &&
2530
+ ((_c = node.parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 9 /* Call */ &&
2531
+ node.parent.parent.leftExpression === node.parent) {
2532
+ callTypeResult = this._evaluator.getTypeResult(node.parent.parent);
2533
+ }
2534
+ if (callTypeResult &&
2535
+ callTypeResult.overloadsUsedForCall &&
2536
+ callTypeResult.overloadsUsedForCall.length > 0) {
2537
+ callTypeResult.overloadsUsedForCall.forEach((overload) => {
2538
+ if (overload.details.deprecatedMessage !== undefined && node.value === overload.details.name) {
2539
+ deprecatedMessage = overload.details.deprecatedMessage;
2540
+ errorMessage = localize_1.Localizer.Diagnostic.deprecatedFunction();
2541
+ }
2542
+ });
2543
+ }
2544
+ }
2545
+ });
2546
+ if (errorMessage) {
2547
+ const diag = new diagnostic_1.DiagnosticAddendum();
2548
+ if (deprecatedMessage) {
2549
+ diag.addMessage(deprecatedMessage);
2550
+ }
2551
+ if (this._fileInfo.diagnosticRuleSet.reportDeprecated === 'none') {
2552
+ this._evaluator.addDeprecated(errorMessage + diag.getString(), node);
2553
+ }
2554
+ else {
2555
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportDeprecated, diagnosticRules_1.DiagnosticRule.reportDeprecated, errorMessage + diag.getString(), node);
2556
+ }
2557
+ }
2558
+ // We'll leave this disabled for now because this would be too noisy for most
2559
+ // code bases. We may want to add it at some future date.
2560
+ if (0) {
2561
+ const deprecatedForm = (_a = deprecatedAliases.get(node.value)) !== null && _a !== void 0 ? _a : deprecatedSpecialForms.get(node.value);
2562
+ if (deprecatedForm) {
2563
+ if ((0, types_1.isInstantiableClass)(type) && type.details.fullName === deprecatedForm.fullName) {
2564
+ if (this._fileInfo.executionEnvironment.pythonVersion >= deprecatedForm.version) {
2565
+ if (this._fileInfo.diagnosticRuleSet.reportDeprecated === 'none') {
2566
+ this._evaluator.addDeprecated(localize_1.Localizer.Diagnostic.deprecatedType().format({
2567
+ version: (0, pythonVersion_1.versionToString)(deprecatedForm.version),
2568
+ replacement: deprecatedForm.replacementText,
2569
+ }), node);
2570
+ }
2571
+ else {
2572
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportDeprecated, diagnosticRules_1.DiagnosticRule.reportDeprecated, localize_1.Localizer.Diagnostic.deprecatedType().format({
2573
+ version: (0, pythonVersion_1.versionToString)(deprecatedForm.version),
2574
+ replacement: deprecatedForm.replacementText,
2575
+ }), node);
2576
+ }
2577
+ }
2578
+ }
2579
+ }
2511
2580
  }
2512
2581
  }
2513
2582
  _reportUnboundName(node) {
@@ -2748,33 +2817,49 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2748
2817
  }
2749
2818
  });
2750
2819
  }
2751
- _validateStrictTypeGuardFunction(node, functionType, isMethod) {
2820
+ _validateTypeGuardFunction(node, functionType, isMethod) {
2752
2821
  var _a;
2753
- // Is this a strict type guard function?
2754
- if (!functionType.details.declaredReturnType) {
2822
+ const returnType = functionType.details.declaredReturnType;
2823
+ if (!returnType) {
2755
2824
  return;
2756
2825
  }
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) {
2826
+ if (!(0, types_1.isClassInstance)(returnType) || !returnType.typeArguments || returnType.typeArguments.length < 1) {
2761
2827
  return;
2762
2828
  }
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) {
2829
+ const isNormalTypeGuard = types_1.ClassType.isBuiltIn(returnType, 'TypeGuard');
2830
+ const isStrictTypeGuard = types_1.ClassType.isBuiltIn(returnType, 'StrictTypeGuard');
2831
+ if (!isNormalTypeGuard && !isStrictTypeGuard) {
2767
2832
  return;
2768
2833
  }
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);
2834
+ // Make sure there's at least one input parameter provided.
2835
+ let paramCount = functionType.details.parameters.length;
2836
+ if (isMethod) {
2837
+ if (types_1.FunctionType.isInstanceMethod(functionType) ||
2838
+ types_1.FunctionType.isConstructorMethod(functionType) ||
2839
+ types_1.FunctionType.isClassMethod(functionType)) {
2840
+ paramCount--;
2841
+ }
2842
+ }
2843
+ if (paramCount < 1) {
2844
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeGuardParamCount(), node.name);
2845
+ }
2846
+ if (isStrictTypeGuard) {
2847
+ const typeGuardType = returnType.typeArguments[0];
2848
+ // Determine the type of the first parameter.
2849
+ const paramIndex = isMethod && !types_1.FunctionType.isStaticMethod(functionType) ? 1 : 0;
2850
+ if (paramIndex >= functionType.details.parameters.length) {
2851
+ return;
2852
+ }
2853
+ const paramType = types_1.FunctionType.getEffectiveParameterType(functionType, paramIndex);
2854
+ // Verify that the typeGuardType is a narrower type than the paramType.
2855
+ if (!this._evaluator.assignType(paramType, typeGuardType)) {
2856
+ const returnAnnotation = node.returnTypeAnnotation || ((_a = node.functionAnnotationComment) === null || _a === void 0 ? void 0 : _a.returnTypeAnnotation);
2857
+ if (returnAnnotation) {
2858
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.strictTypeGuardReturnType().format({
2859
+ type: this._evaluator.printType(paramType),
2860
+ returnType: this._evaluator.printType(typeGuardType),
2861
+ }), returnAnnotation);
2862
+ }
2778
2863
  }
2779
2864
  }
2780
2865
  }
@@ -4016,7 +4101,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4016
4101
  if (types_1.FunctionType.isOverloaded(functionType)) {
4017
4102
  return;
4018
4103
  }
4019
- if (!this._evaluator.assignType(paramType, expectedType)) {
4104
+ const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(functionType));
4105
+ if (!this._evaluator.assignType(paramType, expectedType, /* diag */ undefined, typeVarContext)) {
4020
4106
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.clsSelfParamTypeMismatch().format({
4021
4107
  name: paramInfo.name,
4022
4108
  classType: this._evaluator.printType(expectedType),