@zzzen/pyright-internal 1.2.0-dev.20220904 → 1.2.0-dev.20220918
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.
- package/dist/analyzer/binder.js +22 -21
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -0
- package/dist/analyzer/checker.js +27 -4
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +6 -1
- package/dist/analyzer/importResolver.js +76 -28
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +1 -0
- package/dist/analyzer/parseTreeUtils.js +54 -13
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +3 -2
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.js +8 -1
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/scope.js +5 -3
- package/dist/analyzer/scope.js.map +1 -1
- package/dist/analyzer/service.js +18 -6
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +72 -42
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeGuards.js +4 -1
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.d.ts +3 -3
- package/dist/analyzer/typePrinter.js +24 -20
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeUtils.js +1 -1
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/types.d.ts +2 -0
- package/dist/analyzer/types.js +8 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +2 -0
- package/dist/common/commandLineOptions.js +7 -0
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/debug.js +7 -1
- package/dist/common/debug.js.map +1 -1
- package/dist/common/envVarUtils.d.ts +1 -0
- package/dist/common/envVarUtils.js +34 -0
- package/dist/common/envVarUtils.js.map +1 -0
- package/dist/common/realFileSystem.js +1 -1
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/languageServerBase.d.ts +3 -1
- package/dist/languageServerBase.js +2 -24
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +4 -1
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/indentationUtils.d.ts +5 -0
- package/dist/languageService/indentationUtils.js +68 -27
- package/dist/languageService/indentationUtils.js.map +1 -1
- package/dist/languageService/insertionPointUtils.d.ts +2 -2
- package/dist/languageService/insertionPointUtils.js +1 -1
- package/dist/languageService/insertionPointUtils.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +2 -1
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +4 -3
- package/dist/localization/localize.js +1 -1
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +1 -1
- package/dist/parser/parser.js +43 -46
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/tokenizer.js +9 -7
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/server.js +6 -5
- package/dist/server.js.map +1 -1
- package/dist/tests/fourslash/signature.paramspec.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/signature.paramspec.fourslash.js +30 -0
- package/dist/tests/fourslash/signature.paramspec.fourslash.js.map +1 -0
- package/dist/tests/ipythonMode.test.js +27 -0
- package/dist/tests/ipythonMode.test.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +8 -2
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/parser.test.js +2 -2
- package/dist/tests/testUtils.d.ts +2 -0
- package/dist/tests/testUtils.js +8 -2
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/tokenizer.test.js +3 -0
- package/dist/tests/tokenizer.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +5 -1
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +5 -1
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +1 -1
- package/dist/tests/typeEvaluator5.test.js +2 -2
- package/package.json +7 -7
package/dist/analyzer/checker.js
CHANGED
@@ -291,7 +291,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
291
291
|
}
|
292
292
|
});
|
293
293
|
// Check for invalid use of ParamSpec P.args and P.kwargs.
|
294
|
-
const paramSpecParams = functionTypeResult.functionType.
|
294
|
+
const paramSpecParams = types_1.FunctionType.getFunctionParameters(functionTypeResult.functionType).filter((param) => {
|
295
295
|
if (param.typeAnnotation && (0, types_1.isTypeVar)(param.type) && (0, types_1.isParamSpec)(param.type)) {
|
296
296
|
if (param.category !== 0 /* Simple */ && param.name && param.type.paramSpecAccess) {
|
297
297
|
return true;
|
@@ -374,7 +374,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
374
374
|
// Verify that strict type guard functions don't violate the constraints
|
375
375
|
// of strict type guards.
|
376
376
|
this._validateStrictTypeGuardFunction(node, functionTypeResult.functionType, containingClassNode !== undefined);
|
377
|
-
this._validateFunctionTypeVarUsage(node, functionTypeResult
|
377
|
+
this._validateFunctionTypeVarUsage(node, functionTypeResult);
|
378
378
|
}
|
379
379
|
// If we're at the module level within a stub file, report a diagnostic
|
380
380
|
// if there is a '__getattr__' function defined when in strict mode.
|
@@ -440,6 +440,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
440
440
|
var _a;
|
441
441
|
this._validateIsInstanceCall(node);
|
442
442
|
this._validateIllegalDefaultParamInitializer(node);
|
443
|
+
this._validateStandardCollectionInstantiation(node);
|
443
444
|
if (this._fileInfo.diagnosticRuleSet.reportUnusedCallResult !== 'none' ||
|
444
445
|
this._fileInfo.diagnosticRuleSet.reportUnusedCoroutine !== 'none') {
|
445
446
|
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 47 /* StatementList */) {
|
@@ -1000,6 +1001,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1000
1001
|
}
|
1001
1002
|
}
|
1002
1003
|
}
|
1004
|
+
_validateStandardCollectionInstantiation(node) {
|
1005
|
+
const leftType = this._evaluator.getType(node.leftExpression);
|
1006
|
+
if (leftType &&
|
1007
|
+
(0, types_1.isInstantiableClass)(leftType) &&
|
1008
|
+
types_1.ClassType.isBuiltIn(leftType) &&
|
1009
|
+
!leftType.includeSubclasses &&
|
1010
|
+
leftType.aliasName) {
|
1011
|
+
const nonInstantiable = ['List', 'Set', 'Dict', 'Tuple'];
|
1012
|
+
if (nonInstantiable.some((name) => name === leftType.aliasName)) {
|
1013
|
+
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.collectionAliasInstantiation().format({
|
1014
|
+
type: leftType.aliasName,
|
1015
|
+
alias: leftType.details.name,
|
1016
|
+
}), node.leftExpression);
|
1017
|
+
}
|
1018
|
+
}
|
1019
|
+
}
|
1003
1020
|
_validateContainmentTypes(node) {
|
1004
1021
|
const leftType = this._evaluator.getType(node.leftExpression);
|
1005
1022
|
const containerType = this._evaluator.getType(node.rightExpression);
|
@@ -1171,11 +1188,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1171
1188
|
return !(0, types_1.isNoneInstance)(type) && !(0, types_1.isNever)(type) && !(0, types_1.isAnyOrUnknown)(type);
|
1172
1189
|
}
|
1173
1190
|
// Verifies that each local type variable is used more than once.
|
1174
|
-
_validateFunctionTypeVarUsage(node,
|
1191
|
+
_validateFunctionTypeVarUsage(node, functionTypeResult) {
|
1175
1192
|
// Skip this check entirely if it's disabled.
|
1176
1193
|
if (this._fileInfo.diagnosticRuleSet.reportInvalidTypeVarUse === 'none') {
|
1177
1194
|
return;
|
1178
1195
|
}
|
1196
|
+
const type = functionTypeResult.functionType;
|
1179
1197
|
const localTypeVarUsage = new Map();
|
1180
1198
|
const classTypeVarUsage = new Map();
|
1181
1199
|
let exemptBoundTypeVar = true;
|
@@ -1314,9 +1332,14 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1314
1332
|
isUsedInReturnType = false;
|
1315
1333
|
}
|
1316
1334
|
}
|
1335
|
+
// Skip this check if the function is overloaded because the TypeVar
|
1336
|
+
// will be solved in terms of the overload signatures.
|
1337
|
+
const skipUnsolvableTypeVarCheck = (0, types_1.isOverloadedFunction)(functionTypeResult.decoratedType) &&
|
1338
|
+
!types_1.FunctionType.isOverloaded(functionTypeResult.functionType);
|
1317
1339
|
if (isUsedInReturnType &&
|
1318
1340
|
usage.paramTypeWithEllipsisUsageCount > 0 &&
|
1319
|
-
usage.paramTypeUsageCount === usage.paramTypeWithEllipsisUsageCount
|
1341
|
+
usage.paramTypeUsageCount === usage.paramTypeWithEllipsisUsageCount &&
|
1342
|
+
!skipUnsolvableTypeVarCheck) {
|
1320
1343
|
const diag = new diagnostic_1.DiagnosticAddendum();
|
1321
1344
|
diag.addMessage(localize_1.Localizer.DiagnosticAddendum.typeVarUnsolvableRemedy());
|
1322
1345
|
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportInvalidTypeVarUse, diagnosticRules_1.DiagnosticRule.reportInvalidTypeVarUse, localize_1.Localizer.Diagnostic.typeVarPossiblyUnsolvable().format({
|