@zzzen/pyright-internal 1.2.0-dev.20240630 → 1.2.0-dev.20240714

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 (170) hide show
  1. package/dist/analyzer/analyzerNodeInfo.js +74 -46
  2. package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
  3. package/dist/analyzer/binder.js +507 -513
  4. package/dist/analyzer/binder.js.map +1 -1
  5. package/dist/analyzer/checker.js +652 -633
  6. package/dist/analyzer/checker.js.map +1 -1
  7. package/dist/analyzer/codeFlowEngine.d.ts +5 -3
  8. package/dist/analyzer/codeFlowEngine.js +143 -122
  9. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  10. package/dist/analyzer/codeFlowTypes.js +30 -28
  11. package/dist/analyzer/codeFlowTypes.js.map +1 -1
  12. package/dist/analyzer/constraintSolver.d.ts +1 -1
  13. package/dist/analyzer/constraintSolver.js +71 -67
  14. package/dist/analyzer/constraintSolver.js.map +1 -1
  15. package/dist/analyzer/constructorTransform.js +22 -22
  16. package/dist/analyzer/constructorTransform.js.map +1 -1
  17. package/dist/analyzer/constructors.js +85 -77
  18. package/dist/analyzer/constructors.js.map +1 -1
  19. package/dist/analyzer/dataClasses.js +113 -176
  20. package/dist/analyzer/dataClasses.js.map +1 -1
  21. package/dist/analyzer/declaration.d.ts +1 -1
  22. package/dist/analyzer/declarationUtils.js +14 -15
  23. package/dist/analyzer/declarationUtils.js.map +1 -1
  24. package/dist/analyzer/decorators.js +85 -85
  25. package/dist/analyzer/decorators.js.map +1 -1
  26. package/dist/analyzer/enums.js +71 -57
  27. package/dist/analyzer/enums.js.map +1 -1
  28. package/dist/analyzer/functionTransform.js +8 -18
  29. package/dist/analyzer/functionTransform.js.map +1 -1
  30. package/dist/analyzer/importResolver.d.ts +2 -1
  31. package/dist/analyzer/importResolver.js +40 -29
  32. package/dist/analyzer/importResolver.js.map +1 -1
  33. package/dist/analyzer/importStatementUtils.js +27 -27
  34. package/dist/analyzer/importStatementUtils.js.map +1 -1
  35. package/dist/analyzer/namedTuples.js +33 -59
  36. package/dist/analyzer/namedTuples.js.map +1 -1
  37. package/dist/analyzer/operations.d.ts +4 -4
  38. package/dist/analyzer/operations.js +70 -70
  39. package/dist/analyzer/operations.js.map +1 -1
  40. package/dist/analyzer/packageTypeVerifier.js +66 -62
  41. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  42. package/dist/analyzer/parameterUtils.d.ts +4 -4
  43. package/dist/analyzer/parameterUtils.js +28 -46
  44. package/dist/analyzer/parameterUtils.js.map +1 -1
  45. package/dist/analyzer/parseTreeUtils.js +268 -269
  46. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  47. package/dist/analyzer/parseTreeWalker.js +76 -76
  48. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  49. package/dist/analyzer/patternMatching.js +195 -147
  50. package/dist/analyzer/patternMatching.js.map +1 -1
  51. package/dist/analyzer/program.js +1 -1
  52. package/dist/analyzer/program.js.map +1 -1
  53. package/dist/analyzer/properties.js +78 -147
  54. package/dist/analyzer/properties.js.map +1 -1
  55. package/dist/analyzer/protocols.js +22 -22
  56. package/dist/analyzer/protocols.js.map +1 -1
  57. package/dist/analyzer/sourceFile.d.ts +3 -2
  58. package/dist/analyzer/sourceFile.js +8 -8
  59. package/dist/analyzer/sourceFile.js.map +1 -1
  60. package/dist/analyzer/sourceMapper.js +20 -19
  61. package/dist/analyzer/sourceMapper.js.map +1 -1
  62. package/dist/analyzer/staticExpressions.js +83 -84
  63. package/dist/analyzer/staticExpressions.js.map +1 -1
  64. package/dist/analyzer/testWalker.js +2 -2
  65. package/dist/analyzer/testWalker.js.map +1 -1
  66. package/dist/analyzer/tracePrinter.js +20 -20
  67. package/dist/analyzer/tracePrinter.js.map +1 -1
  68. package/dist/analyzer/typeDocStringUtils.js +25 -25
  69. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  70. package/dist/analyzer/typeEvaluator.js +2330 -2367
  71. package/dist/analyzer/typeEvaluator.js.map +1 -1
  72. package/dist/analyzer/typeEvaluatorTypes.d.ts +33 -31
  73. package/dist/analyzer/typeEvaluatorTypes.js +48 -41
  74. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  75. package/dist/analyzer/typeGuards.js +221 -217
  76. package/dist/analyzer/typeGuards.js.map +1 -1
  77. package/dist/analyzer/typePrinter.js +118 -115
  78. package/dist/analyzer/typePrinter.js.map +1 -1
  79. package/dist/analyzer/typeStubWriter.js +104 -103
  80. package/dist/analyzer/typeStubWriter.js.map +1 -1
  81. package/dist/analyzer/typeUtils.d.ts +26 -9
  82. package/dist/analyzer/typeUtils.js +460 -404
  83. package/dist/analyzer/typeUtils.js.map +1 -1
  84. package/dist/analyzer/typeVarContext.js +8 -8
  85. package/dist/analyzer/typeVarContext.js.map +1 -1
  86. package/dist/analyzer/typeWalker.js +13 -10
  87. package/dist/analyzer/typeWalker.js.map +1 -1
  88. package/dist/analyzer/typedDicts.js +96 -198
  89. package/dist/analyzer/typedDicts.js.map +1 -1
  90. package/dist/analyzer/types.d.ts +147 -103
  91. package/dist/analyzer/types.js +668 -493
  92. package/dist/analyzer/types.js.map +1 -1
  93. package/dist/commands/dumpFileDebugInfoCommand.js +33 -33
  94. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  95. package/dist/common/diagnostic.d.ts +14 -0
  96. package/dist/common/diagnostic.js +41 -1
  97. package/dist/common/diagnostic.js.map +1 -1
  98. package/dist/common/diagnosticSink.d.ts +4 -0
  99. package/dist/common/diagnosticSink.js +21 -1
  100. package/dist/common/diagnosticSink.js.map +1 -1
  101. package/dist/common/fileSystem.d.ts +1 -0
  102. package/dist/common/fileSystem.js.map +1 -1
  103. package/dist/common/fullAccessHost.js +6 -4
  104. package/dist/common/fullAccessHost.js.map +1 -1
  105. package/dist/common/realFileSystem.d.ts +1 -0
  106. package/dist/common/realFileSystem.js +4 -0
  107. package/dist/common/realFileSystem.js.map +1 -1
  108. package/dist/common/textEditTracker.js +14 -14
  109. package/dist/common/textEditTracker.js.map +1 -1
  110. package/dist/languageService/autoImporter.js +10 -10
  111. package/dist/languageService/autoImporter.js.map +1 -1
  112. package/dist/languageService/callHierarchyProvider.js +23 -23
  113. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  114. package/dist/languageService/completionProvider.d.ts +1 -1
  115. package/dist/languageService/completionProvider.js +156 -154
  116. package/dist/languageService/completionProvider.js.map +1 -1
  117. package/dist/languageService/definitionProvider.d.ts +1 -1
  118. package/dist/languageService/definitionProvider.js +3 -1
  119. package/dist/languageService/definitionProvider.js.map +1 -1
  120. package/dist/languageService/documentSymbolCollector.js +19 -19
  121. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  122. package/dist/languageService/hoverProvider.js +25 -24
  123. package/dist/languageService/hoverProvider.js.map +1 -1
  124. package/dist/languageService/importSorter.js +8 -8
  125. package/dist/languageService/importSorter.js.map +1 -1
  126. package/dist/languageService/referencesProvider.js +8 -8
  127. package/dist/languageService/referencesProvider.js.map +1 -1
  128. package/dist/languageService/signatureHelpProvider.d.ts +1 -1
  129. package/dist/languageService/signatureHelpProvider.js +6 -6
  130. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  131. package/dist/languageService/symbolIndexer.js +3 -3
  132. package/dist/languageService/symbolIndexer.js.map +1 -1
  133. package/dist/languageService/tooltipUtils.js +13 -13
  134. package/dist/languageService/tooltipUtils.js.map +1 -1
  135. package/dist/localization/localize.d.ts +3 -0
  136. package/dist/localization/localize.js +1 -0
  137. package/dist/localization/localize.js.map +1 -1
  138. package/dist/localization/package.nls.en-us.json +2 -1
  139. package/dist/parser/parseNodes.d.ts +468 -401
  140. package/dist/parser/parseNodes.js +626 -355
  141. package/dist/parser/parseNodes.js.map +1 -1
  142. package/dist/parser/parser.d.ts +1 -0
  143. package/dist/parser/parser.js +322 -297
  144. package/dist/parser/parser.js.map +1 -1
  145. package/dist/pyright.js +265 -5
  146. package/dist/pyright.js.map +1 -1
  147. package/dist/tests/classDeclaration.test.js +14 -14
  148. package/dist/tests/classDeclaration.test.js.map +1 -1
  149. package/dist/tests/fourslash/hover.init.fourslash.js +1 -1
  150. package/dist/tests/fourslash/hover.init.fourslash.js.map +1 -1
  151. package/dist/tests/harness/vfs/filesystem.d.ts +3 -2
  152. package/dist/tests/harness/vfs/filesystem.js +6 -2
  153. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  154. package/dist/tests/importResolver.test.js +4 -3
  155. package/dist/tests/importResolver.test.js.map +1 -1
  156. package/dist/tests/parseTreeUtils.test.js +5 -5
  157. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  158. package/dist/tests/parser.test.js +8 -8
  159. package/dist/tests/parser.test.js.map +1 -1
  160. package/dist/tests/sourceMapperUtils.test.js +7 -7
  161. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  162. package/dist/tests/typeEvaluator2.test.js +2 -2
  163. package/dist/tests/typeEvaluator3.test.js +10 -5
  164. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  165. package/dist/tests/typeEvaluator4.test.js +1 -1
  166. package/dist/tests/typeEvaluator7.test.js +2 -2
  167. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  168. package/dist/tests/typePrinter.test.js +14 -39
  169. package/dist/tests/typePrinter.test.js.map +1 -1
  170. package/package.json +1 -1
