@zzzen/pyright-internal 1.2.0-dev.20231008 → 1.2.0-dev.20231015

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 (118) hide show
  1. package/dist/analyzer/checker.js +27 -24
  2. package/dist/analyzer/checker.js.map +1 -1
  3. package/dist/analyzer/codeFlowEngine.js +2 -2
  4. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  5. package/dist/analyzer/constraintSolver.js +208 -151
  6. package/dist/analyzer/constraintSolver.js.map +1 -1
  7. package/dist/analyzer/decorators.js +3 -1
  8. package/dist/analyzer/decorators.js.map +1 -1
  9. package/dist/analyzer/parseTreeUtils.d.ts +1 -1
  10. package/dist/analyzer/program.js +7 -1
  11. package/dist/analyzer/program.js.map +1 -1
  12. package/dist/analyzer/properties.d.ts +2 -2
  13. package/dist/analyzer/properties.js +4 -2
  14. package/dist/analyzer/properties.js.map +1 -1
  15. package/dist/analyzer/protocols.js +95 -148
  16. package/dist/analyzer/protocols.js.map +1 -1
  17. package/dist/analyzer/service.js +13 -13
  18. package/dist/analyzer/service.js.map +1 -1
  19. package/dist/analyzer/sourceFile.d.ts +3 -2
  20. package/dist/analyzer/sourceFile.js +21 -7
  21. package/dist/analyzer/sourceFile.js.map +1 -1
  22. package/dist/analyzer/sourceFileInfo.d.ts +4 -4
  23. package/dist/analyzer/sourceFileInfo.js +2 -0
  24. package/dist/analyzer/sourceFileInfo.js.map +1 -1
  25. package/dist/analyzer/staticExpressions.js +2 -1
  26. package/dist/analyzer/staticExpressions.js.map +1 -1
  27. package/dist/analyzer/typeEvaluator.js +24 -22
  28. package/dist/analyzer/typeEvaluator.js.map +1 -1
  29. package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -2
  30. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  31. package/dist/analyzer/typeGuards.js +73 -13
  32. package/dist/analyzer/typeGuards.js.map +1 -1
  33. package/dist/analyzer/typeUtils.d.ts +4 -1
  34. package/dist/analyzer/typeUtils.js +81 -7
  35. package/dist/analyzer/typeUtils.js.map +1 -1
  36. package/dist/analyzer/typeVarContext.d.ts +4 -1
  37. package/dist/analyzer/typeVarContext.js +7 -2
  38. package/dist/analyzer/typeVarContext.js.map +1 -1
  39. package/dist/analyzer/types.d.ts +4 -2
  40. package/dist/analyzer/types.js +22 -14
  41. package/dist/analyzer/types.js.map +1 -1
  42. package/dist/backgroundThreadBase.js +5 -1
  43. package/dist/backgroundThreadBase.js.map +1 -1
  44. package/dist/common/configOptions.d.ts +2 -1
  45. package/dist/common/configOptions.js +9 -5
  46. package/dist/common/configOptions.js.map +1 -1
  47. package/dist/common/extensibility.d.ts +0 -2
  48. package/dist/common/extensibility.js.map +1 -1
  49. package/dist/common/fileSystem.d.ts +9 -4
  50. package/dist/common/fileSystem.js +8 -1
  51. package/dist/common/fileSystem.js.map +1 -1
  52. package/dist/common/pathUtils.d.ts +5 -4
  53. package/dist/common/pathUtils.js +13 -7
  54. package/dist/common/pathUtils.js.map +1 -1
  55. package/dist/common/realFileSystem.d.ts +7 -1
  56. package/dist/common/realFileSystem.js +24 -21
  57. package/dist/common/realFileSystem.js.map +1 -1
  58. package/dist/common/serviceProviderExtensions.d.ts +2 -1
  59. package/dist/common/serviceProviderExtensions.js +4 -0
  60. package/dist/common/serviceProviderExtensions.js.map +1 -1
  61. package/dist/languageServerBase.d.ts +4 -2
  62. package/dist/languageServerBase.js +3 -3
  63. package/dist/languageServerBase.js.map +1 -1
  64. package/dist/languageService/autoImporter.d.ts +1 -1
  65. package/dist/languageService/completionProvider.d.ts +2 -2
  66. package/dist/languageService/completionProvider.js +20 -23
  67. package/dist/languageService/completionProvider.js.map +1 -1
  68. package/dist/languageService/navigationUtils.d.ts +1 -1
  69. package/dist/languageService/navigationUtils.js +2 -2
  70. package/dist/languageService/navigationUtils.js.map +1 -1
  71. package/dist/languageService/referencesProvider.d.ts +9 -2
  72. package/dist/languageService/referencesProvider.js +18 -12
  73. package/dist/languageService/referencesProvider.js.map +1 -1
  74. package/dist/localization/package.nls.cs.json +1 -0
  75. package/dist/localization/package.nls.de.json +1 -0
  76. package/dist/localization/package.nls.es.json +1 -0
  77. package/dist/localization/package.nls.fr.json +1 -0
  78. package/dist/localization/package.nls.it.json +1 -0
  79. package/dist/localization/package.nls.ja.json +1 -0
  80. package/dist/localization/package.nls.ko.json +1 -0
  81. package/dist/localization/package.nls.pl.json +1 -0
  82. package/dist/localization/package.nls.pt-br.json +1 -0
  83. package/dist/localization/package.nls.qps-ploc.json +1 -0
  84. package/dist/localization/package.nls.ru.json +1 -0
  85. package/dist/localization/package.nls.tr.json +1 -0
  86. package/dist/localization/package.nls.zh-cn.json +1 -0
  87. package/dist/localization/package.nls.zh-tw.json +1 -0
  88. package/dist/pyright.js +2 -1
  89. package/dist/pyright.js.map +1 -1
  90. package/dist/pyrightFileSystem.d.ts +0 -1
  91. package/dist/pyrightFileSystem.js +0 -3
  92. package/dist/pyrightFileSystem.js.map +1 -1
  93. package/dist/readonlyAugmentedFileSystem.d.ts +1 -4
  94. package/dist/readonlyAugmentedFileSystem.js +0 -10
  95. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  96. package/dist/server.js +2 -1
  97. package/dist/server.js.map +1 -1
  98. package/dist/tests/config.test.js +5 -3
  99. package/dist/tests/config.test.js.map +1 -1
  100. package/dist/tests/fourslash/completions.indexer.keys.getitem.fourslash.js +56 -10
  101. package/dist/tests/fourslash/completions.indexer.keys.getitem.fourslash.js.map +1 -1
  102. package/dist/tests/harness/fourslash/testState.d.ts +5 -2
  103. package/dist/tests/harness/fourslash/testState.js +13 -14
  104. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  105. package/dist/tests/harness/vfs/filesystem.d.ts +2 -2
  106. package/dist/tests/importResolver.test.js +0 -9
  107. package/dist/tests/importResolver.test.js.map +1 -1
  108. package/dist/tests/pathUtils.test.js +2 -2
  109. package/dist/tests/pathUtils.test.js.map +1 -1
  110. package/dist/tests/typeEvaluator1.test.js +4 -0
  111. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  112. package/dist/tests/typeEvaluator2.test.js +4 -0
  113. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  114. package/dist/tests/typeEvaluator3.test.js +5 -1
  115. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  116. package/dist/tests/typeEvaluator4.test.js +10 -2
  117. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  118. package/package.json +1 -1
