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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/analyzer/checker.d.ts +3 -1
  2. package/dist/analyzer/checker.js +82 -41
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/codeFlowEngine.js +11 -4
  5. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  6. package/dist/analyzer/constraintSolver.js +208 -151
  7. package/dist/analyzer/constraintSolver.js.map +1 -1
  8. package/dist/analyzer/decorators.d.ts +6 -1
  9. package/dist/analyzer/decorators.js +34 -25
  10. package/dist/analyzer/decorators.js.map +1 -1
  11. package/dist/analyzer/parseTreeUtils.d.ts +2 -1
  12. package/dist/analyzer/parseTreeUtils.js +21 -2
  13. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  14. package/dist/analyzer/program.js +7 -1
  15. package/dist/analyzer/program.js.map +1 -1
  16. package/dist/analyzer/properties.d.ts +2 -2
  17. package/dist/analyzer/properties.js +8 -2
  18. package/dist/analyzer/properties.js.map +1 -1
  19. package/dist/analyzer/protocols.js +102 -149
  20. package/dist/analyzer/protocols.js.map +1 -1
  21. package/dist/analyzer/scopeUtils.js +3 -2
  22. package/dist/analyzer/scopeUtils.js.map +1 -1
  23. package/dist/analyzer/service.js +13 -13
  24. package/dist/analyzer/service.js.map +1 -1
  25. package/dist/analyzer/sourceFile.d.ts +3 -2
  26. package/dist/analyzer/sourceFile.js +21 -7
  27. package/dist/analyzer/sourceFile.js.map +1 -1
  28. package/dist/analyzer/sourceFileInfo.d.ts +4 -4
  29. package/dist/analyzer/sourceFileInfo.js +2 -0
  30. package/dist/analyzer/sourceFileInfo.js.map +1 -1
  31. package/dist/analyzer/staticExpressions.js +2 -1
  32. package/dist/analyzer/staticExpressions.js.map +1 -1
  33. package/dist/analyzer/typeEvaluator.d.ts +2 -1
  34. package/dist/analyzer/typeEvaluator.js +171 -244
  35. package/dist/analyzer/typeEvaluator.js.map +1 -1
  36. package/dist/analyzer/typeEvaluatorTypes.d.ts +10 -2
  37. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  38. package/dist/analyzer/typeGuards.d.ts +1 -1
  39. package/dist/analyzer/typeGuards.js +127 -55
  40. package/dist/analyzer/typeGuards.js.map +1 -1
  41. package/dist/analyzer/typeUtils.d.ts +4 -1
  42. package/dist/analyzer/typeUtils.js +82 -8
  43. package/dist/analyzer/typeUtils.js.map +1 -1
  44. package/dist/analyzer/typeVarContext.d.ts +4 -1
  45. package/dist/analyzer/typeVarContext.js +7 -2
  46. package/dist/analyzer/typeVarContext.js.map +1 -1
  47. package/dist/analyzer/types.d.ts +5 -2
  48. package/dist/analyzer/types.js +25 -14
  49. package/dist/analyzer/types.js.map +1 -1
  50. package/dist/backgroundThreadBase.js +5 -1
  51. package/dist/backgroundThreadBase.js.map +1 -1
  52. package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
  53. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  54. package/dist/common/configOptions.d.ts +2 -1
  55. package/dist/common/configOptions.js +9 -5
  56. package/dist/common/configOptions.js.map +1 -1
  57. package/dist/common/extensibility.d.ts +19 -8
  58. package/dist/common/extensibility.js +6 -7
  59. package/dist/common/extensibility.js.map +1 -1
  60. package/dist/common/fileSystem.d.ts +9 -4
  61. package/dist/common/fileSystem.js +8 -1
  62. package/dist/common/fileSystem.js.map +1 -1
  63. package/dist/common/pathUtils.d.ts +5 -4
  64. package/dist/common/pathUtils.js +13 -7
  65. package/dist/common/pathUtils.js.map +1 -1
  66. package/dist/common/pythonVersion.d.ts +1 -1
  67. package/dist/common/pythonVersion.js +1 -1
  68. package/dist/common/realFileSystem.d.ts +7 -1
  69. package/dist/common/realFileSystem.js +33 -37
  70. package/dist/common/realFileSystem.js.map +1 -1
  71. package/dist/common/serviceProvider.d.ts +1 -1
  72. package/dist/common/serviceProvider.js.map +1 -1
  73. package/dist/common/serviceProviderExtensions.d.ts +5 -3
  74. package/dist/common/serviceProviderExtensions.js +6 -1
  75. package/dist/common/serviceProviderExtensions.js.map +1 -1
  76. package/dist/languageServerBase.d.ts +6 -2
  77. package/dist/languageServerBase.js +31 -4
  78. package/dist/languageServerBase.js.map +1 -1
  79. package/dist/languageService/autoImporter.d.ts +1 -1
  80. package/dist/languageService/callHierarchyProvider.d.ts +0 -1
  81. package/dist/languageService/callHierarchyProvider.js +33 -16
  82. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  83. package/dist/languageService/completionProvider.d.ts +2 -2
  84. package/dist/languageService/completionProvider.js +20 -23
  85. package/dist/languageService/completionProvider.js.map +1 -1
  86. package/dist/languageService/definitionProvider.js +4 -5
  87. package/dist/languageService/definitionProvider.js.map +1 -1
  88. package/dist/languageService/documentHighlightProvider.js +5 -2
  89. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  90. package/dist/languageService/documentSymbolCollector.d.ts +32 -23
  91. package/dist/languageService/documentSymbolCollector.js +170 -267
  92. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  93. package/dist/languageService/hoverProvider.js +1 -5
  94. package/dist/languageService/hoverProvider.js.map +1 -1
  95. package/dist/languageService/navigationUtils.d.ts +1 -1
  96. package/dist/languageService/navigationUtils.js +2 -2
  97. package/dist/languageService/navigationUtils.js.map +1 -1
  98. package/dist/languageService/referencesProvider.d.ts +15 -8
  99. package/dist/languageService/referencesProvider.js +41 -20
  100. package/dist/languageService/referencesProvider.js.map +1 -1
  101. package/dist/languageService/renameProvider.js +3 -3
  102. package/dist/languageService/renameProvider.js.map +1 -1
  103. package/dist/localization/localize.d.ts +21 -0
  104. package/dist/localization/localize.js +7 -0
  105. package/dist/localization/localize.js.map +1 -1
  106. package/dist/localization/package.nls.cs.json +5 -0
  107. package/dist/localization/package.nls.de.json +5 -0
  108. package/dist/localization/package.nls.en-us.json +7 -0
  109. package/dist/localization/package.nls.es.json +5 -0
  110. package/dist/localization/package.nls.fr.json +5 -0
  111. package/dist/localization/package.nls.it.json +5 -0
  112. package/dist/localization/package.nls.ja.json +5 -0
  113. package/dist/localization/package.nls.ko.json +5 -0
  114. package/dist/localization/package.nls.pl.json +5 -0
  115. package/dist/localization/package.nls.pt-br.json +5 -0
  116. package/dist/localization/package.nls.qps-ploc.json +5 -0
  117. package/dist/localization/package.nls.ru.json +5 -0
  118. package/dist/localization/package.nls.tr.json +5 -0
  119. package/dist/localization/package.nls.zh-cn.json +5 -0
  120. package/dist/localization/package.nls.zh-tw.json +5 -0
  121. package/dist/parser/stringTokenUtils.js +9 -5
  122. package/dist/parser/stringTokenUtils.js.map +1 -1
  123. package/dist/parser/tokenizer.d.ts +1 -0
  124. package/dist/parser/tokenizer.js +5 -5
  125. package/dist/parser/tokenizer.js.map +1 -1
  126. package/dist/pyright.js +2 -1
  127. package/dist/pyright.js.map +1 -1
  128. package/dist/pyrightFileSystem.d.ts +0 -1
  129. package/dist/pyrightFileSystem.js +0 -3
  130. package/dist/pyrightFileSystem.js.map +1 -1
  131. package/dist/readonlyAugmentedFileSystem.d.ts +1 -4
  132. package/dist/readonlyAugmentedFileSystem.js +0 -10
  133. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  134. package/dist/server.js +2 -1
  135. package/dist/server.js.map +1 -1
  136. package/dist/tests/checker.test.js +8 -0
  137. package/dist/tests/checker.test.js.map +1 -1
  138. package/dist/tests/config.test.js +5 -3
  139. package/dist/tests/config.test.js.map +1 -1
  140. package/dist/tests/documentSymbolCollector.test.js +8 -363
  141. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  142. package/dist/tests/fourslash/completions.indexer.keys.getitem.fourslash.js +56 -10
  143. package/dist/tests/fourslash/completions.indexer.keys.getitem.fourslash.js.map +1 -1
  144. package/dist/tests/harness/fourslash/testState.d.ts +5 -2
  145. package/dist/tests/harness/fourslash/testState.js +13 -14
  146. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  147. package/dist/tests/harness/vfs/filesystem.d.ts +2 -2
  148. package/dist/tests/importResolver.test.js +0 -9
  149. package/dist/tests/importResolver.test.js.map +1 -1
  150. package/dist/tests/pathUtils.test.js +2 -2
  151. package/dist/tests/pathUtils.test.js.map +1 -1
  152. package/dist/tests/testStateUtils.d.ts +3 -0
  153. package/dist/tests/testStateUtils.js +25 -1
  154. package/dist/tests/testStateUtils.js.map +1 -1
  155. package/dist/tests/typeEvaluator1.test.js +5 -1
  156. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  157. package/dist/tests/typeEvaluator2.test.js +13 -5
  158. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  159. package/dist/tests/typeEvaluator3.test.js +12 -4
  160. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  161. package/dist/tests/typeEvaluator4.test.js +17 -9
  162. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  163. package/dist/tests/typeEvaluator5.test.js +4 -2
  164. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  165. package/dist/workspaceFactory.d.ts +2 -1
  166. package/dist/workspaceFactory.js +3 -1
  167. package/dist/workspaceFactory.js.map +1 -1
  168. package/package.json +1 -1
  169. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.d.ts +0 -1
  170. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.js +0 -40
  171. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.js.map +0 -1