@@ -23,14 +23,14 @@ const types_1 = require("./types");
23
23
  const typeUtils_1 = require("./typeUtils");
24
24
  const typeVarContext_1 = require("./typeVarContext");
25
25
  function hasConstructorTransform(classType) {
26
- if (classType.details.fullName === 'functools.partial') {
26
+ if (classType.shared.fullName === 'functools.partial') {
27
27
  return true;
28
28
  }
29
29
  return false;
30
30
  }
31
31
  exports.hasConstructorTransform = hasConstructorTransform;
32
32
  function applyConstructorTransform(evaluator, errorNode, argList, classType, result, signatureTracker) {
33
- if (classType.details.fullName === 'functools.partial') {
33
+ if (classType.shared.fullName === 'functools.partial') {
34
34
  return applyPartialTransform(evaluator, errorNode, argList, result, signatureTracker);
35
35
  }
36
36
  // By default, return the result unmodified.
@@ -40,7 +40,7 @@ exports.applyConstructorTransform = applyConstructorTransform;
40
40
  // Applies a transform for the functools.partial class constructor.
41
41
  function applyPartialTransform(evaluator, errorNode, argList, result, signatureTracker) {
42
42
  // We assume that the normal return result is a functools.partial class instance.
43
- if (!(0, types_1.isClassInstance)(result.returnType) || result.returnType.details.fullName !== 'functools.partial') {
43
+ if (!(0, types_1.isClassInstance)(result.returnType) || result.returnType.shared.fullName !== 'functools.partial') {
44
44
  return result;
45
45
  }
46
46
  const callMemberResult = (0, typeUtils_1.lookUpObjectMember)(result.returnType, '__call__', 16 /* MemberAccessFlags.SkipInstanceMembers */);
@@ -48,7 +48,7 @@ function applyPartialTransform(evaluator, errorNode, argList, result, signatureT
48
48
  return result;
49
49
  }
50
50
  const callMemberType = evaluator.getTypeOfMember(callMemberResult);
51
- if (!(0, types_1.isFunction)(callMemberType) || callMemberType.details.parameters.length < 1) {
51
+ if (!(0, types_1.isFunction)(callMemberType) || callMemberType.shared.parameters.length < 1) {
52
52
  return result;
53
53
  }
54
54
  if (argList.length < 1) {
@@ -105,7 +105,7 @@ function applyPartialTransform(evaluator, errorNode, argList, result, signatureT
105
105
  if (applicableOverloads.length === 0) {
106
106
  if (sawArgErrors) {
107
107
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportCallIssue, localize_1.LocMessage.noOverload().format({
108
- name: origFunctionType.overloads[0].details.name,
108
+ name: origFunctionType.priv.overloads[0].shared.name,
109
109
  }), errorNode);
110
110
  }
111
111
  return result;
@@ -119,7 +119,7 @@ function applyPartialTransform(evaluator, errorNode, argList, result, signatureT
119
119
  else {
120
120
  synthesizedCallType = types_1.OverloadedFunctionType.create(
121
121
  // Set the "overloaded" flag for each of the __call__ overloads.
122
- applicableOverloads.map((overload) => types_1.FunctionType.cloneWithNewFlags(overload, overload.details.flags | 256 /* FunctionTypeFlags.Overloaded */)));
122
+ applicableOverloads.map((overload) => types_1.FunctionType.cloneWithNewFlags(overload, overload.shared.flags | 256 /* FunctionTypeFlags.Overloaded */)));
123
123
  }
124
124
  types_1.ClassType.getSymbolTable(newPartialClass).set('__call__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, synthesizedCallType));
125
125
  return {
@@ -159,7 +159,7 @@ function applyPartialTransformToFunction(evaluator, errorNode, argList, partialC
159
159
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportArgumentType, localize_1.LocMessage.argAssignmentParamFunction().format({
160
160
  argType: evaluator.printType(argTypeResult.type),
161
161
  paramType: evaluator.printType(paramType),
162
- functionName: origFunctionType.details.name,
162
+ functionName: origFunctionType.shared.name,
163
163
  paramName: (_a = paramListDetails.params[paramListDetails.argsIndex].param.name) !== null && _a !== void 0 ? _a : '',
164
164
  }), (_b = arg.valueExpression) !== null && _b !== void 0 ? _b : errorNode);
165
165
  }
@@ -192,7 +192,7 @@ function applyPartialTransformToFunction(evaluator, errorNode, argList, partialC
192
192
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportArgumentType, localize_1.LocMessage.argAssignmentParamFunction().format({
193
193
  argType: evaluator.printType(argTypeResult.type),
194
194
  paramType: evaluator.printType(paramType),
195
- functionName: origFunctionType.details.name,
195
+ functionName: origFunctionType.shared.name,
196
196
  paramName,
197
197
  }), (_e = arg.valueExpression) !== null && _e !== void 0 ? _e : errorNode);
198
198
  }
@@ -203,12 +203,12 @@ function applyPartialTransformToFunction(evaluator, errorNode, argList, partialC
203
203
  }
204
204
  }
205
205
  else {
206
- const matchingParam = paramListDetails.params.find((paramInfo) => { var _a; return paramInfo.param.name === ((_a = arg.name) === null || _a === void 0 ? void 0 : _a.value) && paramInfo.kind !== parameterUtils_1.ParameterKind.Positional; });
206
+ const matchingParam = paramListDetails.params.find((paramInfo) => { var _a; return paramInfo.param.name === ((_a = arg.name) === null || _a === void 0 ? void 0 : _a.d.value) && paramInfo.kind !== parameterUtils_1.ParameterKind.Positional; });
207
207
  if (!matchingParam) {
208
208
  // Is there a kwargs parameter?
209
209
  if (paramListDetails.kwargsIndex === undefined) {
210
210
  if (errorNode) {
211
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportCallIssue, localize_1.LocMessage.paramNameMissing().format({ name: arg.name.value }), arg.name);
211
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportCallIssue, localize_1.LocMessage.paramNameMissing().format({ name: arg.name.d.value }), arg.name);
212
212
  }
213
213
  argumentErrors = true;
214
214
  }
@@ -222,7 +222,7 @@ function applyPartialTransformToFunction(evaluator, errorNode, argList, partialC
222
222
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportArgumentType, localize_1.LocMessage.argAssignmentParamFunction().format({
223
223
  argType: evaluator.printType(argTypeResult.type),
224
224
  paramType: evaluator.printType(paramType),
225
- functionName: origFunctionType.details.name,
225
+ functionName: origFunctionType.shared.name,
226
226
  paramName: (_f = paramListDetails.params[paramListDetails.kwargsIndex].param.name) !== null && _f !== void 0 ? _f : '',
227
227
  }), (_g = arg.valueExpression) !== null && _g !== void 0 ? _g : errorNode);
228
228
  }
@@ -235,7 +235,7 @@ function applyPartialTransformToFunction(evaluator, errorNode, argList, partialC
235
235
  const paramType = types_1.FunctionType.getEffectiveParameterType(origFunctionType, matchingParam.index);
236
236
  if (paramMap.has(paramName)) {
237
237
  if (errorNode) {
238
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportCallIssue, localize_1.LocMessage.paramAlreadyAssigned().format({ name: arg.name.value }), arg.name);
238
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportCallIssue, localize_1.LocMessage.paramAlreadyAssigned().format({ name: arg.name.d.value }), arg.name);
239
239
  }
240
240
  argumentErrors = true;
241
241
  }
@@ -248,7 +248,7 @@ function applyPartialTransformToFunction(evaluator, errorNode, argList, partialC
248
248
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportArgumentType, localize_1.LocMessage.argAssignmentParamFunction().format({
249
249
  argType: evaluator.printType(argTypeResult.type),
250
250
  paramType: evaluator.printType(paramType),
251
- functionName: origFunctionType.details.name,
251
+ functionName: origFunctionType.shared.name,
252
252
  paramName,
253
253
  }), (_h = arg.valueExpression) !== null && _h !== void 0 ? _h : errorNode);
254
254
  }
@@ -265,13 +265,13 @@ function applyPartialTransformToFunction(evaluator, errorNode, argList, partialC
265
265
  }
266
266
  // Create a new parameter list that omits parameters that have been
267
267
  // populated already.
268
- const updatedParamList = specializedFunctionType.details.parameters.map((param, index) => {
268
+ const updatedParamList = specializedFunctionType.shared.parameters.map((param, index) => {
269
269
  const specializedParam = { ...param };
270
270
  specializedParam.type = types_1.FunctionType.getEffectiveParameterType(specializedFunctionType, index);
271
271
  // If it's a keyword parameter that has been assigned a value through
272
272
  // the "partial" mechanism, mark it has having a default value.
273
273
  if (param.name && paramMap.get(param.name)) {
274
- specializedParam.hasDefault = true;
274
+ specializedParam.defaultType = types_1.AnyType.create(/* isEllipsis */ true);
275
275
  }
276
276
  return specializedParam;
277
277
  });
@@ -295,18 +295,18 @@ function applyPartialTransformToFunction(evaluator, errorNode, argList, partialC
295
295
  (0, collectionUtils_1.appendArray)(newParamList, assignedKeywordParamList);
296
296
  (0, collectionUtils_1.appendArray)(newParamList, kwargsParam);
297
297
  // Create a new __call__ method that uses the remaining parameters.
298
- const newCallMemberType = types_1.FunctionType.createInstance(partialCallMemberType.details.name, partialCallMemberType.details.fullName, partialCallMemberType.details.moduleName, partialCallMemberType.details.flags, specializedFunctionType.details.docString);
299
- if (partialCallMemberType.details.parameters.length > 0) {
300
- types_1.FunctionType.addParameter(newCallMemberType, partialCallMemberType.details.parameters[0]);
298
+ const newCallMemberType = types_1.FunctionType.createInstance(partialCallMemberType.shared.name, partialCallMemberType.shared.fullName, partialCallMemberType.shared.moduleName, partialCallMemberType.shared.flags, specializedFunctionType.shared.docString);
299
+ if (partialCallMemberType.shared.parameters.length > 0) {
300
+ types_1.FunctionType.addParameter(newCallMemberType, partialCallMemberType.shared.parameters[0]);
301
301
  }
302
302
  newParamList.forEach((param) => {
303
303
  types_1.FunctionType.addParameter(newCallMemberType, param);
304
304
  });
305
- newCallMemberType.details.declaredReturnType = specializedFunctionType.details.declaredReturnType
305
+ newCallMemberType.shared.declaredReturnType = specializedFunctionType.shared.declaredReturnType
306
306
  ? types_1.FunctionType.getEffectiveReturnType(specializedFunctionType)
307
- : specializedFunctionType.inferredReturnType;
308
- newCallMemberType.details.declaration = partialCallMemberType.details.declaration;
309
- newCallMemberType.details.typeVarScopeId = specializedFunctionType.details.typeVarScopeId;
307
+ : specializedFunctionType.priv.inferredReturnType;
308
+ newCallMemberType.shared.declaration = partialCallMemberType.shared.declaration;
309
+ newCallMemberType.shared.typeVarScopeId = specializedFunctionType.shared.typeVarScopeId;
310
310
  return { returnType: newCallMemberType, isTypeIncomplete: false, argumentErrors };
311
311
  }
312
312
  //# sourceMappingURL=constructorTransform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constructorTransform.js","sourceRoot":"","sources":["../../../../../src/analyzer/constructorTransform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constructorTransform.js","sourceRoot":"","sources":["../../../../../src/analyzer/constructorTransform.ts"],"names":[],"mappings":"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"}
@@ -51,10 +51,17 @@ exports.getBoundCallMethod = getBoundCallMethod;
51
51
  // If successful, it returns the resulting (specialized) object type that
52
52
  // is allocated by the constructor. If unsuccessful, it reports diagnostics.
53
53
  function validateConstructorArguments(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, signatureTracker) {
54
- var _a;
54
+ var _a, _b;
55
+ // If this is an unspecialized generic type alias, specialize it now
56
+ // using default type argument values.
57
+ const aliasInfo = (_a = type.props) === null || _a === void 0 ? void 0 : _a.typeAliasInfo;
58
+ if ((aliasInfo === null || aliasInfo === void 0 ? void 0 : aliasInfo.typeParameters) && !aliasInfo.typeArguments) {
59
+ const typeAliasTypeVarContext = new typeVarContext_1.TypeVarContext(aliasInfo.typeVarScopeId);
60
+ type = (0, typeUtils_1.applySolvedTypeVars)(type, typeAliasTypeVarContext, { unknownIfNotFound: true });
61
+ }
55
62
  const metaclassResult = validateMetaclassCall(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, signatureTracker);
56
63
  if (metaclassResult) {
57
- const metaclassReturnType = (_a = metaclassResult.returnType) !== null && _a !== void 0 ? _a : types_1.UnknownType.create();
64
+ const metaclassReturnType = (_b = metaclassResult.returnType) !== null && _b !== void 0 ? _b : types_1.UnknownType.create();
58
65
  // If there a custom `__call__` method on the metaclass that returns
59
66
  // something other than an instance of the class, assume that it
60
67
  // overrides the normal `type.__call__` logic and don't perform the usual
@@ -147,7 +154,7 @@ function validateNewAndInitMethods(evaluator, errorNode, argList, type, skipUnkn
147
154
  else if ((0, types_1.isAnyOrUnknown)(newMethodReturnType)) {
148
155
  // If the __new__ method returns Any or Unknown, we'll ignore its return
149
156
  // type and assume that it returns Self.
150
- newMethodReturnType = (0, typeUtils_1.applySolvedTypeVars)(types_1.ClassType.cloneAsInstance(type), new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(type)), { unknownIfNotFound: true });
157
+ newMethodReturnType = (0, typeUtils_1.applySolvedTypeVars)(types_1.ClassType.cloneAsInstance(type), new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(type)), { unknownIfNotFound: true, tupleClassType: evaluator.getTupleClassType() });
151
158
  }
152
159
  let initMethodTypeResult;
153
160
  // If there were errors evaluating the __new__ method, assume that __new__
@@ -166,8 +173,8 @@ function validateNewAndInitMethods(evaluator, errorNode, argList, type, skipUnkn
166
173
  // but didn't supply solved type arguments, we'll ignore its specialized return
167
174
  // type and rely on the __init__ method to supply the type arguments instead.
168
175
  let initMethodBindToType = newMethodReturnType;
169
- if (initMethodBindToType.typeArguments &&
170
- initMethodBindToType.typeArguments.some((typeArg) => (0, types_1.isUnknown)(typeArg))) {
176
+ if (initMethodBindToType.priv.typeArguments &&
177
+ initMethodBindToType.priv.typeArguments.some((typeArg) => (0, types_1.isUnknown)(typeArg))) {
171
178
  initMethodBindToType = types_1.ClassType.cloneAsInstance(type);
172
179
  }
173
180
  // Determine whether the class overrides the object.__init__ method.
@@ -233,9 +240,6 @@ function validateNewMethod(evaluator, errorNode, argList, type, skipUnknownArgCh
233
240
  }
234
241
  const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(type));
235
242
  typeVarContext.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(newMethodTypeResult.type));
236
- if (type.typeAliasInfo) {
237
- typeVarContext.addSolveForScope(type.typeAliasInfo.typeVarScopeId);
238
- }
239
243
  const callResult = evaluator.useSpeculativeMode(useSpeculativeModeForArgs ? errorNode : undefined, () => {
240
244
  return evaluator.validateCallArguments(errorNode, argList, newMethodTypeResult, typeVarContext, skipUnknownArgCheck, inferenceContext, signatureTracker);
241
245
  });
@@ -257,10 +261,10 @@ function validateNewMethod(evaluator, errorNode, argList, type, skipUnknownArgCh
257
261
  if (newReturnType) {
258
262
  // Special-case the 'tuple' type specialization to use the homogenous
259
263
  // arbitrary-length form.
260
- if ((0, types_1.isClassInstance)(newReturnType) && (0, typeUtils_1.isTupleClass)(newReturnType) && !newReturnType.tupleTypeArguments) {
261
- if (newReturnType.typeArguments && newReturnType.typeArguments.length === 1) {
264
+ if ((0, types_1.isClassInstance)(newReturnType) && (0, typeUtils_1.isTupleClass)(newReturnType) && !newReturnType.priv.tupleTypeArguments) {
265
+ if (newReturnType.priv.typeArguments && newReturnType.priv.typeArguments.length === 1) {
262
266
  newReturnType = (0, typeUtils_1.specializeTupleClass)(newReturnType, [
263
- { type: newReturnType.typeArguments[0], isUnbounded: true },
267
+ { type: newReturnType.priv.typeArguments[0], isUnbounded: true },
264
268
  ]);
265
269
  }
266
270
  newReturnType = applyExpectedTypeForTupleConstructor(newReturnType, inferenceContext);
@@ -298,46 +302,46 @@ function validateInitMethod(evaluator, errorNode, argList, type, skipUnknownArgC
298
302
  // specialization.
299
303
  if ((0, types_1.isClassInstance)(expectedSubType) &&
300
304
  types_1.ClassType.isSameGenericClass(type, expectedSubType) &&
301
- type.typeArguments) {
305
+ type.priv.typeArguments) {
302
306
  return undefined;
303
307
  }
304
308
  const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(type));
305
309
  typeVarContext.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(initMethodType));
306
- if ((0, constraintSolver_1.populateTypeVarContextBasedOnExpectedType)(evaluator, types_1.ClassType.cloneAsInstance(type), expectedSubType, typeVarContext, (0, parseTreeUtils_1.getTypeVarScopesForNode)(errorNode), errorNode.start)) {
307
- const specializedConstructor = (0, typeUtils_1.applySolvedTypeVars)(initMethodType, typeVarContext);
308
- let callResult;
309
- callResult = evaluator.useSpeculativeMode(errorNode, () => {
310
- return evaluator.validateCallArguments(errorNode, argList, { type: specializedConstructor }, typeVarContext.clone(), skipUnknownArgCheck,
311
- /* inferenceContext */ undefined, signatureTracker);
312
- });
313
- if (!callResult.argumentErrors) {
314
- // Call validateCallArguments again, this time without speculative
315
- // mode, so any errors are reported.
316
- callResult = evaluator.validateCallArguments(errorNode, argList, { type: specializedConstructor }, typeVarContext, skipUnknownArgCheck,
317
- /* inferenceContext */ undefined, signatureTracker);
318
- if (callResult.isTypeIncomplete) {
319
- isTypeIncomplete = true;
320
- }
321
- if (callResult.argumentErrors) {
322
- argumentErrors = true;
323
- }
324
- if (callResult.overloadsUsedForCall) {
325
- (0, collectionUtils_1.appendArray)(overloadsUsedForCall, callResult.overloadsUsedForCall);
326
- }
327
- // Note that we've found an expected type that works.
328
- foundWorkingExpectedType = true;
329
- return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubType, typeVarContext);
330
- }
310
+ if (!(0, constraintSolver_1.addConstraintsForExpectedType)(evaluator, types_1.ClassType.cloneAsInstance(type), expectedSubType, typeVarContext, (0, parseTreeUtils_1.getTypeVarScopesForNode)(errorNode), errorNode.start)) {
311
+ return undefined;
331
312
  }
332
- return undefined;
333
- },
334
- /* sortSubtypes */ true);
313
+ const specializedConstructor = (0, typeUtils_1.applySolvedTypeVars)(initMethodType, typeVarContext);
314
+ let callResult;
315
+ callResult = evaluator.useSpeculativeMode(errorNode, () => {
316
+ return evaluator.validateCallArguments(errorNode, argList, { type: specializedConstructor }, typeVarContext.clone(), skipUnknownArgCheck,
317
+ /* inferenceContext */ undefined, signatureTracker);
318
+ });
319
+ if (callResult.argumentErrors) {
320
+ return undefined;
321
+ }
322
+ // Call validateCallArguments again, this time without speculative
323
+ // mode, so any errors are reported.
324
+ callResult = evaluator.validateCallArguments(errorNode, argList, { type: specializedConstructor }, typeVarContext, skipUnknownArgCheck,
325
+ /* inferenceContext */ undefined, signatureTracker);
326
+ if (callResult.isTypeIncomplete) {
327
+ isTypeIncomplete = true;
328
+ }
329
+ if (callResult.argumentErrors) {
330
+ argumentErrors = true;
331
+ }
332
+ if (callResult.overloadsUsedForCall) {
333
+ (0, collectionUtils_1.appendArray)(overloadsUsedForCall, callResult.overloadsUsedForCall);
334
+ }
335
+ // Note that we've found an expected type that works.
336
+ foundWorkingExpectedType = true;
337
+ return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubType, typeVarContext);
338
+ }, { sortSubtypes: true });
335
339
  if ((0, types_1.isNever)(returnType) || argumentErrors) {
336
340
  returnType = undefined;
337
341
  }
338
342
  }
339
343
  if (!returnType) {
340
- const typeVarContext = type.typeArguments
344
+ const typeVarContext = type.priv.typeArguments
341
345
  ? (0, typeUtils_1.buildTypeVarContextFromSpecializedClass)(type)
342
346
  : new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(type));
343
347
  typeVarContext.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(initMethodType));
@@ -367,10 +371,10 @@ function validateFallbackConstructorCall(evaluator, errorNode, argList, type, in
367
371
  let reportedErrors = false;
368
372
  // It's OK if the argument list consists only of `*args` and `**kwargs`.
369
373
  if (argList.length > 0 && argList.some((arg) => arg.argumentCategory === 0 /* ArgumentCategory.Simple */)) {
370
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportCallIssue, localize_1.LocMessage.constructorNoArgs().format({ type: type.aliasName || type.details.name }), errorNode);
374
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportCallIssue, localize_1.LocMessage.constructorNoArgs().format({ type: type.priv.aliasName || type.shared.name }), errorNode);
371
375
  reportedErrors = true;
372
376
  }
373
- if (!inferenceContext && type.typeArguments) {
377
+ if (!inferenceContext && type.priv.typeArguments) {
374
378
  // If there was no expected type but the type was already specialized,
375
379
  // assume that we're constructing an instance of the specialized type.
376
380
  return {
@@ -398,7 +402,7 @@ function validateFallbackConstructorCall(evaluator, errorNode, argList, type, in
398
402
  });
399
403
  }
400
404
  if (expectedType) {
401
- (0, constraintSolver_1.populateTypeVarContextBasedOnExpectedType)(evaluator, types_1.ClassType.cloneAsInstance(type), expectedType, typeVarContext, (0, parseTreeUtils_1.getTypeVarScopesForNode)(errorNode), errorNode.start);
405
+ (0, constraintSolver_1.addConstraintsForExpectedType)(evaluator, types_1.ClassType.cloneAsInstance(type), expectedType, typeVarContext, (0, parseTreeUtils_1.getTypeVarScopesForNode)(errorNode), errorNode.start);
402
406
  }
403
407
  }
404
408
  return {
@@ -416,7 +420,7 @@ function validateMetaclassCall(evaluator, errorNode, argList, type, skipUnknownA
416
420
  /* typeVarContext */ undefined, skipUnknownArgCheck, inferenceContext, signatureTracker);
417
421
  // If the return type is unannotated, don't use the inferred return type.
418
422
  const callType = metaclassCallMethodInfo.type;
419
- if ((0, types_1.isFunction)(callType) && !callType.details.declaredReturnType) {
423
+ if ((0, types_1.isFunction)(callType) && !callType.shared.declaredReturnType) {
420
424
  return undefined;
421
425
  }
422
426
  // If the return type is unknown, ignore it.
@@ -444,7 +448,7 @@ function applyExpectedTypeForConstructor(evaluator, type, inferenceContext, type
444
448
  let unsolvedTypeVarsAreUnknown = true;
445
449
  // If this isn't a generic type or it's a type that has already been
446
450
  // explicitly specialized, the expected type isn't applicable.
447
- if (type.details.typeParameters.length === 0 || type.typeArguments) {
451
+ if (type.shared.typeParameters.length === 0 || type.priv.typeArguments) {
448
452
  return (0, typeUtils_1.applySolvedTypeVars)(types_1.ClassType.cloneAsInstance(type), typeVarContext, { applyInScopePlaceholders: true });
449
453
  }
450
454
  if (inferenceContext) {
@@ -457,12 +461,13 @@ function applyExpectedTypeForConstructor(evaluator, type, inferenceContext, type
457
461
  // If the expected type didn't provide TypeVar values, remaining
458
462
  // unsolved TypeVars should be considered Unknown unless they were
459
463
  // provided explicitly in the constructor call.
460
- if (type.typeArguments) {
464
+ if (type.priv.typeArguments) {
461
465
  unsolvedTypeVarsAreUnknown = false;
462
466
  }
463
467
  }
464
468
  const specializedType = (0, typeUtils_1.applySolvedTypeVars)(type, typeVarContext, {
465
469
  unknownIfNotFound: unsolvedTypeVarsAreUnknown,
470
+ tupleClassType: evaluator.getTupleClassType(),
466
471
  });
467
472
  return types_1.ClassType.cloneAsInstance(specializedType);
468
473
  }
@@ -473,8 +478,8 @@ function applyExpectedTypeForTupleConstructor(type, inferenceContext) {
473
478
  if (inferenceContext &&
474
479
  (0, types_1.isClassInstance)(inferenceContext.expectedType) &&
475
480
  (0, typeUtils_1.isTupleClass)(inferenceContext.expectedType) &&
476
- inferenceContext.expectedType.tupleTypeArguments) {
477
- specializedType = (0, typeUtils_1.specializeTupleClass)(type, inferenceContext.expectedType.tupleTypeArguments);
481
+ inferenceContext.expectedType.priv.tupleTypeArguments) {
482
+ specializedType = (0, typeUtils_1.specializeTupleClass)(type, inferenceContext.expectedType.priv.tupleTypeArguments);
478
483
  }
479
484
  return specializedType;
480
485
  }
@@ -511,7 +516,7 @@ function createFunctionFromConstructor(evaluator, classType, selfType = undefine
511
516
  }
512
517
  exports.createFunctionFromConstructor = createFunctionFromConstructor;
513
518
  function createFunctionFromMetaclassCall(evaluator, classType, recursionCount) {
514
- const metaclass = classType.details.effectiveMetaclass;
519
+ const metaclass = classType.shared.effectiveMetaclass;
515
520
  if (!metaclass || !(0, types_1.isClass)(metaclass)) {
516
521
  return undefined;
517
522
  }
@@ -536,7 +541,7 @@ function createFunctionFromMetaclassCall(evaluator, classType, recursionCount) {
536
541
  // any of them returns something other than the instance of the class being
537
542
  // constructed.
538
543
  (0, typeUtils_1.doForEachSignature)(boundCallType, (signature) => {
539
- if (signature.details.declaredReturnType) {
544
+ if (signature.shared.declaredReturnType) {
540
545
  const returnType = types_1.FunctionType.getEffectiveReturnType(signature);
541
546
  if (returnType && shouldSkipNewAndInitEvaluation(evaluator, classType, returnType)) {
542
547
  useMetaclassCall = true;
@@ -557,13 +562,13 @@ function createFunctionFromNewMethod(evaluator, classType, selfType, recursionCo
557
562
  // If there are no parameters that include class-scoped type parameters,
558
563
  // self-specialize the class because the type arguments for the class
559
564
  // can't be solved if there are no parameters to supply them.
560
- const hasParametersWithTypeVars = newSubtype.details.parameters.some((param, index) => {
565
+ const hasParametersWithTypeVars = newSubtype.shared.parameters.some((param, index) => {
561
566
  if (index === 0 || !param.name) {
562
567
  return false;
563
568
  }
564
569
  const paramType = types_1.FunctionType.getEffectiveParameterType(newSubtype, index);
565
570
  const typeVars = (0, typeUtils_1.getTypeVarArgumentsRecursive)(paramType);
566
- return typeVars.some((typeVar) => typeVar.scopeId === (0, typeUtils_1.getTypeVarScopeId)(classType));
571
+ return typeVars.some((typeVar) => typeVar.priv.scopeId === (0, typeUtils_1.getTypeVarScopeId)(classType));
567
572
  });
568
573
  const boundNew = evaluator.bindFunctionToClassOrObject(hasParametersWithTypeVars ? (0, typeUtils_1.selfSpecializeClass)(classType) : classType, newSubtype, newInfo && (0, types_1.isInstantiableClass)(newInfo.classType) ? newInfo.classType : undefined,
569
574
  /* treatConstructorAsClassMethod */ true, selfType,
@@ -572,12 +577,12 @@ function createFunctionFromNewMethod(evaluator, classType, selfType, recursionCo
572
577
  return undefined;
573
578
  }
574
579
  const convertedNew = types_1.FunctionType.clone(boundNew);
575
- convertedNew.details.typeVarScopeId = newSubtype.details.typeVarScopeId;
576
- if (!convertedNew.details.docString && classType.details.docString) {
577
- convertedNew.details.docString = classType.details.docString;
580
+ convertedNew.shared.typeVarScopeId = newSubtype.shared.typeVarScopeId;
581
+ if (!convertedNew.shared.docString && classType.shared.docString) {
582
+ convertedNew.shared.docString = classType.shared.docString;
578
583
  }
579
- convertedNew.details.flags &= ~(4 /* FunctionTypeFlags.StaticMethod */ | 1 /* FunctionTypeFlags.ConstructorMethod */);
580
- convertedNew.details.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
584
+ convertedNew.shared.flags &= ~(4 /* FunctionTypeFlags.StaticMethod */ | 1 /* FunctionTypeFlags.ConstructorMethod */);
585
+ convertedNew.priv.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
581
586
  return convertedNew;
582
587
  };
583
588
  if ((0, types_1.isFunction)(newType)) {
@@ -587,7 +592,7 @@ function createFunctionFromNewMethod(evaluator, classType, selfType, recursionCo
587
592
  return undefined;
588
593
  }
589
594
  const newOverloads = [];
590
- newType.overloads.forEach((overload) => {
595
+ newType.priv.overloads.forEach((overload) => {
591
596
  const converted = convertNewToConstructor(overload);
592
597
  if (converted) {
593
598
  newOverloads.push(converted);
@@ -604,14 +609,14 @@ function createFunctionFromNewMethod(evaluator, classType, selfType, recursionCo
604
609
  function createFunctionFromObjectNewMethod(classType) {
605
610
  // Return a fallback constructor based on the object.__new__ method.
606
611
  const constructorFunction = types_1.FunctionType.createSynthesizedInstance('__new__', 0 /* FunctionTypeFlags.None */);
607
- constructorFunction.details.declaredReturnType = types_1.ClassType.cloneAsInstance(classType);
612
+ constructorFunction.shared.declaredReturnType = types_1.ClassType.cloneAsInstance(classType);
608
613
  // If this is type[T] or a protocol, we don't know what parameters are accepted
609
614
  // by the constructor, so add the default parameters.
610
- if (classType.includeSubclasses || types_1.ClassType.isProtocolClass(classType)) {
615
+ if (classType.priv.includeSubclasses || types_1.ClassType.isProtocolClass(classType)) {
611
616
  types_1.FunctionType.addDefaultParameters(constructorFunction);
612
617
  }
613
- if (!constructorFunction.details.docString && classType.details.docString) {
614
- constructorFunction.details.docString = classType.details.docString;
618
+ if (!constructorFunction.shared.docString && classType.shared.docString) {
619
+ constructorFunction.shared.docString = classType.shared.docString;
615
620
  }
616
621
  return constructorFunction;
617
622
  }
@@ -639,12 +644,12 @@ function createFunctionFromInitMethod(evaluator, classType, selfType, recursionC
639
644
  returnType = objectType;
640
645
  // If this is a generic type, self-specialize the class (i.e. fill in
641
646
  // its own type parameters as type arguments).
642
- if (objectType.details.typeParameters.length > 0 && !objectType.typeArguments) {
647
+ if (objectType.shared.typeParameters.length > 0 && !objectType.priv.typeArguments) {
643
648
  const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeIds)(objectType));
644
649
  // If a TypeVar is not used in any of the parameter types, it should take
645
650
  // on its default value (typically Unknown) in the resulting specialized type.
646
651
  const typeVarsInParams = [];
647
- convertedInit.details.parameters.forEach((param, index) => {
652
+ convertedInit.shared.parameters.forEach((param, index) => {
648
653
  const paramType = types_1.FunctionType.getEffectiveParameterType(convertedInit, index);
649
654
  (0, typeUtils_1.addTypeVarsToListIfUnique)(typeVarsInParams, (0, typeUtils_1.getTypeVarArgumentsRecursive)(paramType));
650
655
  });
@@ -656,18 +661,21 @@ function createFunctionFromInitMethod(evaluator, classType, selfType, recursionC
656
661
  typeVarContext.setTypeVarType(typeVar, typeVar);
657
662
  }
658
663
  });
659
- returnType = (0, typeUtils_1.applySolvedTypeVars)(objectType, typeVarContext, { unknownIfNotFound: true });
664
+ returnType = (0, typeUtils_1.applySolvedTypeVars)(objectType, typeVarContext, {
665
+ unknownIfNotFound: true,
666
+ tupleClassType: evaluator.getTupleClassType(),
667
+ });
660
668
  }
661
669
  }
662
- convertedInit.details.declaredReturnType = (_a = boundInit.strippedFirstParamType) !== null && _a !== void 0 ? _a : returnType;
663
- if (convertedInit.specializedTypes) {
664
- convertedInit.specializedTypes.returnType = returnType;
670
+ convertedInit.shared.declaredReturnType = (_a = boundInit.priv.strippedFirstParamType) !== null && _a !== void 0 ? _a : returnType;
671
+ if (convertedInit.priv.specializedTypes) {
672
+ convertedInit.priv.specializedTypes.returnType = returnType;
665
673
  }
666
- if (!convertedInit.details.docString && classType.details.docString) {
667
- convertedInit.details.docString = classType.details.docString;
674
+ if (!convertedInit.shared.docString && classType.shared.docString) {
675
+ convertedInit.shared.docString = classType.shared.docString;
668
676
  }
669
- convertedInit.details.flags &= ~4 /* FunctionTypeFlags.StaticMethod */;
670
- convertedInit.details.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
677
+ convertedInit.shared.flags &= ~4 /* FunctionTypeFlags.StaticMethod */;
678
+ convertedInit.priv.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
671
679
  return convertedInit;
672
680
  }
673
681
  if ((0, types_1.isFunction)(initType)) {
@@ -677,7 +685,7 @@ function createFunctionFromInitMethod(evaluator, classType, selfType, recursionC
677
685
  return undefined;
678
686
  }
679
687
  const initOverloads = [];
680
- initType.overloads.forEach((overload) => {
688
+ initType.priv.overloads.forEach((overload) => {
681
689
  const converted = convertInitToConstructor(overload);
682
690
  if (converted) {
683
691
  initOverloads.push(converted);
@@ -735,15 +743,15 @@ function isDefaultNewMethod(newMethod) {
735
743
  if (!newMethod || !(0, types_1.isFunction)(newMethod)) {
736
744
  return false;
737
745
  }
738
- const params = newMethod.details.parameters;
746
+ const params = newMethod.shared.parameters;
739
747
  if (params.length !== 2) {
740
748
  return false;
741
749
  }
742
750
  if (params[0].category !== 1 /* ParameterCategory.ArgsList */ || params[1].category !== 2 /* ParameterCategory.KwargsDict */) {
743
751
  return false;
744
752
  }
745
- const returnType = (_a = newMethod.details.declaredReturnType) !== null && _a !== void 0 ? _a : newMethod.inferredReturnType;
746
- if (!returnType || !(0, types_1.isTypeVar)(returnType) || !returnType.details.isSynthesizedSelf) {
753
+ const returnType = (_a = newMethod.shared.declaredReturnType) !== null && _a !== void 0 ? _a : newMethod.priv.inferredReturnType;
754
+ if (!returnType || !(0, types_1.isTypeVar)(returnType) || !returnType.shared.isSynthesizedSelf) {
747
755
  return false;
748
756
  }
749
757
  return true;