@zzzen/pyright-internal 1.2.0-dev.20230115 → 1.2.0-dev.20230129
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 +1 -1
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -1
- package/dist/analyzer/checker.js +51 -38
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +7 -6
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/enums.js +1 -1
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +2 -1
- package/dist/analyzer/importResolver.js +6 -1
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importResult.d.ts +1 -0
- package/dist/analyzer/parseTreeUtils.d.ts +1 -0
- package/dist/analyzer/parseTreeUtils.js +70 -11
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +1 -1
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +3 -2
- package/dist/analyzer/program.js +19 -6
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/regions.js +8 -12
- package/dist/analyzer/regions.js.map +1 -1
- package/dist/analyzer/service.js +1 -1
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +2 -2
- package/dist/analyzer/sourceFile.js +2 -2
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +120 -24
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +0 -1
- package/dist/analyzer/typeGuards.js +5 -3
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.js +32 -12
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +1 -0
- package/dist/analyzer/typeUtils.js +51 -4
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +6 -2
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +5 -2
- package/dist/analyzer/types.js +29 -5
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundThreadBase.js +1 -0
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/common/configOptions.d.ts +5 -0
- package/dist/common/configOptions.js +19 -1
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/envVarUtils.js +30 -7
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +2 -1
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/completionProvider.js +4 -11
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +3 -1
- package/dist/languageService/hoverProvider.js +34 -32
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/indentationUtils.js +54 -43
- package/dist/languageService/indentationUtils.js.map +1 -1
- package/dist/languageService/tooltipUtils.d.ts +5 -1
- package/dist/languageService/tooltipUtils.js +60 -3
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +1 -1
- package/dist/parser/parseNodes.js +0 -1
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/stringTokenUtils.js +1 -1
- package/dist/parser/stringTokenUtils.js.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/tests/fourslash/completions.commitChars.fourslash.js +23 -1
- package/dist/tests/fourslash/completions.commitChars.fourslash.js.map +1 -1
- package/dist/tests/fourslash/findDefinitions.namespaceImport.fourslash.js +2 -2
- package/dist/tests/fourslash/findDefinitions.namespaceImport.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.formatted.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.formatted.fourslash.js +45 -0
- package/dist/tests/fourslash/hover.formatted.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.overloadedFunction.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.overloadedFunction.fourslash.js +23 -0
- package/dist/tests/fourslash/hover.overloadedFunction.fourslash.js.map +1 -0
- package/dist/tests/harness/fourslash/testLanguageService.js +1 -0
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +0 -10
- package/dist/tests/harness/fourslash/testState.js +15 -68
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/fourslash/testStateUtils.d.ts +12 -0
- package/dist/tests/harness/fourslash/testStateUtils.js +98 -0
- package/dist/tests/harness/fourslash/testStateUtils.js.map +1 -0
- package/dist/tests/indentationUtils.test.js +51 -0
- package/dist/tests/indentationUtils.test.js.map +1 -1
- package/dist/tests/pathUtils.test.js +10 -0
- package/dist/tests/pathUtils.test.js.map +1 -1
- package/dist/tests/signatureHelp.test.d.ts +1 -0
- package/dist/tests/signatureHelp.test.js +73 -0
- package/dist/tests/signatureHelp.test.js.map +1 -0
- package/dist/tests/typeEvaluator1.test.js +12 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +4 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +9 -1
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +10 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/package.json +1 -1
package/dist/analyzer/checker.js
CHANGED
@@ -215,7 +215,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
215
215
|
this._validateFinalClassNotAbstract(classTypeResult.classType, node);
|
216
216
|
this._validateDataClassPostInit(classTypeResult.classType, node);
|
217
217
|
this._validateProtocolCompatibility(classTypeResult.classType, node);
|
218
|
-
this._validateInitSubclassArgs(classTypeResult.classType, node);
|
219
218
|
this._reportDuplicateEnumMembers(classTypeResult.classType);
|
220
219
|
if (types_1.ClassType.isTypedDictClass(classTypeResult.classType)) {
|
221
220
|
this._validateTypedDictClassSuite(node.suite);
|
@@ -765,6 +764,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
765
764
|
this._validateComparisonTypes(node);
|
766
765
|
}
|
767
766
|
}
|
767
|
+
else if (node.operator === 39 /* Is */ || node.operator === 40 /* IsNot */) {
|
768
|
+
// Don't apply this rule if it's within an assert.
|
769
|
+
if (!ParseTreeUtils.isWithinAssertExpression(node)) {
|
770
|
+
this._validateComparisonTypesForIsOperator(node);
|
771
|
+
}
|
772
|
+
}
|
768
773
|
else if (node.operator === 41 /* In */ || node.operator === 42 /* NotIn */) {
|
769
774
|
// Don't apply this rule if it's within an assert.
|
770
775
|
if (!ParseTreeUtils.isWithinAssertExpression(node)) {
|
@@ -989,7 +994,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
989
994
|
return false;
|
990
995
|
}
|
991
996
|
_getImportResult(node, filePath) {
|
992
|
-
const execEnv = this._importResolver.
|
997
|
+
const execEnv = this._importResolver.getConfigOptions().findExecEnvironment(filePath);
|
993
998
|
const moduleNameNode = node.parent.module;
|
994
999
|
// Handle both absolute and relative imports.
|
995
1000
|
const moduleName = moduleNameNode.leadingDots === 0
|
@@ -1155,6 +1160,36 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1155
1160
|
}), node);
|
1156
1161
|
}
|
1157
1162
|
}
|
1163
|
+
// Determines whether the types of the two operands for an "is" or "is not"
|
1164
|
+
// operation have overlapping types.
|
1165
|
+
_validateComparisonTypesForIsOperator(node) {
|
1166
|
+
const rightType = this._evaluator.getType(node.rightExpression);
|
1167
|
+
if (!rightType || !(0, types_1.isNoneInstance)(rightType)) {
|
1168
|
+
return;
|
1169
|
+
}
|
1170
|
+
const leftType = this._evaluator.getType(node.leftExpression);
|
1171
|
+
if (!leftType) {
|
1172
|
+
return;
|
1173
|
+
}
|
1174
|
+
let foundMatchForNone = false;
|
1175
|
+
(0, typeUtils_1.doForEachSubtype)(leftType, (subtype) => {
|
1176
|
+
subtype = this._evaluator.makeTopLevelTypeVarsConcrete(subtype);
|
1177
|
+
if (this._evaluator.assignType(subtype, types_1.NoneType.createInstance())) {
|
1178
|
+
foundMatchForNone = true;
|
1179
|
+
}
|
1180
|
+
});
|
1181
|
+
const getMessage = () => {
|
1182
|
+
return node.operator === 39 /* Is */
|
1183
|
+
? localize_1.Localizer.Diagnostic.comparisonAlwaysFalse()
|
1184
|
+
: localize_1.Localizer.Diagnostic.comparisonAlwaysTrue();
|
1185
|
+
};
|
1186
|
+
if (!foundMatchForNone) {
|
1187
|
+
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnnecessaryComparison, diagnosticRules_1.DiagnosticRule.reportUnnecessaryComparison, getMessage().format({
|
1188
|
+
leftType: this._evaluator.printType(leftType, { expandTypeAlias: true }),
|
1189
|
+
rightType: this._evaluator.printType(rightType),
|
1190
|
+
}), node);
|
1191
|
+
}
|
1192
|
+
}
|
1158
1193
|
// Determines whether the types of the two operands for an == or != operation
|
1159
1194
|
// have overlapping types.
|
1160
1195
|
_validateComparisonTypes(node) {
|
@@ -2501,7 +2536,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2501
2536
|
let errorMessage;
|
2502
2537
|
let deprecatedMessage;
|
2503
2538
|
(0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
|
2504
|
-
var _a, _b, _c;
|
2505
2539
|
if ((0, types_1.isClass)(subtype)) {
|
2506
2540
|
if (!subtype.includeSubclasses &&
|
2507
2541
|
subtype.details.deprecatedMessage !== undefined &&
|
@@ -2521,25 +2555,20 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2521
2555
|
// we can determine which overload(s) were used to satisfy
|
2522
2556
|
// the call expression and determine whether any of them
|
2523
2557
|
// are deprecated.
|
2524
|
-
|
2525
|
-
if (
|
2526
|
-
callTypeResult = this._evaluator.getTypeResult(
|
2527
|
-
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2531
|
-
|
2532
|
-
|
2533
|
-
|
2534
|
-
|
2535
|
-
|
2536
|
-
|
2537
|
-
|
2538
|
-
if (overload.details.deprecatedMessage !== undefined && node.value === overload.details.name) {
|
2539
|
-
deprecatedMessage = overload.details.deprecatedMessage;
|
2540
|
-
errorMessage = localize_1.Localizer.Diagnostic.deprecatedFunction();
|
2541
|
-
}
|
2542
|
-
});
|
2558
|
+
const callNode = ParseTreeUtils.getCallForName(node);
|
2559
|
+
if (callNode) {
|
2560
|
+
const callTypeResult = this._evaluator.getTypeResult(callNode);
|
2561
|
+
if (callTypeResult &&
|
2562
|
+
callTypeResult.overloadsUsedForCall &&
|
2563
|
+
callTypeResult.overloadsUsedForCall.length > 0) {
|
2564
|
+
callTypeResult.overloadsUsedForCall.forEach((overload) => {
|
2565
|
+
if (overload.details.deprecatedMessage !== undefined &&
|
2566
|
+
node.value === overload.details.name) {
|
2567
|
+
deprecatedMessage = overload.details.deprecatedMessage;
|
2568
|
+
errorMessage = localize_1.Localizer.Diagnostic.deprecatedFunction();
|
2569
|
+
}
|
2570
|
+
});
|
2571
|
+
}
|
2543
2572
|
}
|
2544
2573
|
}
|
2545
2574
|
});
|
@@ -2999,22 +3028,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2999
3028
|
}
|
3000
3029
|
});
|
3001
3030
|
}
|
3002
|
-
_validateInitSubclassArgs(classType, node) {
|
3003
|
-
const argList = [];
|
3004
|
-
// Collect arguments that will be passed to the `__init_subclass__`
|
3005
|
-
// method described in PEP 487.
|
3006
|
-
node.arguments.forEach((arg) => {
|
3007
|
-
if (arg.name && arg.name.value !== 'metaclass') {
|
3008
|
-
argList.push({
|
3009
|
-
argumentCategory: 0 /* Simple */,
|
3010
|
-
node: arg,
|
3011
|
-
name: arg.name,
|
3012
|
-
valueExpression: arg.valueExpression,
|
3013
|
-
});
|
3014
|
-
}
|
3015
|
-
});
|
3016
|
-
this._evaluator.validateInitSubclassArgs(node, classType, argList);
|
3017
|
-
}
|
3018
3031
|
// If a non-protocol class explicitly inherits from a protocol class, this method
|
3019
3032
|
// verifies that any class or instance variables declared but not assigned
|
3020
3033
|
// in the protocol class are implemented in the subclass. It also checks that any
|