@@ -10,6 +10,7 @@
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.assignModuleToProtocol = exports.assignClassToProtocol = void 0;
13
+ const debug_1 = require("../common/debug");
13
14
  const localize_1 = require("../localization/localize");
14
15
  const constraintSolver_1 = require("./constraintSolver");
15
16
  const properties_1 = require("./properties");
@@ -71,6 +72,12 @@ function assignClassToProtocol(evaluator, destType, srcType, diag, destTypeVarCo
71
72
  return isCompatible;
72
73
  }
73
74
  exports.assignClassToProtocol = assignClassToProtocol;
75
+ function assignModuleToProtocol(evaluator, destType, srcType, diag, destTypeVarContext, flags, recursionCount) {
76
+ return assignClassToProtocolInternal(evaluator, destType, srcType, diag, destTypeVarContext,
77
+ /* srcTypeVarContext */ undefined, flags,
78
+ /* treatSourceAsInstantiable */ false, recursionCount);
79
+ }
80
+ exports.assignModuleToProtocol = assignModuleToProtocol;
74
81
  // Looks up the protocol compatibility in the cache. If it's not found,
75
82
  // return undefined.
76
83
  function getProtocolCompatibility(destType, srcType, flags, treatSourceAsInstantiable) {
@@ -118,7 +125,7 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
118
125
  // If the source is a TypedDict, use the _TypedDict placeholder class
119
126
  // instead. We don't want to use the TypedDict members for protocol
120
127
  // comparison.
121
- if (types_1.ClassType.isTypedDictClass(srcType)) {
128
+ if ((0, types_1.isClass)(srcType) && types_1.ClassType.isTypedDictClass(srcType)) {
122
129
  const typedDictClassType = evaluator.getTypedDictClassType();
123
130
  if (typedDictClassType && (0, types_1.isInstantiableClass)(typedDictClassType)) {
124
131
  srcType = typedDictClassType;
@@ -139,18 +146,19 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
139
146
  if (!typesAreConsistent && !diag) {
140
147
  return;
141
148
  }
142
- mroClass.details.fields.forEach((symbol, name) => {
149
+ mroClass.details.fields.forEach((destSymbol, name) => {
143
150
  var _a;
144
151
  // If we've already determined that the types are not consistent and the caller
145
152
  // hasn't requested detailed diagnostic output, we can shortcut the remainder.
146
153
  if (!typesAreConsistent && !diag) {
147
154
  return;
148
155
  }
149
- if (!symbol.isClassMember() || symbol.isIgnoredForProtocolMatch() || checkedSymbolSet.has(name)) {
156
+ if (!destSymbol.isClassMember() || destSymbol.isIgnoredForProtocolMatch() || checkedSymbolSet.has(name)) {
150
157
  return;
151
158
  }
152
159
  let isMemberFromMetaclass = false;
153
160
  let srcMemberInfo;
161
+ let srcSymbol;
154
162
  // Special-case the `__class_getitem__` for normal protocol comparison.
155
163
  // This is a convention agreed upon by typeshed maintainers.
156
164
  if (!treatSourceAsInstantiable && name === '__class_getitem__') {
@@ -164,88 +172,96 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
164
172
  // Note that we've already checked this symbol. It doesn't need to
165
173
  // be checked again even if it is declared by a subclass.
166
174
  checkedSymbolSet.add(name);
167
- // Look in the metaclass first if we're treating the source as an instantiable class.
168
- if (treatSourceAsInstantiable &&
169
- srcType.details.effectiveMetaclass &&
170
- (0, types_1.isInstantiableClass)(srcType.details.effectiveMetaclass)) {
171
- srcMemberInfo = (0, typeUtils_1.lookUpClassMember)(srcType.details.effectiveMetaclass, name);
172
- if (srcMemberInfo) {
173
- isMemberFromMetaclass = true;
174
- }
175
- }
176
- if (!srcMemberInfo) {
177
- srcMemberInfo = (0, typeUtils_1.lookUpClassMember)(srcType, name);
178
- }
179
- if (!srcMemberInfo) {
180
- diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name }));
181
- typesAreConsistent = false;
182
- return;
183
- }
184
- if (symbol.isClassVar() && !srcMemberInfo.symbol.isClassVar() && !srcMemberInfo.symbol.isClassMember()) {
185
- diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberClassVar().format({ name }));
186
- typesAreConsistent = false;
187
- }
188
- let destMemberType = (_a = evaluator.getDeclaredTypeOfSymbol(symbol)) === null || _a === void 0 ? void 0 : _a.type;
175
+ let destMemberType = (_a = evaluator.getDeclaredTypeOfSymbol(destSymbol)) === null || _a === void 0 ? void 0 : _a.type;
189
176
  if (!destMemberType) {
190
177
  return;
191
178
  }
192
- // Partially specialize the type of the symbol based on the MRO class.
193
- // We can skip this if it's the dest class because it is already
194
- // specialized.
195
- if (!types_1.ClassType.isSameGenericClass(mroClass, destType)) {
196
- destMemberType = (0, typeUtils_1.partiallySpecializeType)(destMemberType, mroClass, srcType);
197
- }
198
179
  let srcMemberType;
199
- if ((0, types_1.isInstantiableClass)(srcMemberInfo.classType)) {
200
- const symbolType = evaluator.getEffectiveTypeOfSymbol(srcMemberInfo.symbol);
201
- // If this is a function, infer its return type prior to specializing it.
202
- if ((0, types_1.isFunction)(symbolType)) {
203
- evaluator.inferReturnTypeIfNecessary(symbolType);
180
+ if ((0, types_1.isClass)(srcType)) {
181
+ // Look in the metaclass first if we're treating the source as an instantiable class.
182
+ if (treatSourceAsInstantiable &&
183
+ srcType.details.effectiveMetaclass &&
184
+ (0, types_1.isInstantiableClass)(srcType.details.effectiveMetaclass)) {
185
+ srcMemberInfo = (0, typeUtils_1.lookUpClassMember)(srcType.details.effectiveMetaclass, name);
186
+ if (srcMemberInfo) {
187
+ isMemberFromMetaclass = true;
188
+ }
189
+ }
190
+ if (!srcMemberInfo) {
191
+ srcMemberInfo = (0, typeUtils_1.lookUpClassMember)(srcType, name);
192
+ }
193
+ if (!srcMemberInfo) {
194
+ diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name }));
195
+ typesAreConsistent = false;
196
+ return;
197
+ }
198
+ srcSymbol = srcMemberInfo.symbol;
199
+ if (destSymbol.isClassVar() &&
200
+ !srcMemberInfo.symbol.isClassVar() &&
201
+ !srcMemberInfo.symbol.isClassMember()) {
202
+ diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberClassVar().format({ name }));
203
+ typesAreConsistent = false;
204
+ }
205
+ // Partially specialize the type of the symbol based on the MRO class.
206
+ // We can skip this if it's the dest class because it is already
207
+ // specialized.
208
+ if (!types_1.ClassType.isSameGenericClass(mroClass, destType)) {
209
+ destMemberType = (0, typeUtils_1.partiallySpecializeType)(destMemberType, mroClass, srcType);
210
+ }
211
+ if ((0, types_1.isInstantiableClass)(srcMemberInfo.classType)) {
212
+ const symbolType = evaluator.getEffectiveTypeOfSymbol(srcMemberInfo.symbol);
213
+ // If this is a function, infer its return type prior to specializing it.
214
+ if ((0, types_1.isFunction)(symbolType)) {
215
+ evaluator.inferReturnTypeIfNecessary(symbolType);
216
+ }
217
+ srcMemberType = (0, typeUtils_1.partiallySpecializeType)(symbolType, srcMemberInfo.classType, noLiteralSrcType);
218
+ }
219
+ else {
220
+ srcMemberType = types_1.UnknownType.create();
221
+ }
222
+ // If the source is a method, bind it.
223
+ if ((0, types_1.isFunction)(srcMemberType) || (0, types_1.isOverloadedFunction)(srcMemberType)) {
224
+ if (isMemberFromMetaclass || (0, types_1.isInstantiableClass)(srcMemberInfo.classType)) {
225
+ const boundSrcFunction = evaluator.bindFunctionToClassOrObject(treatSourceAsInstantiable && !isMemberFromMetaclass
226
+ ? srcType
227
+ : types_1.ClassType.cloneAsInstance(srcType), srcMemberType, isMemberFromMetaclass ? undefined : srcMemberInfo.classType,
228
+ /* errorNode */ undefined, recursionCount,
229
+ /* treatConstructorAsClassMember */ undefined, isMemberFromMetaclass ? srcType : undefined);
230
+ if (boundSrcFunction) {
231
+ srcMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundSrcFunction);
232
+ }
233
+ }
204
234
  }
205
- srcMemberType = (0, typeUtils_1.partiallySpecializeType)(symbolType, srcMemberInfo.classType, noLiteralSrcType);
206
235
  }
207
236
  else {
208
- srcMemberType = types_1.UnknownType.create();
237
+ srcSymbol = srcType.fields.get(name);
238
+ if (!srcSymbol) {
239
+ diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name }));
240
+ typesAreConsistent = false;
241
+ return;
242
+ }
243
+ srcMemberType = evaluator.getEffectiveTypeOfSymbol(srcSymbol);
209
244
  }
