@zzzen/pyright-internal 1.2.0-dev.20230604 → 1.2.0-dev.20230618

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 (109) hide show
  1. package/dist/analyzer/checker.js +53 -32
  2. package/dist/analyzer/checker.js.map +1 -1
  3. package/dist/analyzer/constraintSolver.js +17 -11
  4. package/dist/analyzer/constraintSolver.js.map +1 -1
  5. package/dist/analyzer/constructors.js +3 -2
  6. package/dist/analyzer/constructors.js.map +1 -1
  7. package/dist/analyzer/dataClasses.js +1 -1
  8. package/dist/analyzer/dataClasses.js.map +1 -1
  9. package/dist/analyzer/importResolver.d.ts +2 -0
  10. package/dist/analyzer/importResolver.js +57 -35
  11. package/dist/analyzer/importResolver.js.map +1 -1
  12. package/dist/analyzer/operations.js +2 -0
  13. package/dist/analyzer/operations.js.map +1 -1
  14. package/dist/analyzer/program.d.ts +2 -2
  15. package/dist/analyzer/program.js +12 -33
  16. package/dist/analyzer/program.js.map +1 -1
  17. package/dist/analyzer/protocols.d.ts +1 -1
  18. package/dist/analyzer/protocols.js +225 -205
  19. package/dist/analyzer/protocols.js.map +1 -1
  20. package/dist/analyzer/service.d.ts +2 -2
  21. package/dist/analyzer/service.js +15 -7
  22. package/dist/analyzer/service.js.map +1 -1
  23. package/dist/analyzer/typeEvaluator.js +272 -137
  24. package/dist/analyzer/typeEvaluator.js.map +1 -1
  25. package/dist/analyzer/typeEvaluatorTypes.d.ts +5 -2
  26. package/dist/analyzer/typeEvaluatorTypes.js +2 -0
  27. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  28. package/dist/analyzer/typeGuards.js +1 -1
  29. package/dist/analyzer/typeGuards.js.map +1 -1
  30. package/dist/analyzer/typeUtils.d.ts +20 -21
  31. package/dist/analyzer/typeUtils.js +162 -107
  32. package/dist/analyzer/typeUtils.js.map +1 -1
  33. package/dist/analyzer/types.d.ts +2 -0
  34. package/dist/analyzer/types.js +7 -3
  35. package/dist/analyzer/types.js.map +1 -1
  36. package/dist/backgroundAnalysisBase.d.ts +1 -1
  37. package/dist/backgroundAnalysisBase.js +2 -2
  38. package/dist/backgroundAnalysisBase.js.map +1 -1
  39. package/dist/backgroundThreadBase.d.ts +12 -9
  40. package/dist/backgroundThreadBase.js +28 -20
  41. package/dist/backgroundThreadBase.js.map +1 -1
  42. package/dist/common/charCodes.d.ts +147 -0
  43. package/dist/common/charCodes.js +164 -0
  44. package/dist/common/charCodes.js.map +1 -0
  45. package/dist/common/extensibility.d.ts +6 -2
  46. package/dist/common/extensibility.js.map +1 -1
  47. package/dist/common/fileSystem.d.ts +1 -0
  48. package/dist/common/fileSystem.js.map +1 -1
  49. package/dist/common/pathUtils.js.map +1 -1
  50. package/dist/common/realFileSystem.js +3 -0
  51. package/dist/common/realFileSystem.js.map +1 -1
  52. package/dist/common/workspaceEditUtils.d.ts +3 -3
  53. package/dist/common/workspaceEditUtils.js +23 -13
  54. package/dist/common/workspaceEditUtils.js.map +1 -1
  55. package/dist/languageServerBase.d.ts +51 -3
  56. package/dist/languageServerBase.js +5 -5
  57. package/dist/languageServerBase.js.map +1 -1
  58. package/dist/languageService/completionProvider.js +2 -0
  59. package/dist/languageService/completionProvider.js.map +1 -1
  60. package/dist/languageService/definitionProvider.d.ts +2 -0
  61. package/dist/languageService/definitionProvider.js +82 -74
  62. package/dist/languageService/definitionProvider.js.map +1 -1
  63. package/dist/languageService/hoverProvider.d.ts +16 -8
  64. package/dist/languageService/hoverProvider.js +53 -53
  65. package/dist/languageService/hoverProvider.js.map +1 -1
  66. package/dist/localization/localize.d.ts +7 -6
  67. package/dist/localization/localize.js +3 -3
  68. package/dist/localization/localize.js.map +1 -1
  69. package/dist/localization/package.nls.en-us.json +3 -3
  70. package/dist/parser/characterStream.js.map +1 -1
  71. package/dist/parser/characters.js.map +1 -1
  72. package/dist/parser/parser.js +5 -2
  73. package/dist/parser/parser.js.map +1 -1
  74. package/dist/parser/stringTokenUtils.js.map +1 -1
  75. package/dist/parser/tokenizer.js +10 -1
  76. package/dist/parser/tokenizer.js.map +1 -1
  77. package/dist/pyright.js +1 -1
  78. package/dist/pyright.js.map +1 -1
  79. package/dist/pyrightFileSystem.d.ts +1 -0
  80. package/dist/pyrightFileSystem.js +3 -0
  81. package/dist/pyrightFileSystem.js.map +1 -1
  82. package/dist/readonlyAugmentedFileSystem.d.ts +1 -0
  83. package/dist/readonlyAugmentedFileSystem.js +3 -0
  84. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  85. package/dist/tests/checker.test.js +1 -1
  86. package/dist/tests/harness/fourslash/testLanguageService.d.ts +1 -0
  87. package/dist/tests/harness/fourslash/testLanguageService.js +3 -0
  88. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  89. package/dist/tests/harness/fourslash/testState.js +2 -2
  90. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  91. package/dist/tests/harness/vfs/filesystem.d.ts +12 -1
  92. package/dist/tests/harness/vfs/filesystem.js +33 -6
  93. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  94. package/dist/tests/tokenizer.test.js +13 -2
  95. package/dist/tests/tokenizer.test.js.map +1 -1
  96. package/dist/tests/typeEvaluator1.test.js +5 -1
  97. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  98. package/dist/tests/typeEvaluator2.test.js +17 -1
  99. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  100. package/dist/tests/typeEvaluator3.test.js +10 -2
  101. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  102. package/dist/tests/typeEvaluator4.test.js +1 -1
  103. package/dist/tests/typeEvaluator5.test.js +1 -1
  104. package/dist/tests/workspaceEditUtils.test.js +2 -3
  105. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  106. package/dist/workspaceFactory.d.ts +2 -0
  107. package/dist/workspaceFactory.js +11 -2
  108. package/dist/workspaceFactory.js.map +1 -1
  109. package/package.json +1 -2
