@zzzen/pyright-internal 1.2.0-dev.20261018 → 1.2.0-dev.20261108

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 (238) hide show
  1. package/dist/analyzer/binder.js +29 -12
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.js +4 -0
  4. package/dist/analyzer/checker.js.map +1 -1
  5. package/dist/analyzer/codeFlowEngine.js +3 -3
  6. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  7. package/dist/analyzer/constructorTransform.js +12 -0
  8. package/dist/analyzer/constructorTransform.js.map +1 -1
  9. package/dist/analyzer/constructors.d.ts +1 -1
  10. package/dist/analyzer/constructors.js +1 -1
  11. package/dist/analyzer/constructors.js.map +1 -1
  12. package/dist/analyzer/dataClasses.js +14 -5
  13. package/dist/analyzer/dataClasses.js.map +1 -1
  14. package/dist/analyzer/decorators.d.ts +2 -2
  15. package/dist/analyzer/decorators.js +22 -2
  16. package/dist/analyzer/decorators.js.map +1 -1
  17. package/dist/analyzer/functionTransform.d.ts +5 -0
  18. package/dist/analyzer/functionTransform.js +6 -3
  19. package/dist/analyzer/functionTransform.js.map +1 -1
  20. package/dist/analyzer/missingBindingMetadata.d.ts +6 -0
  21. package/dist/analyzer/missingBindingMetadata.js +22 -0
  22. package/dist/analyzer/missingBindingMetadata.js.map +1 -0
  23. package/dist/analyzer/namedTuples.d.ts +5 -1
  24. package/dist/analyzer/namedTuples.js +64 -35
  25. package/dist/analyzer/namedTuples.js.map +1 -1
  26. package/dist/analyzer/operations.js +45 -1
  27. package/dist/analyzer/operations.js.map +1 -1
  28. package/dist/analyzer/parseTreeUtils.d.ts +2 -0
  29. package/dist/analyzer/parseTreeUtils.js +43 -0
  30. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  31. package/dist/analyzer/patternMatching.d.ts +5 -1
  32. package/dist/analyzer/patternMatching.js +6 -1
  33. package/dist/analyzer/patternMatching.js.map +1 -1
  34. package/dist/analyzer/program.d.ts +3 -0
  35. package/dist/analyzer/program.js +71 -1
  36. package/dist/analyzer/program.js.map +1 -1
  37. package/dist/analyzer/sentinel.js +7 -1
  38. package/dist/analyzer/sentinel.js.map +1 -1
  39. package/dist/analyzer/sourceFile.js +13 -6
  40. package/dist/analyzer/sourceFile.js.map +1 -1
  41. package/dist/analyzer/tupleComparison.d.ts +6 -0
  42. package/dist/analyzer/tupleComparison.js +731 -0
  43. package/dist/analyzer/tupleComparison.js.map +1 -0
  44. package/dist/analyzer/tuples.d.ts +1 -1
  45. package/dist/analyzer/tuples.js +35 -4
  46. package/dist/analyzer/tuples.js.map +1 -1
  47. package/dist/analyzer/typeCacheUtils.d.ts +1 -0
  48. package/dist/analyzer/typeCacheUtils.js +10 -0
  49. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  50. package/dist/analyzer/typeEvaluator/boundMethodSpecialization.d.ts +15 -0
  51. package/dist/analyzer/typeEvaluator/boundMethodSpecialization.js +98 -0
  52. package/dist/analyzer/typeEvaluator/boundMethodSpecialization.js.map +1 -0
  53. package/dist/analyzer/typeEvaluator/classConstruction.d.ts +25 -0
  54. package/dist/analyzer/typeEvaluator/classConstruction.js +251 -0
  55. package/dist/analyzer/typeEvaluator/classConstruction.js.map +1 -0
  56. package/dist/analyzer/typeEvaluator/collectionInference.d.ts +41 -0
  57. package/dist/analyzer/typeEvaluator/collectionInference.js +695 -0
  58. package/dist/analyzer/typeEvaluator/collectionInference.js.map +1 -0
  59. package/dist/analyzer/typeEvaluator/diagnostics.d.ts +33 -0
  60. package/dist/analyzer/typeEvaluator/diagnostics.js +198 -0
  61. package/dist/analyzer/typeEvaluator/diagnostics.js.map +1 -0
  62. package/dist/analyzer/typeEvaluator/evaluatorCore.d.ts +80 -0
  63. package/dist/analyzer/typeEvaluator/evaluatorCore.js +1126 -0
  64. package/dist/analyzer/typeEvaluator/evaluatorCore.js.map +1 -0
  65. package/dist/analyzer/typeEvaluator/evaluatorNarrowing.d.ts +17 -0
  66. package/dist/analyzer/typeEvaluator/evaluatorNarrowing.js +370 -0
  67. package/dist/analyzer/typeEvaluator/evaluatorNarrowing.js.map +1 -0
  68. package/dist/analyzer/typeEvaluator/expressionEvaluation.d.ts +81 -0
  69. package/dist/analyzer/typeEvaluator/expressionEvaluation.js +1802 -0
  70. package/dist/analyzer/typeEvaluator/expressionEvaluation.js.map +1 -0
  71. package/dist/analyzer/typeEvaluator/flowAnalysis.d.ts +33 -0
  72. package/dist/analyzer/typeEvaluator/flowAnalysis.js +217 -0
  73. package/dist/analyzer/typeEvaluator/flowAnalysis.js.map +1 -0
  74. package/dist/analyzer/typeEvaluator/internals.d.ts +137 -0
  75. package/dist/analyzer/typeEvaluator/internals.js +10 -0
  76. package/dist/analyzer/typeEvaluator/internals.js.map +1 -0
  77. package/dist/analyzer/typeEvaluator/literalTypes.d.ts +3 -0
  78. package/dist/analyzer/typeEvaluator/literalTypes.js +52 -0
  79. package/dist/analyzer/typeEvaluator/literalTypes.js.map +1 -0
  80. package/dist/analyzer/typeEvaluator/memberResolution.d.ts +79 -0
  81. package/dist/analyzer/typeEvaluator/memberResolution.js +1007 -0
  82. package/dist/analyzer/typeEvaluator/memberResolution.js.map +1 -0
  83. package/dist/analyzer/typeEvaluator/overrideValidation.d.ts +15 -0
  84. package/dist/analyzer/typeEvaluator/overrideValidation.js +422 -0
  85. package/dist/analyzer/typeEvaluator/overrideValidation.js.map +1 -0
  86. package/dist/analyzer/typeEvaluator/returnTypeInference.d.ts +33 -0
  87. package/dist/analyzer/typeEvaluator/returnTypeInference.js +226 -0
  88. package/dist/analyzer/typeEvaluator/returnTypeInference.js.map +1 -0
  89. package/dist/analyzer/typeEvaluator/specialFormCreation.d.ts +39 -0
  90. package/dist/analyzer/typeEvaluator/specialFormCreation.js +1728 -0
  91. package/dist/analyzer/typeEvaluator/specialFormCreation.js.map +1 -0
  92. package/dist/analyzer/typeEvaluator/tupleUnpacking.d.ts +2 -0
  93. package/dist/analyzer/typeEvaluator/tupleUnpacking.js +36 -0
  94. package/dist/analyzer/typeEvaluator/tupleUnpacking.js.map +1 -0
  95. package/dist/analyzer/typeEvaluator/typeCompatibility.d.ts +36 -0
  96. package/dist/analyzer/typeEvaluator/typeCompatibility.js +1320 -0
  97. package/dist/analyzer/typeEvaluator/typeCompatibility.js.map +1 -0
  98. package/dist/analyzer/typeEvaluator/typeGuardNarrowing.d.ts +186 -0
  99. package/dist/analyzer/typeEvaluator/typeGuardNarrowing.js +1683 -0
  100. package/dist/analyzer/typeEvaluator/typeGuardNarrowing.js.map +1 -0
  101. package/dist/analyzer/typeEvaluator/typeVarHandling.d.ts +48 -0
  102. package/dist/analyzer/typeEvaluator/typeVarHandling.js +756 -0
  103. package/dist/analyzer/typeEvaluator/typeVarHandling.js.map +1 -0
  104. package/dist/analyzer/typeEvaluator.d.ts +3 -31
  105. package/dist/analyzer/typeEvaluator.js +5140 -13656
  106. package/dist/analyzer/typeEvaluator.js.map +1 -1
  107. package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -1
  108. package/dist/analyzer/typeEvaluatorTypes.js +2 -3
  109. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  110. package/dist/analyzer/typeGuards.d.ts +3 -2
  111. package/dist/analyzer/typeGuards.js +236 -1375
  112. package/dist/analyzer/typeGuards.js.map +1 -1
  113. package/dist/analyzer/typeUtils.js +9 -2
  114. package/dist/analyzer/typeUtils.js.map +1 -1
  115. package/dist/analyzer/typedDicts.js +111 -0
  116. package/dist/analyzer/typedDicts.js.map +1 -1
  117. package/dist/analyzer/types.d.ts +14 -0
  118. package/dist/analyzer/types.js +215 -10
  119. package/dist/analyzer/types.js.map +1 -1
  120. package/dist/browser/browserConnection.d.ts +12 -0
  121. package/dist/browser/browserConnection.js +23 -0
  122. package/dist/browser/browserConnection.js.map +1 -0
  123. package/dist/browser/browserFileSystem.d.ts +73 -0
  124. package/dist/browser/browserFileSystem.js +578 -0
  125. package/dist/browser/browserFileSystem.js.map +1 -0
  126. package/dist/browser/browserHost.d.ts +4 -0
  127. package/dist/browser/browserHost.js +10 -0
  128. package/dist/browser/browserHost.js.map +1 -0
  129. package/dist/browser/browserProcess.d.ts +1 -0
  130. package/dist/browser/browserProcess.js +17 -0
  131. package/dist/browser/browserProcess.js.map +1 -0
  132. package/dist/browser/browserServer.d.ts +8 -0
  133. package/dist/browser/browserServer.js +32 -0
  134. package/dist/browser/browserServer.js.map +1 -0
  135. package/dist/browser/cancellation/common.d.ts +10 -0
  136. package/dist/browser/cancellation/common.js +114 -0
  137. package/dist/browser/cancellation/common.js.map +1 -0
  138. package/dist/browser/cancellation/objectURLReceiverStrategy.d.ts +5 -0
  139. package/dist/browser/cancellation/objectURLReceiverStrategy.js +37 -0
  140. package/dist/browser/cancellation/objectURLReceiverStrategy.js.map +1 -0
  141. package/dist/browser/cancellation/objectURLSenderStrategy.d.ts +7 -0
  142. package/dist/browser/cancellation/objectURLSenderStrategy.js +32 -0
  143. package/dist/browser/cancellation/objectURLSenderStrategy.js.map +1 -0
  144. package/dist/browser/worker.d.ts +1 -0
  145. package/dist/browser/worker.js +33 -0
  146. package/dist/browser/worker.js.map +1 -0
  147. package/dist/common/processUtils.d.ts +6 -0
  148. package/dist/common/processUtils.js +56 -1
  149. package/dist/common/processUtils.js.map +1 -1
  150. package/dist/common/textEditTracker.js +1 -1
  151. package/dist/common/textEditTracker.js.map +1 -1
  152. package/dist/common/windowsProcessTree.d.ts +2 -0
  153. package/dist/common/windowsProcessTree.js +23 -0
  154. package/dist/common/windowsProcessTree.js.map +1 -1
  155. package/dist/common/windowsProcessTree.json +23 -3
  156. package/dist/languageServerBase.d.ts +3 -0
  157. package/dist/languageServerBase.js +44 -12
  158. package/dist/languageServerBase.js.map +1 -1
  159. package/dist/languageService/callHierarchyProvider.js +6 -6
  160. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  161. package/dist/languageService/referencesProvider.js +3 -3
  162. package/dist/languageService/referencesProvider.js.map +1 -1
  163. package/dist/languageService/renameProvider.js +1 -1
  164. package/dist/languageService/renameProvider.js.map +1 -1
  165. package/dist/languageService/symbolIndexer.js +2 -2
  166. package/dist/languageService/symbolIndexer.js.map +1 -1
  167. package/dist/localization/localize.d.ts +2 -0
  168. package/dist/localization/localize.js +2 -0
  169. package/dist/localization/localize.js.map +1 -1
  170. package/dist/localization/package.nls.en-us.json +8 -0
  171. package/dist/parser/parseTreeTokenReuse.d.ts +34 -0
  172. package/dist/parser/parseTreeTokenReuse.js +897 -0
  173. package/dist/parser/parseTreeTokenReuse.js.map +1 -0
  174. package/dist/parser/tokenizer.d.ts +10 -1
  175. package/dist/parser/tokenizer.js +184 -130
  176. package/dist/parser/tokenizer.js.map +1 -1
  177. package/dist/pyrightServer.d.ts +34 -0
  178. package/dist/pyrightServer.js +239 -0
  179. package/dist/pyrightServer.js.map +1 -0
  180. package/dist/server.d.ts +3 -23
  181. package/dist/server.js +12 -232
  182. package/dist/server.js.map +1 -1
  183. package/dist/tests/benchmarks/typeInferenceComparison.d.ts +1 -0
  184. package/dist/tests/benchmarks/typeInferenceComparison.js +1235 -0
  185. package/dist/tests/benchmarks/typeInferenceComparison.js.map +1 -0
  186. package/dist/tests/benchmarks/typeInferencePyrightEntry.d.ts +1 -0
  187. package/dist/tests/benchmarks/typeInferencePyrightEntry.js +53 -0
  188. package/dist/tests/benchmarks/typeInferencePyrightEntry.js.map +1 -0
  189. package/dist/tests/browserCancellation.test.d.ts +1 -0
  190. package/dist/tests/browserCancellation.test.js +63 -0
  191. package/dist/tests/browserCancellation.test.js.map +1 -0
  192. package/dist/tests/browserServer.test.d.ts +1 -0
  193. package/dist/tests/browserServer.test.js +177 -0
  194. package/dist/tests/browserServer.test.js.map +1 -0
  195. package/dist/tests/checker.test.js +8 -0
  196. package/dist/tests/checker.test.js.map +1 -1
  197. package/dist/tests/constraintSolver.test.js +45 -0
  198. package/dist/tests/constraintSolver.test.js.map +1 -1
  199. package/dist/tests/fourSlashParser.test.js +35 -0
  200. package/dist/tests/fourSlashParser.test.js.map +1 -1
  201. package/dist/tests/harness/fourslash/fourSlashParser.js +14 -4
  202. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  203. package/dist/tests/languageServer.test.js +15 -0
  204. package/dist/tests/languageServer.test.js.map +1 -1
  205. package/dist/tests/lsp/languageServer.js +6 -6
  206. package/dist/tests/lsp/languageServer.js.map +1 -1
  207. package/dist/tests/mypyPrimerAnalysis.test.js +148 -1
  208. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
  209. package/dist/tests/typeCacheUtils.test.js +46 -0
  210. package/dist/tests/typeCacheUtils.test.js.map +1 -1
  211. package/dist/tests/typeEvaluator1.test.js +78 -1
  212. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  213. package/dist/tests/typeEvaluator2.test.js +54 -1
  214. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  215. package/dist/tests/typeEvaluator3.test.js +4 -0
  216. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  217. package/dist/tests/typeEvaluator4.test.js +42 -3
  218. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  219. package/dist/tests/typeEvaluator6.test.js +35 -0
  220. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  221. package/dist/tests/typeEvaluator7.test.js +414 -0
  222. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  223. package/dist/tests/typeEvaluator8.test.js +1291 -1
  224. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  225. package/dist/tests/typeUtils.test.js +28 -0
  226. package/dist/tests/typeUtils.test.js.map +1 -1
  227. package/dist/tests/types.test.js +55 -0
  228. package/dist/tests/types.test.js.map +1 -1
  229. package/dist/typeServer/programWrapper.js +8 -2
  230. package/dist/typeServer/programWrapper.js.map +1 -1
  231. package/dist/typeServer/server.d.ts +12 -2
  232. package/dist/typeServer/server.js +97 -0
  233. package/dist/typeServer/server.js.map +1 -1
  234. package/dist/typeServer/stubGenerator.js +136 -3
  235. package/dist/typeServer/stubGenerator.js.map +1 -1
  236. package/dist/typeServer/typeServerConversionUtils.js +13 -0
  237. package/dist/typeServer/typeServerConversionUtils.js.map +1 -1
  238. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memberResolution.js","sourceRoot":"","sources":["../../../../../../src/analyzer/typeEvaluator/memberResolution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { DiagnosticAddendum } from '../../common/diagnostic';