210
- if ((0, types_1.isFunction)(srcMemberType) || (0, types_1.isOverloadedFunction)(srcMemberType)) {
211
- if (isMemberFromMetaclass) {
212
- const boundSrcFunction = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), srcMemberType,
213
- /* memberClass */ undefined,
214
- /* errorNode */ undefined, recursionCount,
215
- /* treatConstructorAsClassMember */ false, srcType);
216
- if (boundSrcFunction) {
217
- srcMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundSrcFunction);
218
- }
219
- if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
220
- const boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), destMemberType,
221
- /* memberClass */ undefined,
245
+ // Replace any "Self" TypeVar within the dest with the source type.
246
+ destMemberType = (0, typeUtils_1.applySolvedTypeVars)(destMemberType, selfTypeVarContext);
247
+ // If the dest is a method, bind it.
248
+ if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
249
+ let boundDeclaredType;
250
+ if ((0, types_1.isClass)(srcType)) {
251
+ (0, debug_1.assert)(srcMemberInfo);
252
+ if (isMemberFromMetaclass || (0, types_1.isInstantiableClass)(srcMemberInfo.classType)) {
253
+ boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), destMemberType, isMemberFromMetaclass ? undefined : srcMemberInfo.classType,
222
254
  /* errorNode */ undefined, recursionCount,
223
- /* treatConstructorAsClassMember */ false, srcType);
224
- if (boundDeclaredType) {
225
- destMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundDeclaredType);
226
- }
255
+ /* treatConstructorAsClassMember */ undefined, isMemberFromMetaclass ? srcType : undefined);
227
256
  }
