@zzzen/pyright-internal 1.2.0-dev.20230430 → 1.2.0-dev.20230507

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 (160) hide show
  1. package/dist/analyzer/backgroundAnalysisProgram.d.ts +3 -0
  2. package/dist/analyzer/backgroundAnalysisProgram.js +12 -0
  3. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  4. package/dist/analyzer/checker.d.ts +1 -0
  5. package/dist/analyzer/checker.js +52 -4
  6. package/dist/analyzer/checker.js.map +1 -1
  7. package/dist/analyzer/constructors.d.ts +6 -0
  8. package/dist/analyzer/constructors.js +456 -0
  9. package/dist/analyzer/constructors.js.map +1 -0
  10. package/dist/analyzer/dataClasses.js +84 -0
  11. package/dist/analyzer/dataClasses.js.map +1 -1
  12. package/dist/analyzer/enums.js +54 -8
  13. package/dist/analyzer/enums.js.map +1 -1
  14. package/dist/analyzer/importStatementUtils.d.ts +2 -2
  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/operations.d.ts +16 -0
  19. package/dist/analyzer/operations.js +749 -0
  20. package/dist/analyzer/operations.js.map +1 -0
  21. package/dist/analyzer/parseTreeUtils.d.ts +4 -2
  22. package/dist/analyzer/parseTreeUtils.js +32 -1
  23. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  24. package/dist/analyzer/patternMatching.js +16 -0
  25. package/dist/analyzer/patternMatching.js.map +1 -1
  26. package/dist/analyzer/program.d.ts +5 -17
  27. package/dist/analyzer/program.js +46 -493
  28. package/dist/analyzer/program.js.map +1 -1
  29. package/dist/analyzer/service.d.ts +3 -11
  30. package/dist/analyzer/service.js +16 -12
  31. package/dist/analyzer/service.js.map +1 -1
  32. package/dist/analyzer/sourceFile.d.ts +10 -33
  33. package/dist/analyzer/sourceFile.js +225 -181
  34. package/dist/analyzer/sourceFile.js.map +1 -1
  35. package/dist/analyzer/sourceFileInfoUtils.d.ts +3 -9
  36. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  37. package/dist/analyzer/typeEvaluator.js +100 -1285
  38. package/dist/analyzer/typeEvaluator.js.map +1 -1
  39. package/dist/analyzer/typeEvaluatorTypes.d.ts +38 -7
  40. package/dist/analyzer/typeEvaluatorTypes.js +33 -1
  41. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  42. package/dist/analyzer/typeGuards.js +2 -8
  43. package/dist/analyzer/typeGuards.js.map +1 -1
  44. package/dist/analyzer/typeUtils.d.ts +2 -0
  45. package/dist/analyzer/typeUtils.js +33 -3
  46. package/dist/analyzer/typeUtils.js.map +1 -1
  47. package/dist/analyzer/typeVarContext.d.ts +5 -5
  48. package/dist/analyzer/typeVarContext.js +7 -0
  49. package/dist/analyzer/typeVarContext.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 +4 -2
  53. package/dist/analyzer/types.js +7 -0
  54. package/dist/analyzer/types.js.map +1 -1
  55. package/dist/common/extensibility.d.ts +2 -1
  56. package/dist/common/extensibility.js.map +1 -1
  57. package/dist/common/pathUtils.d.ts +11 -11
  58. package/dist/common/pathUtils.js.map +1 -1
  59. package/dist/common/workspaceEditUtils.d.ts +5 -5
  60. package/dist/common/workspaceEditUtils.js.map +1 -1
  61. package/dist/languageServerBase.d.ts +1 -2
  62. package/dist/languageServerBase.js +8 -13
  63. package/dist/languageServerBase.js.map +1 -1
  64. package/dist/languageService/callHierarchyProvider.d.ts +1 -1
  65. package/dist/languageService/callHierarchyProvider.js +5 -5
  66. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  67. package/dist/languageService/completionProvider.d.ts +10 -13
  68. package/dist/languageService/completionProvider.js +21 -10
  69. package/dist/languageService/completionProvider.js.map +1 -1
  70. package/dist/languageService/documentHighlightProvider.js +1 -1
  71. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  72. package/dist/languageService/documentSymbolCollector.d.ts +6 -7
  73. package/dist/languageService/documentSymbolCollector.js +17 -8
  74. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  75. package/dist/languageService/hoverProvider.d.ts +4 -3
  76. package/dist/languageService/hoverProvider.js +29 -35
  77. package/dist/languageService/hoverProvider.js.map +1 -1
  78. package/dist/languageService/referencesProvider.d.ts +7 -12
  79. package/dist/languageService/referencesProvider.js +25 -17
  80. package/dist/languageService/referencesProvider.js.map +1 -1
  81. package/dist/languageService/renameProvider.d.ts +17 -0
  82. package/dist/languageService/renameProvider.js +143 -0
  83. package/dist/languageService/renameProvider.js.map +1 -0
  84. package/dist/localization/localize.d.ts +17 -14
  85. package/dist/localization/localize.js +4 -6
  86. package/dist/localization/localize.js.map +1 -1
  87. package/dist/localization/package.nls.en-us.json +5 -6
  88. package/dist/tests/documentSymbolCollector.test.js +3 -3
  89. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  90. package/dist/tests/fourslash/fourslash.d.ts +4 -4
  91. package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js +1 -1
  92. package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js.map +1 -1
  93. package/dist/tests/harness/fourslash/testState.d.ts +3 -3
  94. package/dist/tests/harness/fourslash/testState.js +14 -14
  95. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  96. package/dist/tests/sourceFile.test.js +1 -1
  97. package/dist/tests/sourceFile.test.js.map +1 -1
  98. package/dist/tests/testStateUtils.d.ts +2 -2
  99. package/dist/tests/testStateUtils.js +38 -8
  100. package/dist/tests/testStateUtils.js.map +1 -1
  101. package/dist/tests/typeEvaluator2.test.js +1 -1
  102. package/dist/tests/typeEvaluator3.test.js +1 -1
  103. package/dist/tests/typeEvaluator4.test.js +9 -1
  104. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  105. package/dist/tests/typeEvaluator5.test.js +4 -0
  106. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  107. package/dist/tests/workspaceEditUtils.test.js +84 -0
  108. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  109. package/package.json +4 -4
  110. package/dist/languageService/indentationUtils.d.ts +0 -16
  111. package/dist/languageService/indentationUtils.js +0 -727
  112. package/dist/languageService/indentationUtils.js.map +0 -1
  113. package/dist/languageService/insertionPointUtils.d.ts +0 -9
  114. package/dist/languageService/insertionPointUtils.js +0 -132
  115. package/dist/languageService/insertionPointUtils.js.map +0 -1
  116. package/dist/languageService/renameModuleProvider.d.ts +0 -65
  117. package/dist/languageService/renameModuleProvider.js +0 -939
  118. package/dist/languageService/renameModuleProvider.js.map +0 -1
  119. package/dist/tests/indentationUtils.ptvs.test.d.ts +0 -1
  120. package/dist/tests/indentationUtils.ptvs.test.js +0 -324
  121. package/dist/tests/indentationUtils.ptvs.test.js.map +0 -1
  122. package/dist/tests/indentationUtils.reindent.test.d.ts +0 -1
  123. package/dist/tests/indentationUtils.reindent.test.js +0 -372
  124. package/dist/tests/indentationUtils.reindent.test.js.map +0 -1
  125. package/dist/tests/indentationUtils.test.d.ts +0 -1
  126. package/dist/tests/indentationUtils.test.js +0 -502
  127. package/dist/tests/indentationUtils.test.js.map +0 -1
  128. package/dist/tests/insertionPointUtils.test.d.ts +0 -1
  129. package/dist/tests/insertionPointUtils.test.js +0 -154
  130. package/dist/tests/insertionPointUtils.test.js.map +0 -1
  131. package/dist/tests/moveSymbol.importAdder.test.d.ts +0 -1
  132. package/dist/tests/moveSymbol.importAdder.test.js +0 -298
  133. package/dist/tests/moveSymbol.importAdder.test.js.map +0 -1
  134. package/dist/tests/moveSymbol.insertion.test.d.ts +0 -1
  135. package/dist/tests/moveSymbol.insertion.test.js +0 -537
  136. package/dist/tests/moveSymbol.insertion.test.js.map +0 -1
  137. package/dist/tests/moveSymbol.misc.test.d.ts +0 -1
  138. package/dist/tests/moveSymbol.misc.test.js +0 -169
  139. package/dist/tests/moveSymbol.misc.test.js.map +0 -1
  140. package/dist/tests/moveSymbol.updateReference.test.d.ts +0 -1
  141. package/dist/tests/moveSymbol.updateReference.test.js +0 -1071
  142. package/dist/tests/moveSymbol.updateReference.test.js.map +0 -1
  143. package/dist/tests/renameModule.folder.test.d.ts +0 -1
  144. package/dist/tests/renameModule.folder.test.js +0 -229
  145. package/dist/tests/renameModule.folder.test.js.map +0 -1
  146. package/dist/tests/renameModule.fromImports.test.d.ts +0 -1
  147. package/dist/tests/renameModule.fromImports.test.js +0 -790
  148. package/dist/tests/renameModule.fromImports.test.js.map +0 -1
  149. package/dist/tests/renameModule.imports.test.d.ts +0 -1
  150. package/dist/tests/renameModule.imports.test.js +0 -380
  151. package/dist/tests/renameModule.imports.test.js.map +0 -1
  152. package/dist/tests/renameModule.misc.test.d.ts +0 -1
  153. package/dist/tests/renameModule.misc.test.js +0 -615
  154. package/dist/tests/renameModule.misc.test.js.map +0 -1
  155. package/dist/tests/renameModule.relativePath.test.d.ts +0 -1
  156. package/dist/tests/renameModule.relativePath.test.js +0 -231
  157. package/dist/tests/renameModule.relativePath.test.js.map +0 -1
  158. package/dist/tests/renameModuleTestUtils.d.ts +0 -4
  159. package/dist/tests/renameModuleTestUtils.js +0 -76
  160. package/dist/tests/renameModuleTestUtils.js.map +0 -1