@@ -71,9 +71,7 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
71
71
  if ((flags & 1 /* EnforceInvariance */) !== 0) {
72
72
  return (0, types_1.isTypeSame)(destType, srcType);
73
73
  }
74
- // Strip the type arguments off the dest protocol if they are provided.
75
- const genericDestType = types_1.ClassType.cloneForSpecialization(destType, undefined, /* isTypeArgumentExplicit */ false);
76
- const genericDestTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(destType));
74
+ const protocolTypeVarContext = createProtocolTypeVarContext(evaluator, destType, destTypeVarContext);
77
75
  const selfTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(destType));
78
76
  const noLiteralSrcType = evaluator.stripLiteralValue(srcType);
79
77
  (0, typeUtils_1.populateTypeVarContextForSelfType)(selfTypeVarContext, destType, noLiteralSrcType);
@@ -109,170 +107,168 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
109
107
  if (!typesAreConsistent && !diag) {
110
108
  return;
111
109
  }
112
- if (symbol.isClassMember() && !symbol.isIgnoredForProtocolMatch() && !checkedSymbolSet.has(name)) {
113
- let isMemberFromMetaclass = false;
114
- let srcMemberInfo;
115
- // Special-case the `__class_getitem__` for normal protocol comparison.
116
- // This is a convention agreed upon by typeshed maintainers.
117
- if (!treatSourceAsInstantiable && name === '__class_getitem__') {
118
- return;
110
+ if (!symbol.isClassMember() || symbol.isIgnoredForProtocolMatch() || checkedSymbolSet.has(name)) {
111
+ return;
112
+ }
113
+ let isMemberFromMetaclass = false;
114
+ let srcMemberInfo;
115
+ // Special-case the `__class_getitem__` for normal protocol comparison.
116
+ // This is a convention agreed upon by typeshed maintainers.
117
+ if (!treatSourceAsInstantiable && name === '__class_getitem__') {
118
+ return;
119
+ }
120
+ // Special-case the `__slots__` entry for all protocol comparisons.
121
+ // This is a convention agreed upon by typeshed maintainers.
122
+ if (name === '__slots__') {
123
+ return;
124
+ }
125
+ // Note that we've already checked this symbol. It doesn't need to
126
+ // be checked again even if it is declared by a subclass.
127
+ checkedSymbolSet.add(name);
128
+ // Look in the metaclass first if we're treating the source as an instantiable class.
129
+ if (treatSourceAsInstantiable &&
130
+ srcType.details.effectiveMetaclass &&
131
+ (0, types_1.isInstantiableClass)(srcType.details.effectiveMetaclass)) {
132
+ srcMemberInfo = (0, typeUtils_1.lookUpClassMember)(srcType.details.effectiveMetaclass, name);
133
+ if (srcMemberInfo) {
134
+ srcClassTypeVarContext.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(srcType.details.effectiveMetaclass));
135
+ isMemberFromMetaclass = true;
119
136
  }
120
- // Special-case the `__slots__` entry for all protocol comparisons.
121
- // This is a convention agreed upon by typeshed maintainers.
122
- if (name === '__slots__') {
123
- return;
137
+ }
138
+ if (!srcMemberInfo) {
139
+ srcMemberInfo = (0, typeUtils_1.lookUpClassMember)(srcType, name);
140
+ }
141
+ if (!srcMemberInfo) {
142
+ diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name }));
143
+ typesAreConsistent = false;
144
+ return;
145
+ }
146
+ if (symbol.isClassVar() && !srcMemberInfo.symbol.isClassVar() && !srcMemberInfo.symbol.isClassMember()) {
147
+ diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberClassVar().format({ name }));
148
+ typesAreConsistent = false;
149
+ }
150
+ let destMemberType = (_a = evaluator.getDeclaredTypeOfSymbol(symbol)) === null || _a === void 0 ? void 0 : _a.type;
151
+ if (!destMemberType) {
152
+ return;
153
+ }
154
+ // Partially specialize the type of the symbol based on the MRO class.
155
+ // We can skip this if it's the dest class because it is already
156
+ // specialized.
157
+ if (!types_1.ClassType.isSameGenericClass(mroClass, destType)) {
158
+ destMemberType = (0, typeUtils_1.partiallySpecializeType)(destMemberType, mroClass, srcType);
159
+ }
160
+ let srcMemberType;
161
+ if ((0, types_1.isInstantiableClass)(srcMemberInfo.classType)) {
162
+ const symbolType = evaluator.getEffectiveTypeOfSymbol(srcMemberInfo.symbol);
163
+ // If this is a function, infer its return type prior to specializing it.
164
+ if ((0, types_1.isFunction)(symbolType)) {
165
+ evaluator.inferReturnTypeIfNecessary(symbolType);
124
166
  }
125
- // Note that we've already checked this symbol. It doesn't need to
126
- // be checked again even if it is declared by a subclass.
127
- checkedSymbolSet.add(name);
128
- // Look in the metaclass first if we're treating the source as an instantiable class.
129
- if (treatSourceAsInstantiable &&
130
- srcType.details.effectiveMetaclass &&
131
- (0, types_1.isInstantiableClass)(srcType.details.effectiveMetaclass)) {
132
- srcMemberInfo = (0, typeUtils_1.lookUpClassMember)(srcType.details.effectiveMetaclass, name);
133
- if (srcMemberInfo) {
134
- srcClassTypeVarContext.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(srcType.details.effectiveMetaclass));
135
- isMemberFromMetaclass = true;
167
+ srcMemberType = (0, typeUtils_1.partiallySpecializeType)(symbolType, srcMemberInfo.classType, noLiteralSrcType);
168
+ }
169
+ else {
170
+ srcMemberType = types_1.UnknownType.create();
171
+ }
172
+ if ((0, types_1.isFunction)(srcMemberType) || (0, types_1.isOverloadedFunction)(srcMemberType)) {
173
+ if (isMemberFromMetaclass) {
174
+ const boundSrcFunction = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), srcMemberType,
175
+ /* memberClass */ undefined,
176
+ /* errorNode */ undefined, recursionCount,
177
+ /* treatConstructorAsClassMember */ false, srcType);
178
+ if (boundSrcFunction) {
179
+ srcMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundSrcFunction);
180
+ }
181
+ if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
182
+ const boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), destMemberType,
183
+ /* memberClass */ undefined,
184
+ /* errorNode */ undefined, recursionCount,
185
+ /* treatConstructorAsClassMember */ false, srcType);
186
+ if (boundDeclaredType) {
187
+ destMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundDeclaredType);
188
+ }
136
189
  }