@@ -1284,7 +1284,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
1284
1284
  128 /* SkipAttributeAccessOverride */, types_1.ClassType.cloneAsInstantiable(objectType));
1285
1285
  }
1286
1286
  }
1287
- if (memberInfo) {
1287
+ if (memberInfo && !memberInfo.isSetTypeError) {
1288
1288
  return {
1289
1289
  type: memberInfo.type,
1290
1290
  classType: memberInfo.classType,
@@ -1337,7 +1337,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
1337
1337
  /* isAccessedThroughObject */ true, memberName, usage, metaclassDiag, memberAccessFlags, classType);
1338
1338
  }
1339
1339
  }
1340
- if (memberInfo) {
1340
+ if (memberInfo && !memberInfo.isSetTypeError) {
1341
1341
  return {
1342
1342
  type: memberInfo.type,
1343
1343
  isIncomplete: !!memberInfo.isTypeIncomplete,
@@ -3902,6 +3902,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
3902
3902
  return undefined;
3903
3903
  }
3904
3904
  type = descriptorResult.type;
3905
+ let isSetTypeError = false;
3905
3906
  if (usage.method === 'set' && usage.setType) {
3906
3907
  // Verify that the assigned type is compatible.
3907
3908
  if (!assignType(type, usage.setType.type, diag === null || diag === void 0 ? void 0 : diag.createAddendum())) {
@@ -3912,7 +3913,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
3912
3913
  classType: printObjectTypeForClass(classType),
3913
3914
  }));
3914
3915
  }
