@zzzen/pyright-internal 1.2.0-dev.20260830 → 1.2.0-dev.20260913

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 (100) hide show
  1. package/dist/analyzer/checker.d.ts +2 -1
  2. package/dist/analyzer/checker.js +78 -2
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/constraintSolver.js +10 -2
  5. package/dist/analyzer/constraintSolver.js.map +1 -1
  6. package/dist/analyzer/constructors.js +7 -18
  7. package/dist/analyzer/constructors.js.map +1 -1
  8. package/dist/analyzer/decorators.js +45 -2
  9. package/dist/analyzer/decorators.js.map +1 -1
  10. package/dist/analyzer/parseTreeUtils.js +12 -13
  11. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  12. package/dist/analyzer/service.d.ts +3 -1
  13. package/dist/analyzer/service.js +19 -10
  14. package/dist/analyzer/service.js.map +1 -1
  15. package/dist/analyzer/typeEvaluator.js +56 -379
  16. package/dist/analyzer/typeEvaluator.js.map +1 -1
  17. package/dist/common/fileSystem.d.ts +1 -0
  18. package/dist/common/fileSystem.js.map +1 -1
  19. package/dist/common/realFileSystem.d.ts +1 -0
  20. package/dist/common/realFileSystem.js +12 -0
  21. package/dist/common/realFileSystem.js.map +1 -1
  22. package/dist/fileSystemMapping.d.ts +1 -1
  23. package/dist/fileSystemMapping.js +3 -0
  24. package/dist/fileSystemMapping.js.map +1 -1
  25. package/dist/languageService/completionProvider.d.ts +2 -1
  26. package/dist/languageService/completionProvider.js +4 -1
  27. package/dist/languageService/completionProvider.js.map +1 -1
  28. package/dist/languageService/fileWatcherDynamicFeature.d.ts +6 -4
  29. package/dist/languageService/fileWatcherDynamicFeature.js +19 -15
  30. package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
  31. package/dist/languageService/hoverProvider.d.ts +1 -1
  32. package/dist/languageService/hoverProvider.js +13 -8
  33. package/dist/languageService/hoverProvider.js.map +1 -1
  34. package/dist/languageService/tooltipUtils.d.ts +2 -1
  35. package/dist/languageService/tooltipUtils.js +15 -17
  36. package/dist/languageService/tooltipUtils.js.map +1 -1
  37. package/dist/localization/localize.d.ts +1 -0
  38. package/dist/localization/localize.js +1 -0
  39. package/dist/localization/localize.js.map +1 -1
  40. package/dist/localization/package.nls.cs.json +5 -4
  41. package/dist/localization/package.nls.de.json +5 -4
  42. package/dist/localization/package.nls.en-us.json +1 -0
  43. package/dist/localization/package.nls.es.json +5 -4
  44. package/dist/localization/package.nls.fr.json +5 -4
  45. package/dist/localization/package.nls.it.json +5 -4
  46. package/dist/localization/package.nls.ja.json +5 -4
  47. package/dist/localization/package.nls.ko.json +5 -4
  48. package/dist/localization/package.nls.pl.json +5 -4
  49. package/dist/localization/package.nls.pt-br.json +5 -4
  50. package/dist/localization/package.nls.qps-ploc.json +1 -0
  51. package/dist/localization/package.nls.ru.json +5 -4
  52. package/dist/localization/package.nls.tr.json +5 -4
  53. package/dist/localization/package.nls.zh-cn.json +5 -4
  54. package/dist/localization/package.nls.zh-tw.json +5 -4
  55. package/dist/parser/parser.js +7 -1
  56. package/dist/parser/parser.js.map +1 -1
  57. package/dist/parser/tokenizer.js +3 -5
  58. package/dist/parser/tokenizer.js.map +1 -1
  59. package/dist/readonlyAugmentedFileSystem.d.ts +1 -0
  60. package/dist/readonlyAugmentedFileSystem.js +3 -0
  61. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  62. package/dist/tests/checker.test.js +8 -0
  63. package/dist/tests/checker.test.js.map +1 -1
  64. package/dist/tests/fileSystemMapping.test.js +3 -0
  65. package/dist/tests/fileSystemMapping.test.js.map +1 -1
  66. package/dist/tests/fourslash/hover.builtinDocstrings.fourslash.js +5 -5
  67. package/dist/tests/fourslash/hover.fourslash.js +1 -1
  68. package/dist/tests/fourslash/hover.import.django.view.fourslash.js +1 -1
  69. package/dist/tests/fourslash/hover.plainText.fourslash.js +1 -1
  70. package/dist/tests/harness/vfs/filesystem.d.ts +1 -0
  71. package/dist/tests/harness/vfs/filesystem.js +3 -0
  72. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  73. package/dist/tests/hoverProvider.test.js +2 -2
  74. package/dist/tests/importResolver.test.js +5 -0
  75. package/dist/tests/importResolver.test.js.map +1 -1
  76. package/dist/tests/mypyPrimerAnalysis.test.d.ts +1 -0
  77. package/dist/tests/mypyPrimerAnalysis.test.js +633 -0
  78. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -0
  79. package/dist/tests/parseTreeUtils.test.js +41 -0
  80. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  81. package/dist/tests/service.test.js +46 -0
  82. package/dist/tests/service.test.js.map +1 -1
  83. package/dist/tests/typeEvaluator1.test.js +13 -2
  84. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  85. package/dist/tests/typeEvaluator6.test.js +155 -3
  86. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  87. package/dist/tests/typeServer/stubGenerator.test.d.ts +1 -0
  88. package/dist/tests/typeServer/stubGenerator.test.js +73 -0
  89. package/dist/tests/typeServer/stubGenerator.test.js.map +1 -0
  90. package/dist/tests/typeUtils.test.js +15 -0
  91. package/dist/tests/typeUtils.test.js.map +1 -1
  92. package/dist/typeServer/stubGenerator.js +32 -7
  93. package/dist/typeServer/stubGenerator.js.map +1 -1
  94. package/dist/typeServer/typeServerFileSystem.d.ts +1 -0
  95. package/dist/typeServer/typeServerFileSystem.js +3 -0
  96. package/dist/typeServer/typeServerFileSystem.js.map +1 -1
  97. package/dist/typeServer/virtualFileOverlayFileSystem.d.ts +1 -0
  98. package/dist/typeServer/virtualFileOverlayFileSystem.js +3 -0
  99. package/dist/typeServer/virtualFileOverlayFileSystem.js.map +1 -1
  100. package/package.json +1 -1
