@zzzen/pyright-internal 1.2.0-dev.20231210 → 1.2.0-dev.20231224

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 (101) hide show
  1. package/dist/analyzer/binder.js +22 -18
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/codeFlowEngine.js +25 -13
  4. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  5. package/dist/analyzer/codeFlowTypes.d.ts +0 -1
  6. package/dist/analyzer/codeFlowTypes.js.map +1 -1
  7. package/dist/analyzer/decorators.js +14 -43
  8. package/dist/analyzer/decorators.js.map +1 -1
  9. package/dist/analyzer/importResolver.js +1 -1
  10. package/dist/analyzer/importResolver.js.map +1 -1
  11. package/dist/analyzer/operations.d.ts +1 -1
  12. package/dist/analyzer/operations.js +16 -1
  13. package/dist/analyzer/operations.js.map +1 -1
  14. package/dist/analyzer/packageTypeVerifier.d.ts +5 -1
  15. package/dist/analyzer/packageTypeVerifier.js +59 -41
  16. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  17. package/dist/analyzer/parameterUtils.js +1 -1
  18. package/dist/analyzer/parameterUtils.js.map +1 -1
  19. package/dist/analyzer/parseTreeUtils.js +1 -1
  20. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  21. package/dist/analyzer/patternMatching.js +23 -0
  22. package/dist/analyzer/patternMatching.js.map +1 -1
  23. package/dist/analyzer/properties.js +3 -0
  24. package/dist/analyzer/properties.js.map +1 -1
  25. package/dist/analyzer/protocols.js +18 -6
  26. package/dist/analyzer/protocols.js.map +1 -1
  27. package/dist/analyzer/service.js +12 -10
  28. package/dist/analyzer/service.js.map +1 -1
  29. package/dist/analyzer/sourceMapper.js +3 -2
  30. package/dist/analyzer/sourceMapper.js.map +1 -1
  31. package/dist/analyzer/typeEvaluator.js +144 -120
  32. package/dist/analyzer/typeEvaluator.js.map +1 -1
  33. package/dist/analyzer/typeEvaluatorTypes.d.ts +4 -4
  34. package/dist/analyzer/typeGuards.d.ts +1 -0
  35. package/dist/analyzer/typeGuards.js +9 -7
  36. package/dist/analyzer/typeGuards.js.map +1 -1
  37. package/dist/analyzer/typeUtils.d.ts +2 -1
  38. package/dist/analyzer/typeUtils.js +35 -12
  39. package/dist/analyzer/typeUtils.js.map +1 -1
  40. package/dist/analyzer/typeVarContext.d.ts +0 -1
  41. package/dist/analyzer/typeVarContext.js +4 -5
  42. package/dist/analyzer/typeVarContext.js.map +1 -1
  43. package/dist/analyzer/types.d.ts +7 -4
  44. package/dist/analyzer/types.js +10 -7
  45. package/dist/analyzer/types.js.map +1 -1
  46. package/dist/common/fileWatcher.d.ts +1 -1
  47. package/dist/common/realFileSystem.js +1 -1
  48. package/dist/common/realFileSystem.js.map +1 -1
  49. package/dist/common/uri/emptyUri.js +1 -25
  50. package/dist/common/uri/emptyUri.js.map +1 -1
  51. package/dist/common/uri/webUri.js +1 -25
  52. package/dist/common/uri/webUri.js.map +1 -1
  53. package/dist/common/workspaceEditUtils.js +3 -3
  54. package/dist/common/workspaceEditUtils.js.map +1 -1
  55. package/dist/languageService/documentSymbolCollector.js +1 -1
  56. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  57. package/dist/languageService/symbolIndexer.js +10 -2
  58. package/dist/languageService/symbolIndexer.js.map +1 -1
  59. package/dist/localization/localize.d.ts +4 -0
  60. package/dist/localization/localize.js +4 -0
  61. package/dist/localization/localize.js.map +1 -1
  62. package/dist/localization/package.nls.en-us.json +4 -0
  63. package/dist/parser/parseNodes.d.ts +1 -0
  64. package/dist/parser/parseNodes.js +1 -0
  65. package/dist/parser/parseNodes.js.map +1 -1
  66. package/dist/parser/parser.js +18 -15
  67. package/dist/parser/parser.js.map +1 -1
  68. package/dist/pyright.js +10 -7
  69. package/dist/pyright.js.map +1 -1
  70. package/dist/tests/classDeclaration.test.d.ts +1 -0
  71. package/dist/tests/classDeclaration.test.js +166 -0
  72. package/dist/tests/classDeclaration.test.js.map +1 -0
  73. package/dist/tests/fourslash/fourslash.d.ts +1 -0
  74. package/dist/tests/fourslash/fourslash.js +2 -2
  75. package/dist/tests/fourslash/rename.parens.fourslash.d.ts +1 -0
  76. package/dist/tests/fourslash/rename.parens.fourslash.js +20 -0
  77. package/dist/tests/fourslash/rename.parens.fourslash.js.map +1 -0
  78. package/dist/tests/fourslash/typeVerifier.fourslash.d.ts +1 -0
  79. package/dist/tests/fourslash/typeVerifier.fourslash.js +47 -0
  80. package/dist/tests/fourslash/typeVerifier.fourslash.js.map +1 -0
  81. package/dist/tests/harness/fourslash/testState.d.ts +2 -0
  82. package/dist/tests/harness/fourslash/testState.js +16 -0
  83. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  84. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +4 -0
  85. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
  86. package/dist/tests/harness/vfs/filesystem.js +1 -1
  87. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  88. package/dist/tests/importResolver.test.js +25 -0
  89. package/dist/tests/importResolver.test.js.map +1 -1
  90. package/dist/tests/sourceMapperUtils.test.js +60 -29
  91. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  92. package/dist/tests/typeEvaluator1.test.js +1 -1
  93. package/dist/tests/typeEvaluator2.test.js +8 -0
  94. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  95. package/dist/tests/typeEvaluator3.test.js +17 -1
  96. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  97. package/dist/tests/typeEvaluator4.test.js +13 -1
  98. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  99. package/dist/tests/uri.test.js +4 -0
  100. package/dist/tests/uri.test.js.map +1 -1
  101. package/package.json +1 -1