137
190
  }
138
- if (!srcMemberInfo) {
139
- srcMemberInfo = (0, typeUtils_1.lookUpClassMember)(srcType, name);
191
+ else if ((0, types_1.isInstantiableClass)(srcMemberInfo.classType)) {
192
+ // Replace any "Self" TypeVar within the dest with the source type.
193
+ destMemberType = (0, typeUtils_1.applySolvedTypeVars)(destMemberType, selfTypeVarContext);
194
+ const boundSrcFunction = evaluator.bindFunctionToClassOrObject(treatSourceAsInstantiable ? srcType : types_1.ClassType.cloneAsInstance(srcType), srcMemberType, srcMemberInfo.classType,
195
+ /* errorNode */ undefined, recursionCount);
196
+ if (boundSrcFunction) {
197
+ srcMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundSrcFunction);
198
+ }
199
+ if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
200
+ const boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), destMemberType, srcMemberInfo.classType,
201
+ /* errorNode */ undefined, recursionCount);
202
+ if (boundDeclaredType) {
203
+ destMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundDeclaredType);
204
+ }
205
+ }
140
206
  }
141
- if (!srcMemberInfo) {
142
- diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name }));
143
- typesAreConsistent = false;
207
+ }
208
+ else {
209
+ // Replace any "Self" TypeVar within the dest with the source type.
210
+ destMemberType = (0, typeUtils_1.applySolvedTypeVars)(destMemberType, selfTypeVarContext);
211
+ }
212
+ const subDiag = diag === null || diag === void 0 ? void 0 : diag.createAddendum();
213
+ // Properties require special processing.
214
+ if ((0, types_1.isClassInstance)(destMemberType) && types_1.ClassType.isPropertyClass(destMemberType)) {
215
+ if ((0, types_1.isClassInstance)(srcMemberType) &&
216
+ types_1.ClassType.isPropertyClass(srcMemberType) &&
217
+ !treatSourceAsInstantiable) {
218
+ if (!(0, properties_1.assignProperty)(evaluator, types_1.ClassType.cloneAsInstantiable(destMemberType), types_1.ClassType.cloneAsInstantiable(srcMemberType), mroClass, srcType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), protocolTypeVarContext, selfTypeVarContext, recursionCount)) {
219
+ if (subDiag) {
220
+ subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }));
221
+ }
222
+ typesAreConsistent = false;
223
+ }
144
224
  }
