@zzzen/pyright-internal 1.2.0-dev.20260906 → 1.2.0-dev.20260920
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/checker.d.ts +2 -1
- package/dist/analyzer/checker.js +80 -5
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +10 -2
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructors.js +7 -18
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/decorators.js +45 -2
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/program.js +1 -0
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/sourceFileInfo.d.ts +0 -1
- package/dist/analyzer/sourceFileInfo.js +0 -3
- package/dist/analyzer/sourceFileInfo.js.map +1 -1
- package/dist/analyzer/typeCacheUtils.d.ts +1 -0
- package/dist/analyzer/typeCacheUtils.js +28 -1
- package/dist/analyzer/typeCacheUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.d.ts +1 -1
- package/dist/analyzer/typeEvaluator.js +63 -389
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -0
- package/dist/analyzer/typedDicts.js +3 -7
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.js +7 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/common/configOptions.d.ts +1 -0
- package/dist/common/configOptions.js +16 -0
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/envVarUtils.js +3 -3
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/common/extensibility.d.ts +0 -1
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/fileSystem.d.ts +1 -0
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/realFileSystem.d.ts +1 -0
- package/dist/common/realFileSystem.js +12 -0
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/fileSystemMapping.d.ts +1 -1
- package/dist/fileSystemMapping.js +3 -0
- package/dist/fileSystemMapping.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +2 -1
- package/dist/languageService/completionProvider.js +4 -1
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/localization/package.nls.cs.json +1 -0
- package/dist/localization/package.nls.de.json +1 -0
- package/dist/localization/package.nls.es.json +1 -0
- package/dist/localization/package.nls.fr.json +1 -0
- package/dist/localization/package.nls.it.json +1 -0
- package/dist/localization/package.nls.ja.json +1 -0
- package/dist/localization/package.nls.ko.json +1 -0
- package/dist/localization/package.nls.pl.json +1 -0
- package/dist/localization/package.nls.pt-br.json +1 -0
- package/dist/localization/package.nls.qps-ploc.json +1 -0
- package/dist/localization/package.nls.ru.json +1 -0
- package/dist/localization/package.nls.tr.json +1 -0
- package/dist/localization/package.nls.zh-cn.json +1 -0
- package/dist/localization/package.nls.zh-tw.json +1 -0
- package/dist/readonlyAugmentedFileSystem.d.ts +1 -0
- package/dist/readonlyAugmentedFileSystem.js +3 -0
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/tests/checker.test.js +8 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/envVarUtils.test.js +16 -0
- package/dist/tests/envVarUtils.test.js.map +1 -1
- package/dist/tests/evaluationTrace.integration.test.d.ts +1 -0
- package/dist/tests/evaluationTrace.integration.test.js +266 -0
- package/dist/tests/evaluationTrace.integration.test.js.map +1 -0
- package/dist/tests/evaluationTrace.test.d.ts +1 -0
- package/dist/tests/evaluationTrace.test.js +422 -0
- package/dist/tests/evaluationTrace.test.js.map +1 -0
- package/dist/tests/evaluationTrace.viewer.test.d.ts +1 -0
- package/dist/tests/evaluationTrace.viewer.test.js +529 -0
- package/dist/tests/evaluationTrace.viewer.test.js.map +1 -0
- package/dist/tests/fileSystemMapping.test.js +3 -0
- package/dist/tests/fileSystemMapping.test.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +1 -0
- package/dist/tests/harness/vfs/filesystem.js +3 -0
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importResolver.test.js +5 -0
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/mypyPrimerAnalysis.test.d.ts +1 -0
- package/dist/tests/mypyPrimerAnalysis.test.js +1779 -0
- package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -0
- package/dist/tests/mypyPrimerMcp.test.d.ts +1 -0
- package/dist/tests/mypyPrimerMcp.test.js +186 -0
- package/dist/tests/mypyPrimerMcp.test.js.map +1 -0
- package/dist/tests/typeCacheUtils.test.js +15 -0
- package/dist/tests/typeCacheUtils.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +2 -2
- package/dist/tests/typeEvaluator6.test.js +155 -3
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +4 -0
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typeUtils.test.js +15 -0
- package/dist/tests/typeUtils.test.js.map +1 -1
- package/dist/trace/capture.d.ts +31 -0
- package/dist/trace/capture.js +272 -0
- package/dist/trace/capture.js.map +1 -0
- package/dist/trace/cli.d.ts +1 -0
- package/dist/trace/cli.js +196 -0
- package/dist/trace/cli.js.map +1 -0
- package/dist/trace/nativeAdapter.d.ts +16 -0
- package/dist/trace/nativeAdapter.js +422 -0
- package/dist/trace/nativeAdapter.js.map +1 -0
- package/dist/trace/nativeBridge.d.ts +46 -0
- package/dist/trace/nativeBridge.js +416 -0
- package/dist/trace/nativeBridge.js.map +1 -0
- package/dist/trace/reader.d.ts +83 -0
- package/dist/trace/reader.js +296 -0
- package/dist/trace/reader.js.map +1 -0
- package/dist/trace/recorder.d.ts +59 -0
- package/dist/trace/recorder.js +303 -0
- package/dist/trace/recorder.js.map +1 -0
- package/dist/trace/runtimeLoader.d.ts +23 -0
- package/dist/trace/runtimeLoader.js +172 -0
- package/dist/trace/runtimeLoader.js.map +1 -0
- package/dist/trace/viewerAssets.d.ts +2 -0
- package/dist/trace/viewerAssets.js +76 -0
- package/dist/trace/viewerAssets.js.map +1 -0
- package/dist/trace/viewerClient.d.ts +1 -0
- package/dist/trace/viewerClient.js +485 -0
- package/dist/trace/viewerClient.js.map +1 -0
- package/dist/trace/viewerModel.d.ts +308 -0
- package/dist/trace/viewerModel.js +524 -0
- package/dist/trace/viewerModel.js.map +1 -0
- package/dist/trace/viewerServer.d.ts +7 -0
- package/dist/trace/viewerServer.js +185 -0
- package/dist/trace/viewerServer.js.map +1 -0
- package/dist/typeServer/typeServerFileSystem.d.ts +1 -0
- package/dist/typeServer/typeServerFileSystem.js +3 -0
- package/dist/typeServer/typeServerFileSystem.js.map +1 -1
- package/dist/typeServer/virtualFileOverlayFileSystem.d.ts +1 -0
- package/dist/typeServer/virtualFileOverlayFileSystem.js +3 -0
- package/dist/typeServer/virtualFileOverlayFileSystem.js.map +1 -1
- package/package.json +4 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, CallNode, CaseNode, ClassNode, ComprehensionIfNode, ComprehensionNode, DelNode, DictionaryNode, ErrorNode, ExceptNode, ForNode, FormatStringNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromAsNode, ImportFromNode, IndexNode, LambdaNode, ListNode, MatchNode, MemberAccessNode, ModuleNameNode, NameNode, NonlocalNode, ParseNode, PatternClassNode, RaiseNode, ReturnNode, SetNode, SliceNode, StatementListNode, StringListNode, SuiteNode, TernaryNode, TryNode, TupleNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, TypeParameterNode, UnaryOperationNode, UnpackNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
|
|
1
|
+
import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, CallNode, CaseNode, ClassNode, ComprehensionIfNode, ComprehensionNode, DelNode, DecoratorNode, DictionaryNode, ErrorNode, ExceptNode, ForNode, FormatStringNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromAsNode, ImportFromNode, IndexNode, LambdaNode, ListNode, MatchNode, MemberAccessNode, ModuleNameNode, NameNode, NonlocalNode, ParseNode, PatternClassNode, RaiseNode, ReturnNode, SetNode, SliceNode, StatementListNode, StringListNode, SuiteNode, TernaryNode, TryNode, TupleNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, TypeParameterNode, UnaryOperationNode, UnpackNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
|
|
2
2
|
import { ParserOutput } from '../parser/parser';
|
|
3
3
|
import * as AnalyzerNodeInfo from './analyzerNodeInfo';
|
|
4
4
|
import { ImportResolver } from './importResolver';
|
|
@@ -21,6 +21,7 @@ export declare class Checker extends ParseTreeWalker {
|
|
|
21
21
|
visitSuite(node: SuiteNode): boolean;
|
|
22
22
|
visitStatementList(node: StatementListNode): boolean;
|
|
23
23
|
visitClass(node: ClassNode): boolean;
|
|
24
|
+
visitDecorator(node: DecoratorNode): boolean;
|
|
24
25
|
visitFunction(node: FunctionNode): boolean;
|
|
25
26
|
visitLambda(node: LambdaNode): boolean;
|
|
26
27
|
visitCall(node: CallNode): boolean;
|
package/dist/analyzer/checker.js
CHANGED
|
@@ -58,6 +58,7 @@ const localize_1 = require("../localization/localize");
|
|
|
58
58
|
const parseNodes_1 = require("../parser/parseNodes");
|
|
59
59
|
const stringTokenUtils_1 = require("../parser/stringTokenUtils");
|
|
60
60
|
const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
|
|
61
|
+
const constraintSolution_1 = require("./constraintSolution");
|
|
61
62
|
const constraintTracker_1 = require("./constraintTracker");
|
|
62
63
|
const constructors_1 = require("./constructors");
|
|
63
64
|
const dataClasses_1 = require("./dataClasses");
|
|
@@ -79,7 +80,6 @@ const staticExpressions_1 = require("./staticExpressions");
|
|
|
79
80
|
const SymbolNameUtils = __importStar(require("./symbolNameUtils"));
|
|
80
81
|
const symbolUtils_1 = require("./symbolUtils");
|
|
81
82
|
const typedDicts_1 = require("./typedDicts");
|
|
82
|
-
const typeEvaluator_1 = require("./typeEvaluator");
|
|
83
83
|
const typeEvaluatorTypes_1 = require("./typeEvaluatorTypes");
|
|
84
84
|
const typeGuards_1 = require("./typeGuards");
|
|
85
85
|
const types_1 = require("./types");
|
|
@@ -118,7 +118,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
118
118
|
if (isPrintCodeComplexityEnabled) {
|
|
119
119
|
console.log(`Code complexity of module ${this._fileInfo.fileUri.toUserVisibleString()} is ${codeComplexity.toString()}`);
|
|
120
120
|
}
|
|
121
|
-
if (codeComplexity >
|
|
121
|
+
if (codeComplexity > this._evaluator.getMaxCodeComplexity()) {
|
|
122
122
|
this._evaluator.addDiagnosticForTextRange(this._fileInfo, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.codeTooComplexToAnalyze(), { start: 0, length: 0 });
|
|
123
123
|
}
|
|
124
124
|
this._walkStatementsAndReportUnreachable(this._moduleNode.d.statements);
|
|
@@ -219,6 +219,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
219
219
|
this._scopedNodes.push(node);
|
|
220
220
|
return false;
|
|
221
221
|
}
|
|
222
|
+
visitDecorator(node) {
|
|
223
|
+
// Class type evaluation can defer identity-factory arguments, so full checking must validate the expression.
|
|
224
|
+
this._evaluator.getTypeOfExpression(node.d.expr);
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
222
227
|
visitFunction(node) {
|
|
223
228
|
if (node.d.typeParams) {
|
|
224
229
|
this.walk(node.d.typeParams);
|
|
@@ -400,7 +405,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
400
405
|
}
|
|
401
406
|
});
|
|
402
407
|
const codeComplexity = this._nodeInfo.getCodeFlowComplexity(node);
|
|
403
|
-
const isTooComplexToAnalyze = codeComplexity >
|
|
408
|
+
const isTooComplexToAnalyze = codeComplexity > this._evaluator.getMaxCodeComplexity();
|
|
404
409
|
if (isPrintCodeComplexityEnabled) {
|
|
405
410
|
console.log(`Code complexity of function ${node.d.name.d.value} is ${codeComplexity.toString()}`);
|
|
406
411
|
}
|
|
@@ -2506,8 +2511,78 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
2506
2511
|
}
|
|
2507
2512
|
// If both declarations are functions, it's OK if they
|
|
2508
2513
|
// both have the same signatures.
|
|
2509
|
-
if (!isInSameStatementList && primaryType && otherType
|
|
2510
|
-
|
|
2514
|
+
if (!isInSameStatementList && primaryType && otherType) {
|
|
2515
|
+
let adjustedOtherType = otherType;
|
|
2516
|
+
let typeParamsMatch = true;
|
|
2517
|
+
if ((0, types_1.isFunction)(primaryType) &&
|
|
2518
|
+
(0, types_1.isFunction)(otherType) &&
|
|
2519
|
+
primaryType.shared.typeVarScopeId &&
|
|
2520
|
+
otherType.shared.typeVarScopeId) {
|
|
2521
|
+
const primaryTypeParams = primaryType.shared.typeParams.filter((typeParam) => typeParam.priv.scopeId === primaryType.shared.typeVarScopeId);
|
|
2522
|
+
const otherTypeParams = otherType.shared.typeParams.filter((typeParam) => typeParam.priv.scopeId === otherType.shared.typeVarScopeId);
|
|
2523
|
+
typeParamsMatch = primaryTypeParams.length === otherTypeParams.length;
|
|
2524
|
+
if (typeParamsMatch && otherTypeParams.length > 0) {
|
|
2525
|
+
// Local type parameter names are not part of a generic function signature.
|
|
2526
|
+
// Align parameters by position, but verify their metadata before substitution.
|
|
2527
|
+
const solution = new constraintSolution_1.ConstraintSolution();
|
|
2528
|
+
otherTypeParams.forEach((typeParam, index) => {
|
|
2529
|
+
solution.setType(typeParam, primaryTypeParams[index]);
|
|
2530
|
+
});
|
|
2531
|
+
for (let index = 0; index < primaryTypeParams.length; index++) {
|
|
2532
|
+
const primaryTypeParam = primaryTypeParams[index];
|
|
2533
|
+
const otherTypeParam = otherTypeParams[index];
|
|
2534
|
+
if (primaryTypeParam.shared.kind !== otherTypeParam.shared.kind ||
|
|
2535
|
+
primaryTypeParam.shared.isSynthesized !== otherTypeParam.shared.isSynthesized ||
|
|
2536
|
+
primaryTypeParam.shared.declaredVariance !== otherTypeParam.shared.declaredVariance) {
|
|
2537
|
+
typeParamsMatch = false;
|
|
2538
|
+
break;
|
|
2539
|
+
}
|
|
2540
|
+
const primaryBound = primaryTypeParam.shared.boundType;
|
|
2541
|
+
const otherBound = otherTypeParam.shared.boundType
|
|
2542
|
+
? (0, typeUtils_1.applySolvedTypeVars)(otherTypeParam.shared.boundType, solution)
|
|
2543
|
+
: undefined;
|
|
2544
|
+
if (!!primaryBound !== !!otherBound ||
|
|
2545
|
+
(primaryBound && otherBound && !(0, types_1.isTypeSame)(primaryBound, otherBound))) {
|
|
2546
|
+
typeParamsMatch = false;
|
|
2547
|
+
break;
|
|
2548
|
+
}
|
|
2549
|
+
if (primaryTypeParam.shared.constraints.length !==
|
|
2550
|
+
otherTypeParam.shared.constraints.length) {
|
|
2551
|
+
typeParamsMatch = false;
|
|
2552
|
+
break;
|
|
2553
|
+
}
|
|
2554
|
+
if (primaryTypeParam.shared.constraints.some((constraint, constraintIndex) => !(0, types_1.isTypeSame)(constraint, (0, typeUtils_1.applySolvedTypeVars)(otherTypeParam.shared.constraints[constraintIndex], solution)))) {
|
|
2555
|
+
typeParamsMatch = false;
|
|
2556
|
+
break;
|
|
2557
|
+
}
|
|
2558
|
+
if (primaryTypeParam.shared.isDefaultExplicit !==
|
|
2559
|
+
otherTypeParam.shared.isDefaultExplicit) {
|
|
2560
|
+
typeParamsMatch = false;
|
|
2561
|
+
break;
|
|
2562
|
+
}
|
|
2563
|
+
if (primaryTypeParam.shared.isDefaultExplicit &&
|
|
2564
|
+
!(0, types_1.isTypeSame)(primaryTypeParam.shared.defaultType, (0, typeUtils_1.applySolvedTypeVars)(otherTypeParam.shared.defaultType, solution))) {
|
|
2565
|
+
typeParamsMatch = false;
|
|
2566
|
+
break;
|
|
2567
|
+
}
|
|
2568
|
+
}
|
|
2569
|
+
if (typeParamsMatch) {
|
|
2570
|
+
adjustedOtherType = (0, typeUtils_1.applySolvedTypeVars)(otherType, solution);
|
|
2571
|
+
}
|
|
2572
|
+
}
|
|
2573
|
+
}
|
|
2574
|
+
let parameterOptionalityMatches = true;
|
|
2575
|
+
if ((0, types_1.isFunction)(primaryType) && (0, types_1.isFunction)(adjustedOtherType)) {
|
|
2576
|
+
const primaryParameters = primaryType.shared.parameters;
|
|
2577
|
+
const otherParameters = adjustedOtherType.shared.parameters;
|
|
2578
|
+
parameterOptionalityMatches =
|
|
2579
|
+
primaryParameters.length === otherParameters.length &&
|
|
2580
|
+
primaryParameters.every((_param, index) => !!types_1.FunctionType.getParamDefaultType(primaryType, index) ===
|
|
2581
|
+
!!types_1.FunctionType.getParamDefaultType(adjustedOtherType, index));
|
|
2582
|
+
}
|
|
2583
|
+
if (typeParamsMatch && parameterOptionalityMatches && (0, types_1.isTypeSame)(primaryType, adjustedOtherType)) {
|
|
2584
|
+
duplicateIsOk = true;
|
|
2585
|
+
}
|
|
2511
2586
|
}
|
|
2512
2587
|
if (primaryDecl.type === 3 /* DeclarationType.TypeParam */) {
|
|
2513
2588
|
// The error will be reported elsewhere if a type parameter is
|