@@ -120,7 +120,6 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
120
120
  // Bind implicit names.
121
121
  // List taken from https://docs.python.org/3/reference/import.html#__name__
122
122
  this._addImplicitSymbolToCurrentScope('__name__', node, 'str');
123
- this._addImplicitSymbolToCurrentScope('__qualname__', node, 'str');
124
123
  this._addImplicitSymbolToCurrentScope('__loader__', node, 'Any');
125
124
  this._addImplicitSymbolToCurrentScope('__package__', node, 'str');
126
125
  this._addImplicitSymbolToCurrentScope('__spec__', node, 'Any');
@@ -244,6 +243,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
244
243
  AnalyzerNodeInfo.setScope(node, this._currentScope);
245
244
  this._addImplicitSymbolToCurrentScope('__doc__', node, 'str | None');
246
245
  this._addImplicitSymbolToCurrentScope('__module__', node, 'str');
246
+ this._addImplicitSymbolToCurrentScope('__qualname__', node, 'str');
247
247
  this._dunderSlotsEntries = undefined;
248
248
  if (!this._moduleSymbolOnly) {
249
249
  // Analyze the suite.
@@ -1111,7 +1111,6 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
1111
1111
  flags: codeFlowTypes_1.FlowFlags.PreFinallyGate,
1112
1112
  id: this._getUniqueFlowNodeId(),
1113
1113
  antecedent: preFinallyReturnOrRaiseLabel,
1114
- isGateClosed: false,
1115
1114
  };
1116
1115
  preFinallyLabel.affectedExpressions = this._trackCodeFlowExpressions(() => {
1117
1116
  if (node.finallySuite) {
@@ -1460,7 +1459,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
1460
1459
  loadSymbolsFromPath: true,
1461
1460
  range: (0, textRange_1.getEmptyRange)(),
1462
1461
  usesLocalName: false,
1463
- moduleName: this._formatModuleName(node.module.nameParts),
1462
+ moduleName: this._formatModuleName(node.module),
1464
1463
  isInExceptSuite: this._isInExceptSuite,
1465
1464
  };
1466
1465
  // Handle the case where this is an __init__.py file and the imported
@@ -1486,7 +1485,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
1486
1485
  symbolName: importedName,
1487
1486
  submoduleFallback,
1488
1487
  range: (0, positionUtils_1.convertTextRangeToRange)(nameNode, this._fileInfo.lines),
1489
- moduleName: this._formatModuleName(node.module.nameParts),
1488
+ moduleName: this._formatModuleName(node.module),
1490
1489
  isInExceptSuite: this._isInExceptSuite,
1491
1490
  isNativeLib: importInfo === null || importInfo === void 0 ? void 0 : importInfo.isNativeLib,
1492
1491
  };
@@ -1796,9 +1795,8 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
1796
1795
  }