145
225
  else {
146
- let destMemberType = (_a = evaluator.getDeclaredTypeOfSymbol(symbol)) === null || _a === void 0 ? void 0 : _a.type;
147
- if (destMemberType) {
148
- // Partially specialize the type of the symbol based on the MRO class.
149
- // We can skip this if it's the dest class because it is already
150
- // specialized.
151
- if (!types_1.ClassType.isSameGenericClass(mroClass, destType)) {
152
- destMemberType = (0, typeUtils_1.partiallySpecializeType)(destMemberType, mroClass, srcType);
153
- }
154
- let srcMemberType;
155
- if ((0, types_1.isInstantiableClass)(srcMemberInfo.classType)) {
156
- const symbolType = evaluator.getEffectiveTypeOfSymbol(srcMemberInfo.symbol);
157
- // If this is a function, infer its return type prior to specializing it.
158
- if ((0, types_1.isFunction)(symbolType)) {
159
- evaluator.inferReturnTypeIfNecessary(symbolType);
160
- }
161
- srcMemberType = (0, typeUtils_1.partiallySpecializeType)(symbolType, srcMemberInfo.classType, noLiteralSrcType);
162
- }
163
- else {
164
- srcMemberType = types_1.UnknownType.create();
165
- }
166
- if ((0, types_1.isFunction)(srcMemberType) || (0, types_1.isOverloadedFunction)(srcMemberType)) {
167
- if (isMemberFromMetaclass) {
168
- const boundSrcFunction = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), srcMemberType,
169
- /* memberClass */ undefined,
170
- /* errorNode */ undefined, recursionCount,
171
- /* treatConstructorAsClassMember */ false, srcType);
172
- if (boundSrcFunction) {
173
- srcMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundSrcFunction);
174
- }
175
- if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
176
- const boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), destMemberType,
177
- /* memberClass */ undefined,
178
- /* errorNode */ undefined, recursionCount,
179
- /* treatConstructorAsClassMember */ false, srcType);
180
- if (boundDeclaredType) {
181
- destMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundDeclaredType);
182
- }
183
- }
184
- }
185
- else if ((0, types_1.isInstantiableClass)(srcMemberInfo.classType)) {
186
- // Replace any "Self" TypeVar within the dest with the source type.
187
- destMemberType = (0, typeUtils_1.applySolvedTypeVars)(destMemberType, selfTypeVarContext);
188
- const boundSrcFunction = evaluator.bindFunctionToClassOrObject(treatSourceAsInstantiable ? srcType : types_1.ClassType.cloneAsInstance(srcType), srcMemberType, srcMemberInfo.classType,
189
- /* errorNode */ undefined, recursionCount);
190
- if (boundSrcFunction) {
191
- srcMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundSrcFunction);
192
- }
193
- if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
194
- const boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), destMemberType, srcMemberInfo.classType,
195
- /* errorNode */ undefined, recursionCount);
196
- if (boundDeclaredType) {
197
- destMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundDeclaredType);
198
- }
199
- }
200
- }
201
- }
202
- else {
203
- // Replace any "Self" TypeVar within the dest with the source type.
204
- destMemberType = (0, typeUtils_1.applySolvedTypeVars)(destMemberType, selfTypeVarContext);
205
- }
206
- const subDiag = diag === null || diag === void 0 ? void 0 : diag.createAddendum();
207
- // Properties require special processing.
208
- if ((0, types_1.isClassInstance)(destMemberType) && types_1.ClassType.isPropertyClass(destMemberType)) {
209
- if ((0, types_1.isClassInstance)(srcMemberType) &&
210
- types_1.ClassType.isPropertyClass(srcMemberType) &&
211
- !treatSourceAsInstantiable) {
212
- if (!(0, properties_1.assignProperty)(evaluator, types_1.ClassType.cloneAsInstantiable(destMemberType), types_1.ClassType.cloneAsInstantiable(srcMemberType), mroClass, srcType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), genericDestTypeVarContext, selfTypeVarContext, recursionCount)) {
213
- if (subDiag) {
214
- subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }));
215
- }
216
- typesAreConsistent = false;
217
- }
218
- }
219
- else {
220
- // Extract the property type from the property class.
221
- const getterType = evaluator.getGetterTypeFromProperty(destMemberType,
222
- /* inferTypeIfNeeded */ true);
223
- if (!getterType ||
224
- !evaluator.assignType(getterType, srcMemberType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), genericDestTypeVarContext,
225
- /* srcTypeVarContext */ undefined, assignTypeFlags, recursionCount)) {
226
- if (subDiag) {
227
- subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }));
228
- }
229
- typesAreConsistent = false;
230
- }
231
- }
232
- }
233
- else {
234
- // Class and instance variables that are mutable need to
235
- // enforce invariance.
236
- const primaryDecl = symbol.getDeclarations()[0];
237
- const isInvariant = (primaryDecl === null || primaryDecl === void 0 ? void 0 : primaryDecl.type) === 1 /* Variable */ && !primaryDecl.isFinal;
238
- if (!evaluator.assignType(destMemberType, srcMemberType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), genericDestTypeVarContext,
239
- /* srcTypeVarContext */ undefined, isInvariant ? assignTypeFlags | 1 /* EnforceInvariance */ : assignTypeFlags, recursionCount)) {
240
- if (subDiag) {
241
- if (isInvariant) {
242
- subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberIsInvariant().format({ name }));
243
- }
244
- subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }));
245
- }
246
- typesAreConsistent = false;
247
- }
226
+ // Extract the property type from the property class.
227
+ const getterType = evaluator.getGetterTypeFromProperty(destMemberType,
228
+ /* inferTypeIfNeeded */ true);
229
+ if (!getterType ||
230
+ !evaluator.assignType(getterType, srcMemberType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), protocolTypeVarContext,
231
+ /* srcTypeVarContext */ undefined, assignTypeFlags, recursionCount)) {
232
+ if (subDiag) {
233
+ subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }));
248
234
  }