@@ -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;
@@ -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");
@@ -219,6 +220,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
219
220
  this._scopedNodes.push(node);
220
221
  return false;
221
222
  }
223
+ visitDecorator(node) {
224
+ // Class type evaluation can defer identity-factory arguments, so full checking must validate the expression.
225
+ this._evaluator.getTypeOfExpression(node.d.expr);
226
+ return true;
227
+ }
222
228
  visitFunction(node) {
223
229
  if (node.d.typeParams) {
224
230
  this.walk(node.d.typeParams);
@@ -2506,8 +2512,78 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2506
2512
  }
2507
2513
  // If both declarations are functions, it's OK if they
2508
2514
  // both have the same signatures.
2509
- if (!isInSameStatementList && primaryType && otherType && (0, types_1.isTypeSame)(primaryType, otherType)) {
2510
- duplicateIsOk = true;
2515
+ if (!isInSameStatementList && primaryType && otherType) {
2516
+ let adjustedOtherType = otherType;
2517
+ let typeParamsMatch = true;
2518
+ if ((0, types_1.isFunction)(primaryType) &&
2519
+ (0, types_1.isFunction)(otherType) &&
2520
+ primaryType.shared.typeVarScopeId &&
2521
+ otherType.shared.typeVarScopeId) {
2522
+ const primaryTypeParams = primaryType.shared.typeParams.filter((typeParam) => typeParam.priv.scopeId === primaryType.shared.typeVarScopeId);
2523
+ const otherTypeParams = otherType.shared.typeParams.filter((typeParam) => typeParam.priv.scopeId === otherType.shared.typeVarScopeId);
2524
+ typeParamsMatch = primaryTypeParams.length === otherTypeParams.length;
2525
+ if (typeParamsMatch && otherTypeParams.length > 0) {
2526
+ // Local type parameter names are not part of a generic function signature.
2527
+ // Align parameters by position, but verify their metadata before substitution.
2528
+ const solution = new constraintSolution_1.ConstraintSolution();
2529
+ otherTypeParams.forEach((typeParam, index) => {
2530
+ solution.setType(typeParam, primaryTypeParams[index]);
2531
+ });
2532
+ for (let index = 0; index < primaryTypeParams.length; index++) {
2533
+ const primaryTypeParam = primaryTypeParams[index];
2534
+ const otherTypeParam = otherTypeParams[index];
2535
+ if (primaryTypeParam.shared.kind !== otherTypeParam.shared.kind ||
2536
+ primaryTypeParam.shared.isSynthesized !== otherTypeParam.shared.isSynthesized ||
2537
+ primaryTypeParam.shared.declaredVariance !== otherTypeParam.shared.declaredVariance) {
2538
+ typeParamsMatch = false;
2539
+ break;
2540
+ }
2541
+ const primaryBound = primaryTypeParam.shared.boundType;
2542
+ const otherBound = otherTypeParam.shared.boundType
2543
+ ? (0, typeUtils_1.applySolvedTypeVars)(otherTypeParam.shared.boundType, solution)
2544
+ : undefined;
2545
+ if (!!primaryBound !== !!otherBound ||
2546
+ (primaryBound && otherBound && !(0, types_1.isTypeSame)(primaryBound, otherBound))) {
2547
+ typeParamsMatch = false;
2548
+ break;
2549
+ }
2550
+ if (primaryTypeParam.shared.constraints.length !==
2551
+ otherTypeParam.shared.constraints.length) {
2552
+ typeParamsMatch = false;
2553
+ break;
2554
+ }
2555
+ if (primaryTypeParam.shared.constraints.some((constraint, constraintIndex) => !(0, types_1.isTypeSame)(constraint, (0, typeUtils_1.applySolvedTypeVars)(otherTypeParam.shared.constraints[constraintIndex], solution)))) {
2556
+ typeParamsMatch = false;
2557
+ break;
2558
+ }
2559
+ if (primaryTypeParam.shared.isDefaultExplicit !==
2560
+ otherTypeParam.shared.isDefaultExplicit) {
2561
+ typeParamsMatch = false;
2562
+ break;
2563
+ }
2564
+ if (primaryTypeParam.shared.isDefaultExplicit &&
2565
+ !(0, types_1.isTypeSame)(primaryTypeParam.shared.defaultType, (0, typeUtils_1.applySolvedTypeVars)(otherTypeParam.shared.defaultType, solution))) {
2566
+ typeParamsMatch = false;
2567
+ break;
2568
+ }
2569
+ }
2570
+ if (typeParamsMatch) {
2571
+ adjustedOtherType = (0, typeUtils_1.applySolvedTypeVars)(otherType, solution);
2572
+ }
2573
+ }
2574
+ }
2575
+ let parameterOptionalityMatches = true;
2576
+ if ((0, types_1.isFunction)(primaryType) && (0, types_1.isFunction)(adjustedOtherType)) {
2577
+ const primaryParameters = primaryType.shared.parameters;
2578
+ const otherParameters = adjustedOtherType.shared.parameters;
2579
+ parameterOptionalityMatches =
2580
+ primaryParameters.length === otherParameters.length &&
2581
+ primaryParameters.every((_param, index) => !!types_1.FunctionType.getParamDefaultType(primaryType, index) ===
2582
+ !!types_1.FunctionType.getParamDefaultType(adjustedOtherType, index));
2583
+ }
2584
+ if (typeParamsMatch && parameterOptionalityMatches && (0, types_1.isTypeSame)(primaryType, adjustedOtherType)) {
2585
+ duplicateIsOk = true;
2586
+ }
2511
2587
  }
2512
2588
  if (primaryDecl.type === 3 /* DeclarationType.TypeParam */) {
2513
2589
  // The error will be reported elsewhere if a type parameter is