@@ -18,6 +18,7 @@ export declare class BackgroundAnalysisProgram {
18
18
  private _program;
19
19
  private _disposed;
20
20
  private _onAnalysisCompletion;
21
+ private _preEditAnalysis;
21
22
  constructor(_console: ConsoleInterface, _configOptions: ConfigOptions, _importResolver: ImportResolver, _backgroundAnalysis?: BackgroundAnalysisBase | undefined, _maxAnalysisTime?: MaxAnalysisTime | undefined, _disableChecker?: boolean | undefined, cacheManager?: CacheManager);
22
23
  get configOptions(): ConfigOptions;
23
24
  get importResolver(): ImportResolver;
@@ -50,6 +51,8 @@ export declare class BackgroundAnalysisProgram {
50
51
  invalidateAndForceReanalysis(rebuildUserFileIndexing: boolean, rebuildLibraryIndexing: boolean, refreshOptions?: RefreshOptions): void;
51
52
  restart(): void;
52
53
  dispose(): void;
54
+ enterEditMode(): void;
55
+ exitEditMode(): import("../common/editAction").FileEditAction[];
53
56
  protected getIndices(): Indices | undefined;
54
57
  private _ensurePartialStubPackages;
55
58
  private _reportDiagnosticsForRemovedFiles;
@@ -174,6 +174,18 @@ class BackgroundAnalysisProgram {
174
174
  this._program.dispose();
175
175
  (_a = this._backgroundAnalysis) === null || _a === void 0 ? void 0 : _a.shutdown();
176
176
  }
177
+ enterEditMode() {
178
+ // Turn off analysis while in edit mode.
179
+ this._preEditAnalysis = this._backgroundAnalysis;
180
+ this._backgroundAnalysis = undefined;
181
+ // Forward this request to the program.
182
+ this._program.enterEditMode();
183
+ }
184
+ exitEditMode() {
185
+ this._backgroundAnalysis = this._preEditAnalysis;
186
+ this._preEditAnalysis = undefined;
187
+ return this._program.exitEditMode();
188
+ }
177
189
  getIndices() {
178
190
  return undefined;
179
191
  }
@@ -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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"}
@@ -71,6 +71,7 @@ export declare class Checker extends ParseTreeWalker {
71
71
  visitError(node: ErrorNode): boolean;
72
72
  private _getImportResult;
73
73
  private _addMissingModuleSourceDiagnosticIfNeeded;
74
+ private _validateConditionalIsBool;
74
75
  private _reportUnnecessaryConditionExpression;
75
76
  private _reportUnusedExpression;
76
77
  private _validateExhaustiveMatch;
@@ -510,16 +510,17 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
510
510
  return true;
511
511
  }
512
512
  visitListComprehensionIf(node) {
513
+ this._validateConditionalIsBool(node.testExpression);
513
514
  this._reportUnnecessaryConditionExpression(node.testExpression);
514
515
  return true;
515
516
  }
516
517
  visitIf(node) {
517
- this._evaluator.getType(node.testExpression);
518
+ this._validateConditionalIsBool(node.testExpression);
518
519
  this._reportUnnecessaryConditionExpression(node.testExpression);
519
520
  return true;
520
521
  }
521
522
  visitWhile(node) {
522
- this._evaluator.getType(node.testExpression);
523
+ this._validateConditionalIsBool(node.testExpression);
523
524
  this._reportUnnecessaryConditionExpression(node.testExpression);
524
525
  return true;
525
526
  }
@@ -694,6 +695,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
694
695
  if (node.exceptionExpression) {
695
696
  this._evaluator.getType(node.exceptionExpression);
696
697
  }
698
+ this._validateConditionalIsBool(node.testExpression);
697
699
  // Specifically look for a common programming error where the two arguments
698
700
  // to an assert are enclosed in parens and interpreted as a two-element tuple.
699
701
  // assert (x > 3, "bad value x")
@@ -776,6 +778,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
776
778
  return true;
777
779
  }
778
780
  visitBinaryOperation(node) {
781
+ if (node.operator === 36 /* And */ || node.operator === 37 /* Or */) {
782
+ this._validateConditionalIsBool(node.leftExpression);
783
+ this._validateConditionalIsBool(node.rightExpression);
784
+ }
779
785
  if (node.operator === 12 /* Equals */ || node.operator === 28 /* NotEquals */) {
780
786
  // Don't apply this rule if it's within an assert.
781
787
  if (!ParseTreeUtils.isWithinAssertExpression(node)) {
@@ -810,11 +816,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
810
816
  return true;
811
817
  }
812
818
  visitUnaryOperation(node) {
819
+ if (node.operator === 38 /* Not */) {
820
+ this._validateConditionalIsBool(node.expression);
821
+ }
813
822
  this._evaluator.getType(node);
814
823
  return true;
815
824
  }
816
825
  visitTernary(node) {
817
826
  this._evaluator.getType(node);
827
+ this._validateConditionalIsBool(node.testExpression);
818
828
  this._reportUnnecessaryConditionExpression(node.testExpression);
819
829
  return true;
820
830
  }
@@ -989,7 +999,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
989
999
  }
990
1000
  visitCase(node) {
991
1001
  if (node.guardExpression) {
992
- this._evaluator.getType(node.guardExpression);
1002
+ this._validateConditionalIsBool(node.guardExpression);
993
1003
  }
994
1004
  this._evaluator.evaluateTypesForStatement(node.pattern);
995
1005
  return true;
@@ -1036,6 +1046,44 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1036
1046
  importName: importResult.importName,
1037
1047
  }), node);