228
257
  }
229
- else if ((0, types_1.isInstantiableClass)(srcMemberInfo.classType)) {
230
- // Replace any "Self" TypeVar within the dest with the source type.
231
- destMemberType = (0, typeUtils_1.applySolvedTypeVars)(destMemberType, selfTypeVarContext);
232
- const boundSrcFunction = evaluator.bindFunctionToClassOrObject(treatSourceAsInstantiable ? srcType : types_1.ClassType.cloneAsInstance(srcType), srcMemberType, srcMemberInfo.classType,
258
+ else {
259
+ boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(destType), destMemberType, destType,
233
260
  /* errorNode */ undefined, recursionCount);
234
- if (boundSrcFunction) {
235
- srcMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundSrcFunction);
236
- }
237
- if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
238
- const boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(srcType), destMemberType, srcMemberInfo.classType,
239
- /* errorNode */ undefined, recursionCount);
240
- if (boundDeclaredType) {
241
- destMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundDeclaredType);
242
- }
243
- }
244
261
  }
245
- }
246
- else {
247
- // Replace any "Self" TypeVar within the dest with the source type.
248
- destMemberType = (0, typeUtils_1.applySolvedTypeVars)(destMemberType, selfTypeVarContext);
262
+ if (boundDeclaredType) {
263
+ destMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundDeclaredType);
264
+ }
249
265
  }