3915
- return undefined;
3916
+ isSetTypeError = true;
3916
3917
  }
3917
3918
  if ((0, types_1.isInstantiableClass)(memberInfo.classType) &&
3918
3919
  types_1.ClassType.isFrozenDataClass(memberInfo.classType) &&
@@ -3920,13 +3921,14 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
3920
3921
  diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.dataClassFrozen().format({
3921
3922
  name: printType(types_1.ClassType.cloneAsInstance(memberInfo.classType)),
3922
3923
  }));
3923
- return undefined;
3924
+ isSetTypeError = true;
3924
3925
  }
3925
3926
  }
3926
3927
  return {
3927
3928
  symbol: memberInfo.symbol,
3928
3929
  type,
3929
3930
  isTypeIncomplete,
3931
+ isSetTypeError,
3930
3932
  isClassMember: !memberInfo.isInstanceMember,
3931
3933
  isClassVar: memberInfo.isClassVar,
3932
3934
  classType: memberInfo.classType,
@@ -3945,6 +3947,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
3945
3947
  symbol: undefined,
3946
3948
  type: generalAttrType.type,
3947
3949
  isTypeIncomplete: false,
3950
+ isSetTypeError: false,
3948
3951
  isClassMember: false,
3949
3952
  isClassVar: false,
3950
3953
  isAsymmetricAccessor: generalAttrType.isAsymmetricAccessor,
@@ -6197,17 +6200,6 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
6197
6200
  // intended behavior according to PEP 484.
6198
6201
  const matchResults = matchFunctionArgumentsToParameters(errorNode, argList, { type: overload, isIncomplete: typeResult.isIncomplete }, overloadIndex);
6199
6202
  if (!matchResults.argumentErrors) {
6200
- // If there is an expected return type, see if it's potentially compatible
6201
- // with this overload's return type. If not, we'll de-emphasize this overload.
6202
- if (inferenceContext === null || inferenceContext === void 0 ? void 0 : inferenceContext.expectedType) {
6203
- const returnType = getFunctionEffectiveReturnType(matchResults.overload);
6204
- if (!assignType((0, typeUtils_1.replaceTypeVarsWithAny)(inferenceContext.expectedType), (0, typeUtils_1.replaceTypeVarsWithAny)(returnType),
6205
- /* diag */ undefined,
6206
- /* destTypeVarContext */ undefined,
6207
- /* srcTypeVarContext */ undefined, 8 /* SkipSolveTypeVars */)) {
6208
- matchResults.relevance += -0.5;
6209
- }
6210
- }
6211
6203
  filteredMatchResults.push(matchResults);
6212
6204
  }
6213
6205
  overloadIndex++;
@@ -9286,9 +9278,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
9286
9278
  }
9287
9279
  else if (mappingType && (0, types_1.isInstantiableClass)(mappingType)) {
9288
9280
  const mappingTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(mappingType));