1038
1048
  }
1049
+ _validateConditionalIsBool(node) {
1050
+ const operandType = this._evaluator.getType(node);
1051
+ if (!operandType) {
1052
+ return;
1053
+ }
1054
+ let isTypeBool = true;
1055
+ const diag = new diagnostic_1.DiagnosticAddendum();
1056
+ this._evaluator.mapSubtypesExpandTypeVars(operandType, /* conditionFilter */ undefined, (expandedSubtype) => {
1057
+ if ((0, types_1.isAnyOrUnknown)(expandedSubtype)) {
1058
+ return undefined;
1059
+ }
1060
+ // If it's a bool (the common case), we're good.
1061
+ if ((0, types_1.isClassInstance)(expandedSubtype) && types_1.ClassType.isBuiltIn(expandedSubtype, 'bool')) {
1062
+ return undefined;
1063
+ }
1064
+ // Invoke the __bool__ method on the type.
1065
+ const boolReturnType = this._evaluator.getTypeOfMagicMethodReturn(expandedSubtype, [], '__bool__', node,
1066
+ /* inferenceContext */ undefined);
1067
+ if (!boolReturnType || (0, types_1.isAnyOrUnknown)(boolReturnType)) {
1068
+ return undefined;
1069
+ }
1070
+ if ((0, types_1.isClassInstance)(boolReturnType) && types_1.ClassType.isBuiltIn(boolReturnType, 'bool')) {
1071
+ return undefined;
1072
+ }
1073
+ // All other types are problematic.
1074
+ isTypeBool = false;
1075
+ diag.addMessage(localize_1.Localizer.DiagnosticAddendum.conditionalRequiresBool().format({
1076
+ operandType: this._evaluator.printType(expandedSubtype),
1077
+ boolReturnType: this._evaluator.printType(boolReturnType),
1078
+ }));
1079
+ return undefined;
1080
+ });
1081
+ if (!isTypeBool) {
1082
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.conditionalOperandInvalid().format({
1083
+ type: this._evaluator.printType(operandType),
1084
+ }) + diag.getString(), node);
1085
+ }
1086
+ }
1039
1087
  _reportUnnecessaryConditionExpression(expression) {
1040
1088
  if (expression.nodeType === 7 /* BinaryOperation */) {
1041
1089
  if (expression.operator === 36 /* And */ || expression.operator === 37 /* Or */) {
@@ -1385,7 +1433,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1385
1433
  ``;
1386
1434
  if (nameType && (0, types_1.isTypeVar)(nameType) && !nameType.details.isSynthesizedSelf) {
1387
1435
  // Does this name refer to a TypeVar that is scoped to this function?
1388
- if (nameType.scopeId === this._evaluator.getScopeIdForNode(node)) {
1436
+ if (nameType.scopeId === ParseTreeUtils.getScopeIdForNode(node)) {
1389
1437
  // We exempt constrained TypeVars, bound TypeVars that are type arguments of
1390
1438
  // other types, and ParamSpecs. There are legitimate uses for singleton
1391
1439
  // instances in these particular cases.