250
266
  const subDiag = diag === null || diag === void 0 ? void 0 : diag.createAddendum();
251
267
  // Properties require special processing.
@@ -276,9 +292,12 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
276
292
  }
277
293
  else {
278
294
  // Class and instance variables that are mutable need to enforce invariance.
279
- const primaryDecl = symbol.getDeclarations()[0];
295
+ const primaryDecl = destSymbol.getDeclarations()[0];
280
296
  const isInvariant = (primaryDecl === null || primaryDecl === void 0 ? void 0 : primaryDecl.type) === 1 /* Variable */ && !primaryDecl.isFinal;
281
- if (!evaluator.assignType(destMemberType, srcMemberType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), protocolTypeVarContext,
297
+ // Temporarily add the TypeVar scope ID for this method to handle method-scoped TypeVars.
298
+ const protocolTypeVarContextClone = protocolTypeVarContext.clone();
299
+ protocolTypeVarContextClone.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(destMemberType));
300
+ if (!evaluator.assignType(destMemberType, srcMemberType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), protocolTypeVarContextClone,
282
301
  /* srcTypeVarContext */ undefined, isInvariant ? assignTypeFlags | 1 /* EnforceInvariance */ : assignTypeFlags, recursionCount)) {
283
302
  if (subDiag) {
284
303
  if (isInvariant) {
@@ -288,11 +307,14 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
288
307
  }
289
308
  typesAreConsistent = false;
290
309
  }
310
+ else {
311
+ protocolTypeVarContext.copyFromClone(protocolTypeVarContextClone);
312
+ }
291
313
  }
292
- const isDestFinal = symbol
314
+ const isDestFinal = destSymbol
293
315
  .getTypedDeclarations()
294
316
  .some((decl) => decl.type === 1 /* Variable */ && !!decl.isFinal);
295
- const isSrcFinal = srcMemberInfo.symbol
317
+ const isSrcFinal = srcSymbol
296
318
  .getTypedDeclarations()
297
319
  .some((decl) => decl.type === 1 /* Variable */ && !!decl.isFinal);
298
320
  if (isDestFinal !== isSrcFinal) {
@@ -308,12 +330,13 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
308
330
  }
309
331
  typesAreConsistent = false;
310
332
  }