249
- const isDestFinal = symbol
250
- .getTypedDeclarations()
251
- .some((decl) => decl.type === 1 /* Variable */ && !!decl.isFinal);
252
- const isSrcFinal = srcMemberInfo.symbol
253
- .getTypedDeclarations()
254
- .some((decl) => decl.type === 1 /* Variable */ && !!decl.isFinal);
255
- if (isDestFinal !== isSrcFinal) {
256
- if (isDestFinal) {
257
- if (subDiag) {
258
- subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberIsFinalInProtocol().format({ name }));
259
- }
260
- }
261
- else {
262
- if (subDiag) {
263
- subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberIsNotFinalInProtocol().format({ name }));
264
- }
265
- }
266
- typesAreConsistent = false;
235
+ typesAreConsistent = false;
236
+ }
237
+ }
238
+ }
239
+ else {
240
+ // Class and instance variables that are mutable need to enforce invariance.
241
+ const primaryDecl = symbol.getDeclarations()[0];
242
+ const isInvariant = (primaryDecl === null || primaryDecl === void 0 ? void 0 : primaryDecl.type) === 1 /* Variable */ && !primaryDecl.isFinal;
243
+ if (!evaluator.assignType(destMemberType, srcMemberType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), protocolTypeVarContext,
244
+ /* srcTypeVarContext */ undefined, isInvariant ? assignTypeFlags | 1 /* EnforceInvariance */ : assignTypeFlags, recursionCount)) {
245
+ if (subDiag) {
246
+ if (isInvariant) {
247
+ subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberIsInvariant().format({ name }));
267
248
  }
249
+ subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }));
268
250
  }