1797
1796
  return true;
1798
1797
  }
1799
- _formatModuleName(nameParts) {
1800
- // Ignore the leading dots for purposes of module name formatting.
1801
- return nameParts.map((name) => name.value).join('.');
1798
+ _formatModuleName(node) {
1799
+ return '.'.repeat(node.leadingDots) + node.nameParts.map((part) => part.value).join('.');
1802
1800
  }
1803
1801
  _removeActiveTypeParameters(node) {
1804
1802
  node.parameters.forEach((typeParamNode) => {
@@ -1971,7 +1969,9 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
1971
1969
  loadSymbolsFromPath: false,
1972
1970
  range: (0, textRange_1.getEmptyRange)(),
1973
1971
  usesLocalName: !!importAlias,
1974
- moduleName: importAlias ? this._formatModuleName(node.module.nameParts) : firstNamePartValue,
1972
+ moduleName: importAlias
1973
+ ? this._formatModuleName(node.module)
1974
+ : '.'.repeat(node.module.leadingDots) + firstNamePartValue,
1975
1975
  firstNamePart: firstNamePartValue,
1976
1976
  isInExceptSuite: this._isInExceptSuite,
1977
1977
  };
@@ -1988,7 +1988,9 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
1988
1988
  range: (0, textRange_1.getEmptyRange)(),
1989
1989
  usesLocalName: !!importAlias,
1990
1990
  moduleName: (_a = importInfo === null || importInfo === void 0 ? void 0 : importInfo.importName) !== null && _a !== void 0 ? _a : '',
1991
- firstNamePart: importAlias ? this._formatModuleName(node.module.nameParts) : firstNamePartValue,
1991
+ firstNamePart: importAlias
1992
+ ? this._formatModuleName(node.module)
1993
+ : '.'.repeat(node.module.leadingDots) + firstNamePartValue,
1992
1994
  isUnresolved: true,
1993
1995
  isInExceptSuite: this._isInExceptSuite,
1994
1996
  };
@@ -3190,7 +3192,6 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
3190
3192
  'Optional',
3191
3193
  'Annotated',
3192
3194
  'TypeAlias',
3193
- 'OrderedDict',
3194
3195
  'Concatenate',
3195
3196
  'TypeGuard',
3196
3197
  'Unpack',
@@ -3198,22 +3199,25 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
3198
3199
  'NoReturn',
3199
3200
  'Never',
3200
3201
  'LiteralString',
3202
+ 'OrderedDict',
3201
3203
  ]);
3202
3204
  const assignedName = assignedNameNode.value;
3203
3205
  if (!specialTypes.has(assignedName)) {
3204
3206
  return false;
3205
3207
  }
3208
+ const specialBuiltInClassDeclaration = {
3209
+ type: 7 /* DeclarationType.SpecialBuiltInClass */,
3210
+ node: annotationNode,
3211
+ uri: this._fileInfo.fileUri,
3212
+ range: (0, positionUtils_1.convertTextRangeToRange)(annotationNode, this._fileInfo.lines),
3213
+ moduleName: this._fileInfo.moduleName,
3214
+ isInExceptSuite: this._isInExceptSuite,
3215
+ };
3206
3216
  const symbol = this._bindNameToScope(this._currentScope, annotationNode.valueExpression);
3207
3217
  if (symbol) {
3208
- symbol.addDeclaration({
3209
- type: 7 /* DeclarationType.SpecialBuiltInClass */,
3210
- node: annotationNode,
3211
- uri: this._fileInfo.fileUri,
3212
- range: (0, positionUtils_1.convertTextRangeToRange)(annotationNode, this._fileInfo.lines),
3213
- moduleName: this._fileInfo.moduleName,
3214
- isInExceptSuite: this._isInExceptSuite,
3215
- });
3218
+ symbol.addDeclaration(specialBuiltInClassDeclaration);
3216
3219
  }
3220
+ AnalyzerNodeInfo.setDeclaration(node, specialBuiltInClassDeclaration);
3217
3221
  return true;
3218
3222
  }
3219
3223
  _deferBinding(callback) {