311
- const destPrimaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(symbol);
312
- const srcPrimaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(srcMemberInfo.symbol);
333
+ const destPrimaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(destSymbol);
334
+ const srcPrimaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(srcSymbol);
313
335
  if ((destPrimaryDecl === null || destPrimaryDecl === void 0 ? void 0 : destPrimaryDecl.type) === 1 /* Variable */ &&
314
336
  (srcPrimaryDecl === null || srcPrimaryDecl === void 0 ? void 0 : srcPrimaryDecl.type) === 1 /* Variable */) {
315
337
  const isDestConst = !!destPrimaryDecl.isConstant;
316
- const isSrcConst = ((0, types_1.isClass)(srcMemberInfo.classType) &&
338
+ const isSrcConst = (srcMemberInfo &&
339
+ (0, types_1.isClass)(srcMemberInfo.classType) &&
317
340
  types_1.ClassType.isReadOnlyInstanceVariables(srcMemberInfo.classType)) ||
318
341
  !!srcPrimaryDecl.isConstant;
319
342
  if (!isDestConst && isSrcConst) {
@@ -348,76 +371,6 @@ function assignClassToProtocolInternal(evaluator, destType, srcType, diag, destT
348
371
  }
349
372
  return typesAreConsistent;
350
373
  }
351
- function assignModuleToProtocol(evaluator, destType, srcType, diag, destTypeVarContext, flags, recursionCount) {
352
- if (recursionCount > types_1.maxTypeRecursionCount) {
353
- return true;
354
- }
355
- recursionCount++;
356
- let typesAreConsistent = true;
357
- const checkedSymbolSet = new Set();
358
- const protocolTypeVarContext = createProtocolTypeVarContext(evaluator, destType, destTypeVarContext);
359
- destType.details.mro.forEach((mroClass) => {
360
- if (!(0, types_1.isInstantiableClass)(mroClass) || !types_1.ClassType.isProtocolClass(mroClass)) {
361
- return;
362
- }
363
- mroClass.details.fields.forEach((symbol, name) => {
364
- var _a;
365
- if (!symbol.isClassMember() || symbol.isIgnoredForProtocolMatch() || checkedSymbolSet.has(name)) {
366
- return;
367
- }
368
- // Note that we've already checked this symbol. It doesn't need to
369
- // be checked again even if it is declared by a subclass.
370
- checkedSymbolSet.add(name);
371
- const memberSymbol = srcType.fields.get(name);
372
- if (!memberSymbol) {
373
- diag === null || diag === void 0 ? void 0 : diag.addMessage(localize_1.Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name }));
374
- typesAreConsistent = false;
375
- return;
376
- }
377
- let destMemberType = (_a = evaluator.getDeclaredTypeOfSymbol(symbol)) === null || _a === void 0 ? void 0 : _a.type;
378
- if (!destMemberType) {
379
- return;
380
- }
381
- const srcMemberType = evaluator.getEffectiveTypeOfSymbol(memberSymbol);
382
- if ((0, types_1.isFunction)(srcMemberType) || (0, types_1.isOverloadedFunction)(srcMemberType)) {
383
- if ((0, types_1.isFunction)(destMemberType) || (0, types_1.isOverloadedFunction)(destMemberType)) {
384
- const boundDeclaredType = evaluator.bindFunctionToClassOrObject(types_1.ClassType.cloneAsInstance(destType), destMemberType, destType,
385
- /* errorNode */ undefined, recursionCount);
386
- if (boundDeclaredType) {
387
- destMemberType = (0, typeUtils_1.removeParamSpecVariadicsFromSignature)(boundDeclaredType);
388
- }
389
- }
390
- }
391
- const subDiag = diag === null || diag === void 0 ? void 0 : diag.createAddendum();
392
- const primaryDecl = symbol.getDeclarations()[0];
393
- const isInvariant = (primaryDecl === null || primaryDecl === void 0 ? void 0 : primaryDecl.type) === 1 /* Variable */ && !primaryDecl.isFinal;
394
- if (!evaluator.assignType(destMemberType, srcMemberType, subDiag === null || subDiag === void 0 ? void 0 : subDiag.createAddendum(), protocolTypeVarContext,
395
- /* srcTypeVarContext */ undefined, isInvariant ? 1 /* EnforceInvariance */ : 0 /* Default */, recursionCount)) {
396
- if (subDiag) {
397
- if (isInvariant) {
398
- subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberIsInvariant().format({ name }));
399
- }
400
- subDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }));
401
- }
402
- typesAreConsistent = false;
403
- }
404
- });
405
- });
406
- // If the dest protocol has type parameters, make sure the source type arguments match.
407
- if (typesAreConsistent && destType.details.typeParameters.length > 0 && destType.typeArguments) {
408
- // Create a specialized version of the protocol defined by the dest and
409
- // make sure the resulting type args can be assigned.
410
- const genericProtocolType = types_1.ClassType.cloneForSpecialization(destType, undefined,
411
- /* isTypeArgumentExplicit */ false);
412
- const specializedProtocolType = (0, typeUtils_1.applySolvedTypeVars)(genericProtocolType, protocolTypeVarContext);
413
- if (!evaluator.assignTypeArguments(destType, specializedProtocolType, diag, destTypeVarContext,
414
- /* srcTypeVarContext */ undefined, flags, recursionCount)) {
415
- typesAreConsistent = false;
416
- }
417
- }
418
- return typesAreConsistent;
419
- }
420
- exports.assignModuleToProtocol = assignModuleToProtocol;
421
374
  // Given a (possibly-specialized) destType and an optional typeVarContext, creates
422
375
  // a new typeVarContext that combines the constraints from both the destType and
423
376
  // the destTypeVarContext.