9289
- // Self-specialize the class.
9290
- mappingType = types_1.ClassType.cloneForSpecialization(mappingType, mappingType.details.typeParameters,
9291
- /* isTypeArgumentExplicit */ true);
9281
+ mappingType = (0, typeUtils_1.selfSpecializeClass)(mappingType);
9292
9282
  if (assignType(types_1.ClassType.cloneAsInstance(mappingType), unexpandedType,
9293
9283
  /* diag */ undefined, mappingTypeVarContext,
9294
9284
  /* srcTypeVarContext */ undefined, 128 /* RetainLiteralsForTypeVar */)) {
@@ -10823,7 +10813,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10823
10813
  const nameNode = node.leftExpression;
10824
10814
  const assignedName = nameNode.value;
10825
10815
  if (assignedName === 'Any') {
10826
- return types_1.AnyType.create();
10816
+ return types_1.AnyType.createSpecialForm();
10827
10817
  }
10828
10818
  const specialTypes = new Map([
10829
10819
  ['overload', { alias: '', module: 'builtins' }],
@@ -11191,6 +11181,11 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
11191
11181
  if ((0, types_1.isUnion)(argType)) {
11192
11182
  argType = (0, types_1.removeUnbound)(argType);
11193
11183
  }
11184
+ // Any is allowed as a base class. Remove its "special form" flag to avoid
11185
+ // false positive errors.
11186
+ if ((0, types_1.isAny)(argType) && types_1.TypeBase.isSpecialForm(argType)) {
11187
+ argType = types_1.AnyType.create();
11188
+ }
11194
11189
  if (!(0, types_1.isAnyOrUnknown)(argType) && !(0, types_1.isUnbound)(argType)) {
11195
11190
  if ((0, typeUtils_1.isMetaclassInstance)(argType)) {
11196
11191
  (0, debug_1.assert)((0, types_1.isClassInstance)(argType));
@@ -15495,6 +15490,12 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
15495
15490
  };
15496
15491
  }
15497
15492
  }
15493
+ else if ((0, types_1.isAnyOrUnknown)(member.classType)) {
15494
+ return {
15495
+ type: member.classType,
15496
+ isIncomplete: false,
15497
+ };
15498
+ }
15498
15499
  return undefined;
15499
15500
  }
15500
15501
  function assignClass(destType, srcType, diag, destTypeVarContext, srcTypeVarContext, flags, recursionCount, reportErrorsUsingObjType) {
@@ -16167,7 +16168,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
16167
16168
  if ((0, types_1.isAnyOrUnknown)(destType)) {
16168
16169
  return true;
16169
16170
  }
16170
- if ((0, types_1.isAnyOrUnknown)(srcType)) {
16171
+ if ((0, types_1.isAnyOrUnknown)(srcType) && !types_1.TypeBase.isSpecialForm(srcType)) {
16171
16172
  const targetTypeVarContext = (flags & 2 /* ReverseTypeVarMatching */) === 0 ? destTypeVarContext : srcTypeVarContext;
16172
16173
  if (targetTypeVarContext) {
16173
16174
  // If it's an ellipsis type, convert it to a regular "Any"
@@ -16393,7 +16394,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
16393
16394
  }
16394
16395
  }
16395
16396
  }
16396
- else if ((0, types_1.isAnyOrUnknown)(concreteSrcType)) {
16397
+ else if ((0, types_1.isAnyOrUnknown)(concreteSrcType) && !types_1.TypeBase.isSpecialForm(concreteSrcType)) {
16397
16398
  return (flags & 16 /* OverloadOverlapCheck */) === 0;
16398
16399
  }
16399
16400
  else if ((0, types_1.isUnion)(concreteSrcType)) {
@@ -17379,7 +17380,8 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
17379
17380
  category: p.category,
17380
17381
  name: p.name,
17381
17382
  isNameSynthesized: p.isNameSynthesized,
17382
- hasDefault: !!p.hasDefault,
17383
+ hasDefault: p.hasDefault,
17384
+ hasDeclaredType: p.hasDeclaredType,
17383
17385
  defaultValueExpression: p.defaultValueExpression,
17384
17386
  type: types_1.FunctionType.getEffectiveParameterType(effectiveSrcType, index),
17385
17387
  });