2
+ import { ConstraintTracker } from '../constraintTracker';
3
+ import { SolveConstraintsOptions, TypeEvaluator } from '../typeEvaluatorTypes';
4
+ import { ClassType, FunctionType, OverloadedType, Type } from '../types';
5
+ import { ApplyTypeVarOptions } from '../typeUtils';
6
+ interface Context {
7
+ readonly assignType: TypeEvaluator['assignType'];
8
+ readonly getEffectiveReturnType: (type: FunctionType) => Type;
9
+ readonly printType: TypeEvaluator['printType'];
10
+ readonly solveAndApplyConstraints: (type: Type, constraints: ConstraintTracker, applyOptions?: ApplyTypeVarOptions, solveOptions?: SolveConstraintsOptions) => Type;
11
+ }
12
+ export declare function createOverrideValidation(context: Context): {
13
+ validateOverrideMethod: (baseMethod: Type, overrideMethod: FunctionType | OverloadedType, baseClass: ClassType | undefined, diag: DiagnosticAddendum, enforceParamNames?: boolean) => boolean;
14
+ };
15
+ export {};
@@ -0,0 +1,422 @@
1
+ "use strict";
2
+ /*
3
+ * overrideValidation.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ *
7
+ * overrideValidation implementation, using evaluator-owned dependencies and state.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createOverrideValidation = createOverrideValidation;
11
+ const localize_1 = require("../../localization/localize");
12
+ const constraintTracker_1 = require("../constraintTracker");
13
+ const parameterUtils_1 = require("../parameterUtils");
14
+ const symbolNameUtils_1 = require("../symbolNameUtils");
15
+ const types_1 = require("../types");
16
+ // Validates overrides and reports mismatches through evaluator compatibility and diagnostic callbacks.
17
+ function createOverrideValidation(context) {
18
+ const { assignType, getEffectiveReturnType, printType, solveAndApplyConstraints } = context;
19
+ function validateOverrideMethod(baseMethod, overrideMethod, baseClass, diag, enforceParamNames = true) {
20
+ // If we're overriding a non-method with a method, report it as an error.
21
+ // This occurs when a non-property overrides a property.
22
+ if (!(0, types_1.isFunctionOrOverloaded)(baseMethod)) {
23
+ diag.addMessage(localize_1.LocAddendum.overrideType().format({ type: printType(baseMethod) }));
24
+ return false;
25
+ }
26
+ if ((0, types_1.isFunction)(baseMethod)) {
27
+ // Handle the easy case - a simple function overriding another simple function.
28
+ if ((0, types_1.isFunction)(overrideMethod)) {
29
+ return validateOverrideMethodInternal(baseMethod, overrideMethod, diag, enforceParamNames);
30
+ }
31
+ const overloadsAndImpl = [...types_1.OverloadedType.getOverloads(overrideMethod)];
32
+ const impl = types_1.OverloadedType.getImplementation(overrideMethod);
33
+ if (impl && (0, types_1.isFunction)(impl)) {
34
+ overloadsAndImpl.push(impl);
35
+ }
36
+ // For an overload overriding a base method, at least one overload
37
+ // or the implementation must be compatible with the base method.
38
+ if (overloadsAndImpl.some((overrideOverload) => {
39
+ return validateOverrideMethodInternal(baseMethod, overrideOverload,
40
+ /* diag */ undefined, enforceParamNames);
41
+ })) {
42
+ return true;
43
+ }
44
+ diag.addMessage(localize_1.LocAddendum.overrideNoOverloadMatches());
45
+ return false;
46
+ }
47
+ // For a non-overloaded method overriding an overloaded method, the
48
+ // override must match all of the overloads.
49
+ if ((0, types_1.isFunction)(overrideMethod)) {
50
+ return types_1.OverloadedType.getOverloads(baseMethod).every((overload) => {
51
+ // If the override isn't applicable for this base class, skip the check.
52
+ if (baseClass && !isOverrideMethodApplicable(overload, baseClass)) {
53
+ return true;
54
+ }
55
+ return validateOverrideMethodInternal(overload, overrideMethod, diag?.createAddendum(), enforceParamNames);
56
+ });
57
+ }
58
+ // For an overloaded method overriding an overloaded method, the overrides
59
+ // must all match and be in the correct order. It is OK if the base method
60
+ // has additional overloads that are not present in the override.
61
+ let previousMatchIndex = -1;
62
+ const baseOverloads = types_1.OverloadedType.getOverloads(baseMethod);
63
+ for (const overrideOverload of types_1.OverloadedType.getOverloads(overrideMethod)) {
64
+ let possibleMatchIndex;
65
+ let matchIndex = baseOverloads.findIndex((baseOverload, index) => {
66
+ // If the override isn't applicable for this base class, skip the check.
67
+ if (baseClass && !isOverrideMethodApplicable(baseOverload, baseClass)) {
68
+ return false;
69
+ }
70
+ const isCompatible = validateOverrideMethodInternal(baseOverload, overrideOverload,
71
+ /* diag */ undefined, enforceParamNames);
72
+ // If the override is compatible but the match is one that is below the previous
73
+ // matched index, keep looking for additional matches. Record the fact that
74
+ // we found at least one match.
75
+ if (isCompatible && index <= previousMatchIndex && possibleMatchIndex === undefined) {
76
+ possibleMatchIndex = index;
77
+ return false;
78
+ }
79
+ return isCompatible;
80
+ });
81
+ if (matchIndex < 0 && possibleMatchIndex !== undefined) {
82
+ matchIndex = possibleMatchIndex;
83
+ }
84
+ if (matchIndex < 0) {
85
+ break;
86
+ }
87
+ if (matchIndex < previousMatchIndex) {
88
+ diag.addMessage(localize_1.LocAddendum.overrideOverloadOrder());
89
+ return false;
90
+ }
91
+ previousMatchIndex = matchIndex;
92
+ }
93
+ if (previousMatchIndex < baseOverloads.length - 1) {
94
+ const unmatchedOverloads = baseOverloads.slice(previousMatchIndex + 1);
95
+ // See if all of the remaining overrides are nonapplicable.
96
+ if (!baseClass ||
97
+ unmatchedOverloads.some((overload) => {
98
+ return isOverrideMethodApplicable(overload, baseClass);
99
+ })) {
100
+ // We didn't find matches for all of the base overloads.
101
+ diag.addMessage(localize_1.LocAddendum.overrideOverloadNoMatch());
102
+ return false;
103
+ }
104
+ }
105
+ return true;
106
+ }
107
+ function isOverrideMethodApplicable(baseMethod, childClass) {
108
+ if (!types_1.FunctionType.isInstanceMethod(baseMethod) &&
109
+ !types_1.FunctionType.isClassMethod(baseMethod) &&
110
+ !types_1.FunctionType.isConstructorMethod(baseMethod)) {
111
+ return true;
112
+ }
113
+ const baseParamDetails = (0, parameterUtils_1.getParamListDetails)(baseMethod);
114
+ if (baseParamDetails.params.length === 0) {
115
+ return true;
116
+ }
117
+ const baseParamType = baseParamDetails.params[0].param;
118
+ if (baseParamType.category !== 0 /* ParamCategory.Simple */ || !types_1.FunctionParam.isTypeDeclared(baseParamType)) {
119
+ return true;
120
+ }
121
+ // If this is a self or cls parameter, determine whether the override
122
+ // class can be assigned to the base parameter type. If not, then this
123
+ // override doesn't apply. This is important for overloads where the
124
+ // base class contains some overload signatures that are not applicable
125
+ // to the child class.
126
+ const childSelfOrClsType = types_1.FunctionType.isInstanceMethod(baseMethod)
127
+ ? types_1.ClassType.cloneAsInstance(childClass)
128
+ : childClass;
129
+ return assignType(baseParamDetails.params[0].type, childSelfOrClsType,
130
+ /* diag */ undefined,
131
+ /* constraints */ undefined, 0 /* AssignTypeFlags.Default */);
132
+ }
133
+ function validateOverrideMethodInternal(baseMethod, overrideMethod, diag, enforceParamNames) {
134
+ const baseParamDetails = (0, parameterUtils_1.getParamListDetails)(baseMethod);
135
+ const overrideParamDetails = (0, parameterUtils_1.getParamListDetails)(overrideMethod);
136
+ const constraints = new constraintTracker_1.ConstraintTracker();
137
+ let canOverride = true;
138
+ if (!types_1.FunctionType.isGradualCallableForm(baseMethod) && !types_1.FunctionType.isGradualCallableForm(overrideMethod)) {
139
+ // Verify that we're not overriding a static, class or instance method with
140
+ // an incompatible type.
141
+ if (types_1.FunctionType.isStaticMethod(baseMethod)) {
142
+ if (!types_1.FunctionType.isStaticMethod(overrideMethod)) {
143
+ diag?.addMessage(localize_1.LocAddendum.overrideNotStaticMethod());
144
+ canOverride = false;
145
+ }
146
+ }
147
+ else if (types_1.FunctionType.isClassMethod(baseMethod)) {
148
+ if (!types_1.FunctionType.isClassMethod(overrideMethod)) {
149
+ diag?.addMessage(localize_1.LocAddendum.overrideNotClassMethod());
150
+ canOverride = false;
151
+ }
152
+ }
153
+ else if (types_1.FunctionType.isInstanceMethod(baseMethod)) {
154
+ if (!types_1.FunctionType.isInstanceMethod(overrideMethod)) {
155
+ diag?.addMessage(localize_1.LocAddendum.overrideNotInstanceMethod());
156
+ canOverride = false;
157
+ }
158
+ }
159
+ // Verify that the positional param count matches exactly or that the override
160
+ // adds only params that preserve the original signature.
161
+ let foundParamCountMismatch = false;
162
+ if (overrideParamDetails.positionParamCount < baseParamDetails.positionParamCount) {
163
+ if (overrideParamDetails.argsIndex === undefined) {
164
+ foundParamCountMismatch = true;
165
+ }
166
+ else {
167
+ const overrideArgsType = overrideParamDetails.params[overrideParamDetails.argsIndex].type;
168
+ for (let i = overrideParamDetails.positionParamCount; i < baseParamDetails.positionParamCount; i++) {
169
+ if (!assignType(overrideArgsType, baseParamDetails.params[i].type, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
170
+ localize_1.LocAddendum.overrideParamType().format({
171
+ index: i + 1,
172
+ baseType: printType(baseParamDetails.params[i].type),
173
+ overrideType: printType(overrideArgsType),
174
+ });
175
+ canOverride = false;
176
+ }
177
+ }
178
+ }
179
+ }
180
+ else if (overrideParamDetails.positionParamCount > baseParamDetails.positionParamCount) {
181
+ const isCallableAttrOverriddenByInstanceMethod = baseParamDetails.positionParamCount === 0 &&
182
+ overrideParamDetails.positionParamCount === 1 &&
183
+ types_1.FunctionType.isInstanceMethod(overrideMethod) &&
184
+ !types_1.FunctionType.isStaticMethod(baseMethod) &&
185
+ !types_1.FunctionType.isClassMethod(baseMethod);
186
+ if (!isCallableAttrOverriddenByInstanceMethod) {
187
+ // Verify that all of the override parameters that extend the
188
+ // signature are either *args, **kwargs or parameters with
189
+ // default values.
190
+ for (let i = baseParamDetails.positionParamCount; i < overrideParamDetails.positionParamCount; i++) {
191
+ const overrideParam = overrideParamDetails.params[i].param;
192
+ if (overrideParam.category === 0 /* ParamCategory.Simple */ &&
193
+ overrideParam.name &&
194
+ !overrideParamDetails.params[i].defaultType) {
195
+ foundParamCountMismatch = true;
196
+ }
197
+ }
198
+ }
199
+ }
200
+ if (foundParamCountMismatch) {
201
+ diag?.addMessage(localize_1.LocAddendum.overridePositionalParamCount().format({
202
+ baseCount: baseParamDetails.params.length,
203
+ overrideCount: overrideParamDetails.params.length,
204
+ }));
205
+ canOverride = false;
206
+ }
207
+ const positionalParamCount = Math.min(baseParamDetails.positionParamCount, overrideParamDetails.positionParamCount);
208
+ for (let i = 0; i < positionalParamCount; i++) {
209
+ // If the first parameter is a "self" or "cls" parameter, skip the
210
+ // test because these are allowed to violate the Liskov substitution
211
+ // principle.
212
+ //
213
+ // Note: the checker deliberately defeats this skip for the
214
+ // "callable variable overridden by a method" case by marking both
215
+ // sides static before calling this routine (see
216
+ // `_getCallableVariableOverrideComparison` in checker.ts). Keep the
217
+ // two in sync if this skip logic changes.
218
+ if (i === 0) {
219
+ if (types_1.FunctionType.isInstanceMethod(overrideMethod) ||
220
+ types_1.FunctionType.isClassMethod(overrideMethod) ||
221
+ types_1.FunctionType.isConstructorMethod(overrideMethod)) {
222
+ continue;
223
+ }
224
+ }
225
+ const baseParam = baseParamDetails.params[i].param;
226
+ const overrideParam = overrideParamDetails.params[i].param;
227
+ if (i >= baseParamDetails.positionOnlyParamCount &&
228
+ !(0, symbolNameUtils_1.isPrivateOrProtectedName)(baseParam.name || '') &&
229
+ baseParamDetails.params[i].kind !== parameterUtils_1.ParamKind.Positional &&
230
+ baseParam.category === 0 /* ParamCategory.Simple */ &&
231
+ enforceParamNames &&
232
+ baseParam.name !== overrideParam.name) {
233
+ if (overrideParam.category === 0 /* ParamCategory.Simple */) {
234
+ if (!types_1.FunctionParam.isNameSynthesized(baseParam)) {
235
+ if (overrideParamDetails.params[i].kind === parameterUtils_1.ParamKind.Positional) {
236
+ diag?.addMessage(localize_1.LocAddendum.overrideParamNamePositionOnly().format({
237
+ index: i + 1,
238
+ baseName: baseParam.name || '*',
239
+ }));
240
+ }
241
+ else {
242
+ diag?.addMessage(localize_1.LocAddendum.overrideParamName().format({
243
+ index: i + 1,
244
+ baseName: baseParam.name || '*',
245
+ overrideName: overrideParam.name || '*',
246
+ }));
247
+ }
248
+ canOverride = false;
249
+ }
250
+ }
251
+ }
252
+ else if (i < overrideParamDetails.positionOnlyParamCount &&
253
+ i >= baseParamDetails.positionOnlyParamCount) {
254
+ if (!types_1.FunctionParam.isNameSynthesized(baseParam) &&
255
+ baseParamDetails.params[i].kind !== parameterUtils_1.ParamKind.Positional &&
256
+ baseParamDetails.params[i].kind !== parameterUtils_1.ParamKind.ExpandedArgs) {
257
+ diag?.addMessage(localize_1.LocAddendum.overrideParamNamePositionOnly().format({
258
+ index: i + 1,
259
+ baseName: baseParam.name || '*',
260
+ }));
261
+ canOverride = false;
262
+ }
263
+ }
264
+ else {
265
+ const baseParamType = baseParamDetails.params[i].type;
266
+ const overrideParamType = overrideParamDetails.params[i].type;
267
+ const baseIsSynthesizedTypeVar = (0, types_1.isTypeVar)(baseParamType) && baseParamType.shared.isSynthesized;
268
+ const overrideIsSynthesizedTypeVar = (0, types_1.isTypeVar)(overrideParamType) && overrideParamType.shared.isSynthesized;
269
+ if (!baseIsSynthesizedTypeVar && !overrideIsSynthesizedTypeVar) {
270
+ if (baseParam.category !== overrideParam.category ||
271
+ !assignType(overrideParamType, baseParamType, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
272
+ diag?.addMessage(localize_1.LocAddendum.overrideParamType().format({
273
+ index: i + 1,
274
+ baseType: printType(baseParamType),
275
+ overrideType: printType(overrideParamType),
276
+ }));
277
+ canOverride = false;
278
+ }
279
+ }
280
+ if (baseParamDetails.params[i].defaultType && !overrideParamDetails.params[i].defaultType) {
281
+ diag?.addMessage(localize_1.LocAddendum.overrideParamNoDefault().format({
282
+ index: i + 1,
283
+ }));
284
+ canOverride = false;
285
+ }
286
+ }
287
+ }
288
+ // Check for positional (named) parameters in the base method that
289
+ // do not exist in the override.
290
+ if (enforceParamNames && overrideParamDetails.kwargsIndex === undefined) {
291
+ for (let i = positionalParamCount; i < baseParamDetails.positionParamCount; i++) {
292
+ const baseParam = baseParamDetails.params[i];
293
+ if (baseParam.kind === parameterUtils_1.ParamKind.Standard && baseParam.param.category === 0 /* ParamCategory.Simple */) {
294
+ diag?.addMessage(localize_1.LocAddendum.overrideParamNamePositionOnly().format({
295
+ index: i + 1,
296
+ baseName: baseParam.param.name || '*',
297
+ }));
298
+ canOverride = false;
299
+ }
300
+ }
301
+ }
302
+ // Check for a *args match.
303
+ if (baseParamDetails.argsIndex !== undefined) {
304
+ if (overrideParamDetails.argsIndex === undefined) {
305
+ diag?.addMessage(localize_1.LocAddendum.overrideParamNameMissing().format({
306
+ name: baseParamDetails.params[baseParamDetails.argsIndex].param.name ?? '?',
307
+ }));
308
+ canOverride = false;
309
+ }
310
+ else {
311
+ const overrideParamType = overrideParamDetails.params[overrideParamDetails.argsIndex].type;
312
+ const baseParamType = baseParamDetails.params[baseParamDetails.argsIndex].type;
313
+ if (!assignType(overrideParamType, baseParamType, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
314
+ diag?.addMessage(localize_1.LocAddendum.overrideParamKeywordType().format({
315
+ name: overrideParamDetails.params[overrideParamDetails.argsIndex].param.name ?? '?',
316
+ baseType: printType(baseParamType),
317
+ overrideType: printType(overrideParamType),
318
+ }));
319
+ canOverride = false;
320
+ }
321
+ }
322
+ }
323
+ // Now check any keyword-only parameters.
324
+ const baseKwOnlyParams = baseParamDetails.params.filter((paramInfo) => paramInfo.kind === parameterUtils_1.ParamKind.Keyword && paramInfo.param.category === 0 /* ParamCategory.Simple */);
325
+ const overrideKwOnlyParams = overrideParamDetails.params.filter((paramInfo) => paramInfo.kind === parameterUtils_1.ParamKind.Keyword && paramInfo.param.category === 0 /* ParamCategory.Simple */);
326
+ baseKwOnlyParams.forEach((paramInfo) => {
327
+ const overrideParamInfo = overrideKwOnlyParams.find((pi) => paramInfo.param.name === pi.param.name);
328
+ if (!overrideParamInfo && overrideParamDetails.kwargsIndex === undefined) {
329
+ diag?.addMessage(localize_1.LocAddendum.overrideParamNameMissing().format({
330
+ name: paramInfo.param.name ?? '?',
331
+ }));
332
+ canOverride = false;
333
+ }
334
+ else {
335
+ let targetParamType = overrideParamInfo?.type;
336
+ if (!targetParamType) {
337
+ targetParamType = overrideParamDetails.params[overrideParamDetails.kwargsIndex].type;
338
+ }
339
+ if (!assignType(targetParamType, paramInfo.type, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
340
+ diag?.addMessage(localize_1.LocAddendum.overrideParamKeywordType().format({
341
+ name: paramInfo.param.name ?? '?',
342
+ baseType: printType(paramInfo.type),
343
+ overrideType: printType(targetParamType),
344
+ }));
345
+ canOverride = false;
346
+ }
347
+ if (overrideParamInfo) {
348
+ if (paramInfo.defaultType && !overrideParamInfo.defaultType) {
349
+ diag?.addMessage(localize_1.LocAddendum.overrideParamKeywordNoDefault().format({
350
+ name: overrideParamInfo.param.name ?? '?',
351
+ }));
352
+ canOverride = false;
353
+ }
354
+ }
355
+ }
356
+ });
357
+ // Verify that any keyword-only parameters added by the overload are compatible
358
+ // with the **kwargs in the base.
359
+ overrideKwOnlyParams.forEach((paramInfo) => {
360
+ const baseParamInfo = baseKwOnlyParams.find((pi) => paramInfo.param.name === pi.param.name);
361
+ if (!baseParamInfo) {
362
+ if (baseParamDetails.kwargsIndex === undefined) {
363
+ if (!paramInfo.defaultType) {
364
+ diag?.addMessage(localize_1.LocAddendum.overrideParamNameExtra().format({
365
+ name: paramInfo.param.name ?? '?',
366
+ }));
367
+ canOverride = false;
368
+ }
369
+ }
370
+ else {
371
+ // Base has a **kwargs; ensure the added keyword-only parameter's
372
+ // type is compatible with the base's **kwargs value type.
373
+ const baseKwargsType = baseParamDetails.params[baseParamDetails.kwargsIndex].type;
374
+ if (!assignType(paramInfo.type, baseKwargsType, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
375
+ diag?.addMessage(localize_1.LocAddendum.overrideParamKeywordType().format({
376
+ name: paramInfo.param.name ?? '?',
377
+ baseType: printType(baseKwargsType),
378
+ overrideType: printType(paramInfo.type),
379
+ }));
380
+ canOverride = false;
381
+ }
382
+ }
383
+ }
384
+ });
385
+ // Verify that if the base method has a **kwargs parameter, the override does too.
386
+ if (baseParamDetails.kwargsIndex !== undefined && overrideParamDetails.kwargsIndex === undefined) {
387
+ diag?.addMessage(localize_1.LocAddendum.kwargsParamMissing().format({
388
+ paramName: baseParamDetails.params[baseParamDetails.kwargsIndex].param.name,
389
+ }));
390
+ canOverride = false;
391
+ }
392
+ }
393
+ // Verify that one or the other method doesn't contain a ParamSpec.
394
+ if (baseParamDetails.paramSpec && !overrideParamDetails.paramSpec) {
395
+ // If the override uses an `*args: Any, **kwargs: Any` signature, we
396
+ // will allow this as an acceptable overload for a `*args: P.args, **kwargs: P.kwargs`.
397
+ const overrideHasArgsKwargs = overrideParamDetails.argsIndex !== undefined &&
398
+ (0, types_1.isAnyOrUnknown)(overrideParamDetails.params[overrideParamDetails.argsIndex].type) &&
399
+ overrideParamDetails.kwargsIndex !== undefined &&
400
+ (0, types_1.isAnyOrUnknown)(overrideParamDetails.params[overrideParamDetails.kwargsIndex].type);
401
+ if (!overrideHasArgsKwargs) {
402
+ diag?.addMessage(localize_1.LocAddendum.paramSpecMissingInOverride());
403
+ canOverride = false;
404
+ }
405
+ }
406
+ // Now check the return type.
407
+ const baseReturnType = getEffectiveReturnType(baseMethod);
408
+ const overrideReturnType = solveAndApplyConstraints(getEffectiveReturnType(overrideMethod), constraints);
409
+ if (!assignType(baseReturnType, overrideReturnType, diag?.createAddendum(), constraints, 0 /* AssignTypeFlags.Default */)) {
410
+ diag?.addMessage(localize_1.LocAddendum.overrideReturnType().format({
411
+ baseType: printType(baseReturnType),
412
+ overrideType: printType(overrideReturnType),
413
+ }));
414
+ canOverride = false;
415
+ }
416
+ return canOverride;
417
+ }
418
+ return {
419
+ validateOverrideMethod,
420
+ };
421
+ }
422
+ //# sourceMappingURL=overrideValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrideValidation.js","sourceRoot":"","sources":["../../../../../../src/analyzer/typeEvaluator/overrideValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { ExpressionNode, FunctionNode, ParseNode } from '../../parser/parseNodes';
2
+ import * as AnalyzerNodeInfo from '../analyzerNodeInfo';
3
+ import { CodeFlowEngine } from '../codeFlowEngine';
4
+ import { SpeculativeTypeTracker } from '../typeCacheUtils';
5
+ import { ReturnTypeInferenceContext, TypeCacheEntry, TypeFormTypeCacheEntry } from '../typeEvaluator/internals';
6
+ import { CallSiteEvaluationInfo, EvalFlags, FunctionTypeResult, TypeEvaluator, TypeResult } from '../typeEvaluatorTypes';
7
+ import { FunctionType, Type } from '../types';
8
+ import { InferenceContext } from '../typeUtils';
9
+ interface Context {
10
+ readonly codeFlowEngine: CodeFlowEngine;
11
+ readonly convertSpecialFormToRuntimeValue: (type: Type, flags: EvalFlags, convertModule?: boolean) => Type;
12
+ readonly getTypeOfExpression: TypeEvaluator['getTypeOfExpression'];
13
+ readonly getTypeOfFunction: (node: FunctionNode) => FunctionTypeResult | undefined;
14
+ readonly inferFunctionReturnType: (node: FunctionNode, isAbstract: boolean, callerNode: ExpressionNode | undefined) => TypeResult | undefined;
15
+ readonly maxCallSiteReturnTypeCacheSize: 8;
16
+ readonly maxReturnCallSiteTypeInferenceCodeFlowComplexity: 8;
17
+ readonly maxReturnTypeInferenceArgCount: 6;
18
+ readonly maxReturnTypeInferenceStackSize: 2;
19
+ readonly nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoAccessor;
20
+ readonly returnTypeInferenceContextStack: ReturnTypeInferenceContext[];
21
+ returnTypeInferenceTypeCache: Map<number, TypeCacheEntry> | undefined;
22
+ returnTypeInferenceTypeFormTypeCache: Map<number, TypeFormTypeCacheEntry[]> | undefined;
23
+ readonly speculativeTypeTracker: SpeculativeTypeTracker;
24
+ readonly stripLiteralValue: (type: Type) => Type;
25
+ readonly suppressDiagnostics: <T>(node: ParseNode, callback: () => T, diagCallback?: (suppressedDiags: string[]) => void) => T;
26
+ readonly writeTypeCache: (node: ParseNode, typeResult: TypeResult, flags: EvalFlags | undefined, inferenceContext?: InferenceContext, allowSpeculativeCaching?: boolean) => void;
27
+ }
28
+ export declare function createReturnTypeInference(context: Context): {
29
+ isNodeInReturnTypeInferenceContext: (node: ParseNode) => boolean;
30
+ getCodeFlowAnalyzerForReturnTypeInferenceContext: () => import("../codeFlowEngine").CodeFlowAnalyzer;
31
+ inferReturnTypeForCallSite: (type: FunctionType, callSiteInfo: CallSiteEvaluationInfo) => Type | undefined;
32
+ };
33
+ export {};