@@ -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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"}
@@ -35,7 +35,8 @@ function getScopeHierarchy(node, stopScope) {
35
35
  const scopeHierarchy = [];
36
36
  let curNode = node;
37
37
  while (curNode) {
38
- const curScope = getScopeForNode(curNode);
38
+ const scopeNode = (0, parseTreeUtils_1.getEvaluationScopeNode)(curNode);
39
+ const curScope = (0, analyzerNodeInfo_1.getScope)(scopeNode);
39
40
  if (!curScope) {
40
41
  return undefined;
41
42
  }
@@ -45,7 +46,7 @@ function getScopeHierarchy(node, stopScope) {
45
46
  if (curScope === stopScope) {
46
47
  return scopeHierarchy;
47
48
  }
48
- curNode = curNode.parent;
49
+ curNode = scopeNode.parent;
49
50
  }
50
51
  return stopScope ? undefined : scopeHierarchy;
51
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scopeUtils.js","sourceRoot":"","sources":["../../../src/analyzer/scopeUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAGH,yDAA8C;AAC9C,qDAA0D;AAG1D,SAAgB,eAAe,CAAC,YAAmB;IAC/C,uEAAuE;IACvE,0BAA0B;IAC1B,IAAI,YAAY,GAAG,YAAY,CAAC;IAEhC,OAAO,YAAY,CAAC,IAAI,oBAAsB,EAAE;QAC5C,YAAY,GAAG,YAAY,CAAC,MAAO,CAAC;KACvC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC;AAVD,0CAUC;AAED,yEAAyE;AACzE,SAAgB,eAAe,CAAC,IAAe;IAC3C,MAAM,SAAS,GAAG,IAAA,uCAAsB,EAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAA,2BAAQ,EAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAHD,0CAGC;AAED,4EAA4E;AAC5E,gEAAgE;AAChE,+CAA+C;AAC/C,SAAgB,iBAAiB,CAAC,IAAe,EAAE,SAAiB;IAChE,MAAM,cAAc,GAAY,EAAE,CAAC;IACnC,IAAI,OAAO,GAA0B,IAAI,CAAC;IAE1C,OAAO,OAAO,EAAE;QACZ,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;YACvF,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjC;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,OAAO,cAAc,CAAC;SACzB;QAED,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;KAC5B;IAED,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC;AAClD,CAAC;AAvBD,8CAuBC;AAED,4EAA4E;AAC5E,kCAAkC;AAClC,SAAgB,kBAAkB,CAAC,IAAe,EAAE,KAAY;IAC5D,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,IAAI,QAA+B,CAAC;IACpC,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,OAAO,OAAO,EAAE;QACZ,IAAI,IAAA,2BAAQ,EAAC,OAAO,CAAC,KAAK,KAAK,EAAE;YAC7B,UAAU,GAAG,IAAI,CAAC;SACrB;aAAM,IAAI,UAAU,EAAE;YACnB,OAAO,QAAQ,CAAC;SACnB;QAED,QAAQ,GAAG,OAAO,CAAC;QACnB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;KAC5B;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAjBD,gDAiBC"}
1
+ {"version":3,"file":"scopeUtils.js","sourceRoot":"","sources":["../../../src/analyzer/scopeUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAGH,yDAA8C;AAC9C,qDAA0D;AAG1D,SAAgB,eAAe,CAAC,YAAmB;IAC/C,uEAAuE;IACvE,0BAA0B;IAC1B,IAAI,YAAY,GAAG,YAAY,CAAC;IAEhC,OAAO,YAAY,CAAC,IAAI,oBAAsB,EAAE;QAC5C,YAAY,GAAG,YAAY,CAAC,MAAO,CAAC;KACvC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC;AAVD,0CAUC;AAED,yEAAyE;AACzE,SAAgB,eAAe,CAAC,IAAe;IAC3C,MAAM,SAAS,GAAG,IAAA,uCAAsB,EAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAA,2BAAQ,EAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAHD,0CAGC;AAED,4EAA4E;AAC5E,gEAAgE;AAChE,+CAA+C;AAC/C,SAAgB,iBAAiB,CAAC,IAAe,EAAE,SAAiB;IAChE,MAAM,cAAc,GAAY,EAAE,CAAC;IACnC,IAAI,OAAO,GAA0B,IAAI,CAAC;IAE1C,OAAO,OAAO,EAAE;QACZ,MAAM,SAAS,GAAG,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAA,2BAAQ,EAAC,SAAS,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;YACvF,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjC;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,OAAO,cAAc,CAAC;SACzB;QAED,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;KAC9B;IAED,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC;AAClD,CAAC;AAxBD,8CAwBC;AAED,4EAA4E;AAC5E,kCAAkC;AAClC,SAAgB,kBAAkB,CAAC,IAAe,EAAE,KAAY;IAC5D,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,IAAI,QAA+B,CAAC;IACpC,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,OAAO,OAAO,EAAE;QACZ,IAAI,IAAA,2BAAQ,EAAC,OAAO,CAAC,KAAK,KAAK,EAAE;YAC7B,UAAU,GAAG,IAAI,CAAC;SACrB;aAAM,IAAI,UAAU,EAAE;YACnB,OAAO,QAAQ,CAAC;SACnB;QAED,QAAQ,GAAG,OAAO,CAAC;QACnB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;KAC5B;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAjBD,gDAiBC"}
@@ -225,8 +225,7 @@ class AnalyzerService {
225
225
  this._backgroundAnalysisProgram.addInterimFile(path);
226
226
  }
227
227
  getParseResult(path) {
228
- var _a;
229
- return (_a = this._program.getBoundSourceFile(path)) === null || _a === void 0 ? void 0 : _a.getParseResults();
228
+ return this._program.getParseResults(path);
230
229
  }
231
230
  getSourceFile(path) {
232
231
  return this._program.getBoundSourceFile(path);
@@ -419,17 +418,17 @@ class AnalyzerService {
419
418
  configOptions.ensureDefaultExtraPaths(this.fs, (_a = commandLineOptions.autoSearchPaths) !== null && _a !== void 0 ? _a : false, commandLineOptions.extraPaths);
420
419
  if (commandLineOptions.fileSpecs.length > 0) {
421
420
  commandLineOptions.fileSpecs.forEach((fileSpec) => {
422
- configOptions.include.push((0, pathUtils_1.getFileSpec)(this.fs, projectRoot, fileSpec));
421
+ configOptions.include.push((0, pathUtils_1.getFileSpec)(this.serviceProvider, projectRoot, fileSpec));
423
422
  });
424
423
  }
425
424
  if (commandLineOptions.excludeFileSpecs.length > 0) {
426
425
  commandLineOptions.excludeFileSpecs.forEach((fileSpec) => {
427
- configOptions.exclude.push((0, pathUtils_1.getFileSpec)(this.fs, projectRoot, fileSpec));
426
+ configOptions.exclude.push((0, pathUtils_1.getFileSpec)(this.serviceProvider, projectRoot, fileSpec));
428
427
  });
429
428
  }
430
429
  if (commandLineOptions.ignoreFileSpecs.length > 0) {
431
430
  commandLineOptions.ignoreFileSpecs.forEach((fileSpec) => {
432
- configOptions.ignore.push((0, pathUtils_1.getFileSpec)(this.fs, projectRoot, fileSpec));
431
+ configOptions.ignore.push((0, pathUtils_1.getFileSpec)(this.serviceProvider, projectRoot, fileSpec));
433
432
  });
434
433
  }
435
434
  if (!configFilePath && commandLineOptions.executionRoot) {
@@ -437,12 +436,12 @@ class AnalyzerService {
437
436
  // If no config file was found and there are no explicit include
438
437
  // paths specified, assume the caller wants to include all source
439
438
  // files under the execution root path.
440
- configOptions.include.push((0, pathUtils_1.getFileSpec)(this.fs, commandLineOptions.executionRoot, '.'));
439
+ configOptions.include.push((0, pathUtils_1.getFileSpec)(this.serviceProvider, commandLineOptions.executionRoot, '.'));
441
440
  }
442
441
  if (commandLineOptions.excludeFileSpecs.length === 0) {
443
442
  // Add a few common excludes to avoid long scan times.
444
443
  defaultExcludes.forEach((exclude) => {
445
- configOptions.exclude.push((0, pathUtils_1.getFileSpec)(this.fs, commandLineOptions.executionRoot, exclude));
444
+ configOptions.exclude.push((0, pathUtils_1.getFileSpec)(this.serviceProvider, commandLineOptions.executionRoot, exclude));
446
445
  });
447
446
  }
448
447
  }
@@ -458,19 +457,19 @@ class AnalyzerService {
458
457
  configJsonObj = this._parsePyprojectTomlFile(pyprojectFilePath);
459
458
  }
460
459
  if (configJsonObj) {
461
- configOptions.initializeFromJson(configJsonObj, this._typeCheckingMode, this._console, this.fs, host, commandLineOptions.diagnosticSeverityOverrides, commandLineOptions.fileSpecs.length > 0);
460
+ configOptions.initializeFromJson(configJsonObj, this._typeCheckingMode, this.serviceProvider, host, commandLineOptions.diagnosticSeverityOverrides, commandLineOptions.fileSpecs.length > 0);
462
461
  const configFileDir = (0, pathUtils_1.getDirectoryPath)(this._configFilePath);
463
462
  // If no include paths were provided, assume that all files within
464
463
  // the project should be included.
465
464
  if (configOptions.include.length === 0) {
466
465
  this._console.info(`No include entries specified; assuming ${configFileDir}`);
467
- configOptions.include.push((0, pathUtils_1.getFileSpec)(this.fs, configFileDir, '.'));
466
+ configOptions.include.push((0, pathUtils_1.getFileSpec)(this.serviceProvider, configFileDir, '.'));
468
467
  }
469
468
  // If there was no explicit set of excludes, add a few common ones to avoid long scan times.
470
469
  if (configOptions.exclude.length === 0) {
471
470
  defaultExcludes.forEach((exclude) => {
472
471
  this._console.info(`Auto-excluding ${exclude}`);
473
- configOptions.exclude.push((0, pathUtils_1.getFileSpec)(this.fs, configFileDir, exclude));
472
+ configOptions.exclude.push((0, pathUtils_1.getFileSpec)(this.serviceProvider, configFileDir, exclude));
474
473
  });
475
474
  if (configOptions.autoExcludeVenv === undefined) {
476
475
  configOptions.autoExcludeVenv = true;
@@ -523,7 +522,7 @@ class AnalyzerService {
523
522
  this._console.info(`Excluding typeshed stdlib stubs according to VERSIONS file:`);
524
523
  excludeList.forEach((exclude) => {
525
524
  this._console.info(` ${exclude}`);
526
- configOptions.exclude.push((0, pathUtils_1.getFileSpec)(this.fs, commandLineOptions.executionRoot, exclude));
525
+ configOptions.exclude.push((0, pathUtils_1.getFileSpec)(this.serviceProvider, commandLineOptions.executionRoot, exclude));
527
526
  });
528
527
  }
529
528
  configOptions.verboseOutput = (_b = commandLineOptions.verboseOutput) !== null && _b !== void 0 ? _b : configOptions.verboseOutput;
@@ -859,7 +858,7 @@ class AnalyzerService {
859
858
  if (envMarkers.some((f) => this.fs.existsSync((0, pathUtils_1.combinePaths)(absolutePath, ...f)))) {
860
859
  // Save auto exclude paths in the configOptions once we found them.
861
860
  if (!pathUtils_1.FileSpec.isInPath(absolutePath, exclude)) {
862
- exclude.push((0, pathUtils_1.getFileSpec)(this.fs, this._configOptions.projectRoot, `${absolutePath}/**`));
861
+ exclude.push((0, pathUtils_1.getFileSpec)(this.serviceProvider, this._configOptions.projectRoot, `${absolutePath}/**`));
863
862
  }
864
863
  this._console.info(`Auto-excluding ${absolutePath}`);
865
864
  return;
@@ -1113,7 +1112,8 @@ class AnalyzerService {
1113
1112
  }
1114
1113
  // find the innermost matching search path
1115
1114
  let matchingSearchPath;
1116
- const ignoreCase = !(0, pathUtils_1.isFileSystemCaseSensitive)(this.fs);
1115
+ const tempFile = this.serviceProvider.tryGet(serviceProviderExtensions_1.ServiceKeys.tempFile);
1116
+ const ignoreCase = !(0, pathUtils_1.isFileSystemCaseSensitive)(this.fs, tempFile);
1117
1117
  for (const libSearchPath of libSearchPaths) {
1118
1118
  if ((0, pathUtils_1.containsPath)(libSearchPath, path, ignoreCase) &&
1119
1119
  (!matchingSearchPath || matchingSearchPath.length < libSearchPath.length)) {