269
- if (symbol.isClassVar() &&
270
- !srcMemberInfo.symbol.isClassVar() &&
271
- !srcMemberInfo.symbol.isClassMember()) {
272
- diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberClassVar().format({ name }));
273
- typesAreConsistent = false;
251
+ typesAreConsistent = false;
252
+ }
253
+ }
254
+ const isDestFinal = symbol
255
+ .getTypedDeclarations()
256
+ .some((decl) => decl.type === 1 /* Variable */ && !!decl.isFinal);
257
+ const isSrcFinal = srcMemberInfo.symbol
258
+ .getTypedDeclarations()
259
+ .some((decl) => decl.type === 1 /* Variable */ && !!decl.isFinal);
260
+ if (isDestFinal !== isSrcFinal) {
261
+ if (isDestFinal) {
262
+ if (subDiag) {
263
+ subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberIsFinalInProtocol().format({ name }));
274
264
  }
275
265
  }
266
+ else {
267
+ if (subDiag) {
268
+ subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberIsNotFinalInProtocol().format({ name }));
269
+ }
270
+ }
271
+ typesAreConsistent = false;
276
272
  }
277
273
  });
278
274
  });
@@ -280,86 +276,84 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
280
276
  if (typesAreConsistent && destType.details.typeParameters.length > 0) {
281
277
  // Create a specialized version of the protocol defined by the dest and
282
278
  // make sure the resulting type args can be assigned.
283
- const specializedDestProtocol = (0, typeUtils_1.applySolvedTypeVars)(genericDestType, genericDestTypeVarContext);
279
+ const genericProtocolType = types_1.ClassType.cloneForSpecialization(destType, undefined,
280
+ /* isTypeArgumentExplicit */ false);
281
+ const specializedProtocolType = (0, typeUtils_1.applySolvedTypeVars)(genericProtocolType, protocolTypeVarContext);
284
282
  if (destType.typeArguments) {
285
- if (!evaluator.verifyTypeArgumentsAssignable(destType, specializedDestProtocol, diag, destTypeVarContext, srcTypeVarContext, flags, recursionCount)) {
283
+ if (!evaluator.verifyTypeArgumentsAssignable(destType, specializedProtocolType, diag, destTypeVarContext, srcTypeVarContext, flags, recursionCount)) {
286
284
  typesAreConsistent = false;
287
285
  }
288
286
  }
289
- else if (destTypeVarContext &&
290
- destType.details.typeParameters.length > 0 &&
291
- specializedDestProtocol.typeArguments &&
292
- !destTypeVarContext.isLocked()) {
293
- // Populate the typeVar map with type arguments of the source.
294
- const srcTypeArgs = specializedDestProtocol.typeArguments;
295
- for (let i = 0; i < destType.details.typeParameters.length; i++) {
296
- const typeArgType = i < srcTypeArgs.length ? srcTypeArgs[i] : types_1.UnknownType.create();
297
- destTypeVarContext.setTypeVarType(destType.details.typeParameters[i],
298
- /* narrowBound */ undefined,
299
- /* narrowBoundNoLiterals */ undefined, typeArgType);
287
+ else if (destTypeVarContext && !destTypeVarContext.isLocked()) {
288
+ for (const typeParam of destType.details.typeParameters) {
289
+ const typeArgEntry = protocolTypeVarContext.getPrimarySignature().getTypeVar(typeParam);
290
+ if (typeArgEntry) {
291
+ destTypeVarContext.setTypeVarType(typeParam, typeArgEntry === null || typeArgEntry === void 0 ? void 0 : typeArgEntry.narrowBound, typeArgEntry === null || typeArgEntry === void 0 ? void 0 : typeArgEntry.narrowBoundNoLiterals, typeArgEntry === null || typeArgEntry === void 0 ? void 0 : typeArgEntry.wideBound);
292
+ }
300
293
  }
301
294
  }
302
295
  }
303
296
  return typesAreConsistent;
304
297
  }
305
- function assignModuleToProtocol(evaluator, destType, srcType, diag, typeVarContext, flags, recursionCount) {
298
+ function assignModuleToProtocol(evaluator, destType, srcType, diag, destTypeVarContext, flags, recursionCount) {
306
299
  if (recursionCount > types_1.maxTypeRecursionCount) {
307
300
  return true;
308
301
  }
309
302
  recursionCount++;
310
303
  let typesAreConsistent = true;
311
304
  const checkedSymbolSet = new Set();
312
- // Strip the type arguments off the dest protocol if they are provided.
313
- const genericDestType = types_1.ClassType.cloneForSpecialization(destType, undefined, /* isTypeArgumentExplicit */ false);
314
- const genericDestTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(destType));
305
+ const protocolTypeVarContext = createProtocolTypeVarContext(evaluator, destType, destTypeVarContext);
315
306
  destType.details.mro.forEach((mroClass) => {
316
307
  if (!(0, types_1.isInstantiableClass)(mroClass) || !types_1.ClassType.isProtocolClass(mroClass)) {
317
308
  return;
318
309
  }
319
310
  mroClass.details.fields.forEach((symbol, name) => {
320
311
  var _a;
321
- if (symbol.isClassMember() && !symbol.isIgnoredForProtocolMatch() && !checkedSymbolSet.has(name)) {
322
- // Note that we've already checked this symbol. It doesn't need to
323
- // be checked again even if it is declared by a subclass.
324
- checkedSymbolSet.add(name);
325
- const memberSymbol = srcType.fields.get(name);
326
- if (!memberSymbol) {
327
- diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name }));
328
- typesAreConsistent = false;
329
- }
330
- else {
331
- let destMemberType = (_a = evaluator.getDeclaredTypeOfSymbol(symbol)) === null || _a === void 0 ? void 0 : _a.type;
332
- if (destMemberType) {
333
- destMemberType = (0, typeUtils_1.partiallySpecializeType)(destMemberType, destType);
334
- const srcMemberType = evaluator.getEffectiveTypeOfSymbol(memberSymbol);
335
- if ((0, types_1.isFunction)(srcMemberType) || (0, types_1.isOverloadedFunction)(srcMemberType)) {
336
- if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
337
- const boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(destType), destMemberType, destType,
338
- /* errorNode */ undefined, recursionCount);
339
- if (boundDeclaredType) {
340
- destMemberType = boundDeclaredType;
341
- }
342
- }
343
- }
344
- const subDiag = diag === null || diag === void 0 ? void 0 : diag.createAddendum();
345
- if (!evaluator.assignType(destMemberType, srcMemberType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), genericDestTypeVarContext,
346
- /* srcTypeVarContext */ undefined, 0 /* Default */, recursionCount)) {
347
- if (subDiag) {
348
- subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }));
349
- }
350
- typesAreConsistent = false;
351
- }
312
+ if (!symbol.isClassMember() || symbol.isIgnoredForProtocolMatch() || checkedSymbolSet.has(name)) {
313
+ return;
314
+ }
315
+ // Note that we've already checked this symbol. It doesn't need to
316
+ // be checked again even if it is declared by a subclass.
317
+ checkedSymbolSet.add(name);
318
+ const memberSymbol = srcType.fields.get(name);
319
+ if (!memberSymbol) {
320
+ diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name }));
321
+ typesAreConsistent = false;
322
+ return;
323
+ }
324
+ let destMemberType = (_a = evaluator.getDeclaredTypeOfSymbol(symbol)) === null || _a === void 0 ? void 0 : _a.type;
325
+ if (!destMemberType) {
326
+ return;
327
+ }
328
+ destMemberType = (0, typeUtils_1.partiallySpecializeType)(destMemberType, destType);
329
+ const srcMemberType = evaluator.getEffectiveTypeOfSymbol(memberSymbol);
330
+ if ((0, types_1.isFunction)(srcMemberType) || (0, types_1.isOverloadedFunction)(srcMemberType)) {
331
+ if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
332
+ const boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(destType), destMemberType, destType,
333
+ /* errorNode */ undefined, recursionCount);
334
+ if (boundDeclaredType) {
335
+ destMemberType = boundDeclaredType;
352
336
  }
353
337
  }
354
338
  }
339
+ const subDiag = diag === null || diag === void 0 ? void 0 : diag.createAddendum();
340
+ if (!evaluator.assignType(destMemberType, srcMemberType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), protocolTypeVarContext,
341
+ /* srcTypeVarContext */ undefined, 0 /* Default */, recursionCount)) {
342
+ if (subDiag) {
343
+ subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }));
344
+ }
345
+ typesAreConsistent = false;
346
+ }
355
347
  });
356
348
  });
357
349
  // If the dest protocol has type parameters, make sure the source type arguments match.
358
350
  if (typesAreConsistent && destType.details.typeParameters.length > 0 && destType.typeArguments) {
359
351
  // Create a specialized version of the protocol defined by the dest and
360
352
  // make sure the resulting type args can be assigned.
361
- const specializedSrcProtocol = (0, typeUtils_1.applySolvedTypeVars)(genericDestType, genericDestTypeVarContext);
362
- if (!evaluator.verifyTypeArgumentsAssignable(destType, specializedSrcProtocol, diag, typeVarContext,
353
+ const genericProtocolType = types_1.ClassType.cloneForSpecialization(destType, undefined,
354
+ /* isTypeArgumentExplicit */ false);
355
+ const specializedProtocolType = (0, typeUtils_1.applySolvedTypeVars)(genericProtocolType, protocolTypeVarContext);
356
+ if (!evaluator.verifyTypeArgumentsAssignable(destType, specializedProtocolType, diag, destTypeVarContext,
363
357
  /* srcTypeVarContext */ undefined, flags, recursionCount)) {
364
358
  typesAreConsistent = false;
365
359
  }
@@ -367,4 +361,30 @@ function assignModuleToProtocol(evaluator, destType, srcType, diag, typeVarConte
367
361
  return typesAreConsistent;
368
362
  }
369
363
  exports.assignModuleToProtocol = assignModuleToProtocol;
364
+ function createProtocolTypeVarContext(evaluator, destType, destTypeVarContext) {
365
+ const protocolTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(destType));
366
+ if (destType === null || destType === void 0 ? void 0 : destType.typeArguments) {
367
+ // Infer the type parameter variance because we need it below.
368
+ evaluator.inferTypeParameterVarianceForClass(destType);
369
+ let specializedDestType = destType;
370
+ if (destTypeVarContext) {
371
+ specializedDestType = (0, typeUtils_1.applySolvedTypeVars)(destType, destTypeVarContext, {
372
+ useNarrowBoundOnly: true,
373
+ });
374
+ }
375
+ // Populate the typeVarContext with any concrete constraints that
376
+ // have already been solved.
377
+ destType.details.typeParameters.forEach((typeParam, index) => {
378
+ if (index < specializedDestType.typeArguments.length) {
379
+ const typeArg = specializedDestType.typeArguments[index];
380
+ if (!(0, typeUtils_1.requiresSpecialization)(typeArg)) {
381
+ const typeParamVariance = types_1.TypeVarType.getVariance(typeParam);
382
+ protocolTypeVarContext.setTypeVarType(typeParam, typeParamVariance !== 4 /* Contravariant */ ? typeArg : undefined,
383
+ /* narrowBoundNoLiterals */ undefined, typeParamVariance !== 3 /* Covariant */ ? typeArg : undefined);
384
+ }
385
+ }
386
+ });
387
+ }
388
+ return protocolTypeVarContext;
389
+ }
370
390
  //# sourceMappingURL=protocols.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../src/analyzer/protocols.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../src/analyzer/protocols.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { ConfigOptions } from '../common/configOptions';
6
6
  import { ConsoleInterface } from '../common/console';
7
7
  import { Diagnostic } from '../common/diagnostic';
8
8
  import { FileEditAction } from '../common/editAction';
9
- import { ProgramMutator, ProgramView } from '../common/extensibility';
9
+ import { EditableProgram, ProgramView } from '../common/extensibility';
10
10
  import { FileSystem } from '../common/fileSystem';
11
11
  import { Host, HostFactory } from '../common/host';
12
12
  import { Range } from '../common/textRange';
@@ -64,7 +64,7 @@ export declare class AnalyzerService {
64
64
  get test_program(): Program;
65
65
  get id(): string;
66
66
  clone(instanceName: string, serviceId: string, backgroundAnalysis?: BackgroundAnalysisBase, fs?: FileSystem): AnalyzerService;
67
- runEditMode(callback: (v: ProgramView, m: ProgramMutator) => void, token: CancellationToken): FileEditAction[];
67
+ runEditMode(callback: (e: EditableProgram) => void, token: CancellationToken): FileEditAction[];
68
68
  dispose(): void;
69
69
  static createImportResolver(fs: FileSystem, options: ConfigOptions, host: Host): ImportResolver;
70
70
  setCompletionCallback(callback: AnalysisCompleteCallback | undefined): void;