@zzzen/pyright-internal 1.2.0-dev.20230101 → 1.2.0-dev.20230108

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 (81) hide show
  1. package/dist/analyzer/checker.js +17 -11
  2. package/dist/analyzer/checker.js.map +1 -1
  3. package/dist/analyzer/codeFlowEngine.js +19 -4
  4. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  5. package/dist/analyzer/importResolver.d.ts +2 -1
  6. package/dist/analyzer/importResolver.js +18 -3
  7. package/dist/analyzer/importResolver.js.map +1 -1
  8. package/dist/analyzer/patternMatching.js +2 -2
  9. package/dist/analyzer/patternMatching.js.map +1 -1
  10. package/dist/analyzer/program.d.ts +1 -0
  11. package/dist/analyzer/program.js +41 -20
  12. package/dist/analyzer/program.js.map +1 -1
  13. package/dist/analyzer/regions.js +14 -5
  14. package/dist/analyzer/regions.js.map +1 -1
  15. package/dist/analyzer/sourceFile.d.ts +1 -1
  16. package/dist/analyzer/sourceMapper.d.ts +2 -2
  17. package/dist/analyzer/sourceMapper.js +14 -5
  18. package/dist/analyzer/sourceMapper.js.map +1 -1
  19. package/dist/analyzer/typeCacheUtils.d.ts +1 -3
  20. package/dist/analyzer/typeCacheUtils.js +4 -8
  21. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  22. package/dist/analyzer/typeDocStringUtils.d.ts +2 -1
  23. package/dist/analyzer/typeDocStringUtils.js +18 -7
  24. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  25. package/dist/analyzer/typeEvaluator.js +116 -110
  26. package/dist/analyzer/typeEvaluator.js.map +1 -1
  27. package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -1
  28. package/dist/analyzer/typeGuards.d.ts +5 -1
  29. package/dist/analyzer/typeGuards.js +180 -43
  30. package/dist/analyzer/typeGuards.js.map +1 -1
  31. package/dist/analyzer/typeUtils.d.ts +1 -0
  32. package/dist/analyzer/typeUtils.js +5 -1
  33. package/dist/analyzer/typeUtils.js.map +1 -1
  34. package/dist/commands/quickActionCommand.js +1 -1
  35. package/dist/commands/quickActionCommand.js.map +1 -1
  36. package/dist/common/collectionUtils.d.ts +1 -0
  37. package/dist/common/collectionUtils.js +9 -1
  38. package/dist/common/collectionUtils.js.map +1 -1
  39. package/dist/common/textEditUtils.d.ts +3 -2
  40. package/dist/common/textEditUtils.js +11 -10
  41. package/dist/common/textEditUtils.js.map +1 -1
  42. package/dist/languageServerBase.d.ts +1 -1
  43. package/dist/languageService/completionProvider.d.ts +3 -0
  44. package/dist/languageService/completionProvider.js +212 -159
  45. package/dist/languageService/completionProvider.js.map +1 -1
  46. package/dist/languageService/hoverProvider.d.ts +0 -1
  47. package/dist/languageService/hoverProvider.js +7 -20
  48. package/dist/languageService/hoverProvider.js.map +1 -1
  49. package/dist/languageService/indentationUtils.js +1 -1
  50. package/dist/languageService/indentationUtils.js.map +1 -1
  51. package/dist/languageService/tooltipUtils.d.ts +5 -1
  52. package/dist/languageService/tooltipUtils.js +28 -4
  53. package/dist/languageService/tooltipUtils.js.map +1 -1
  54. package/dist/tests/completions.test.d.ts +1 -0
  55. package/dist/tests/completions.test.js +331 -0
  56. package/dist/tests/completions.test.js.map +1 -0
  57. package/dist/tests/filesystem.test.js +11 -0
  58. package/dist/tests/filesystem.test.js.map +1 -1
  59. package/dist/tests/harness/fourslash/testState.js +1 -1
  60. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  61. package/dist/tests/harness/vfs/filesystem.d.ts +2 -2
  62. package/dist/tests/harness/vfs/filesystem.js +5 -1
  63. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  64. package/dist/tests/hoverProvider.test.d.ts +1 -0
  65. package/dist/tests/hoverProvider.test.js +247 -0
  66. package/dist/tests/hoverProvider.test.js.map +1 -0
  67. package/dist/tests/indentationUtils.ptvs.test.js +1 -1
  68. package/dist/tests/indentationUtils.test.js +4 -4
  69. package/dist/tests/typeEvaluator1.test.js +16 -0
  70. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  71. package/dist/tests/typeEvaluator2.test.js +5 -1
  72. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  73. package/dist/tests/typeEvaluator3.test.js +4 -0
  74. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  75. package/dist/tests/typeEvaluator4.test.js +4 -0
  76. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  77. package/dist/tests/typeEvaluator5.test.js +6 -0
  78. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  79. package/dist/workspaceMap.js +1 -3
  80. package/dist/workspaceMap.js.map +1 -1
  81. package/package.json +6 -6
@@ -531,17 +531,18 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
531
531
  return true;
532
532
  }
533
533
  visitReturn(node) {
534
- let returnType;
534
+ var _a, _b;
535
+ let returnTypeResult;
535
536
  const enclosingFunctionNode = ParseTreeUtils.getEnclosingFunction(node);
536
537
  const declaredReturnType = enclosingFunctionNode
537
538
  ? this._evaluator.getFunctionDeclaredReturnType(enclosingFunctionNode)
538
539
  : undefined;
539
540
  if (node.returnExpression) {
540
- returnType = this._evaluator.getType(node.returnExpression) || types_1.UnknownType.create();
541
+ returnTypeResult = (_a = this._evaluator.getTypeResult(node.returnExpression)) !== null && _a !== void 0 ? _a : { type: types_1.UnknownType.create() };
541
542
  }
542
543
  else {
543
544
  // There is no return expression, so "None" is assumed.
544
- returnType = types_1.NoneType.createInstance();
545
+ returnTypeResult = { type: types_1.NoneType.createInstance() };
545
546
  }
546
547
  // If the enclosing function is async and a generator, the return
547
548
  // statement is not allowed to have an argument. A syntax error occurs
@@ -558,9 +559,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
558
559
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.noReturnContainsReturn(), node);
559
560
  }
560
561
  else {
561
- const diagAddendum = new diagnostic_1.DiagnosticAddendum();
562
+ let diagAddendum = new diagnostic_1.DiagnosticAddendum();
562
563
  let returnTypeMatches = false;
563
- if (this._evaluator.assignType(declaredReturnType, returnType, diagAddendum, new typeVarContext_1.TypeVarContext(),
564
+ if (this._evaluator.assignType(declaredReturnType, returnTypeResult.type, diagAddendum, new typeVarContext_1.TypeVarContext(),
564
565
  /* srcTypeVarContext */ undefined, 64 /* AllowBoolTypeGuard */)) {
565
566
  returnTypeMatches = true;
566
567
  }
@@ -582,7 +583,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
582
583
  }
583
584
  if (!typeVarContext.isEmpty()) {
584
585
  const adjustedReturnType = (0, typeUtils_1.applySolvedTypeVars)(declaredReturnType, typeVarContext);
585
- if (this._evaluator.assignType(adjustedReturnType, returnType, diagAddendum,
586
+ if (this._evaluator.assignType(adjustedReturnType, returnTypeResult.type, diagAddendum,
586
587
  /* destTypeVarContext */ undefined,
587
588
  /* srcTypeVarContext */ undefined, 64 /* AllowBoolTypeGuard */)) {
588
589
  returnTypeMatches = true;
@@ -591,19 +592,24 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
591
592
  }
592
593
  }
593
594
  if (!returnTypeMatches) {
595
+ // If we have more detailed diagnostic information from
596
+ // bidirectional type inference, use that.
597
+ if (returnTypeResult.expectedTypeDiagAddendum) {
598
+ diagAddendum = returnTypeResult.expectedTypeDiagAddendum;
599
+ }
594
600
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.returnTypeMismatch().format({
595
- exprType: this._evaluator.printType(returnType),
601
+ exprType: this._evaluator.printType(returnTypeResult.type),
596
602
  returnType: this._evaluator.printType(declaredReturnType),
597
- }) + diagAddendum.getString(), node.returnExpression ? node.returnExpression : node);
603
+ }) + diagAddendum.getString(), node.returnExpression ? node.returnExpression : node, (_b = returnTypeResult.expectedTypeDiagAddendum) === null || _b === void 0 ? void 0 : _b.getEffectiveTextRange());
598
604
  }
599
605
  }
600
606
  }
601
- if ((0, types_1.isUnknown)(returnType)) {
607
+ if ((0, types_1.isUnknown)(returnTypeResult.type)) {
602
608
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnknownVariableType, diagnosticRules_1.DiagnosticRule.reportUnknownVariableType, localize_1.Localizer.Diagnostic.returnTypeUnknown(), node.returnExpression);
603
609
  }
604
- else if ((0, typeUtils_1.isPartlyUnknown)(returnType)) {
610
+ else if ((0, typeUtils_1.isPartlyUnknown)(returnTypeResult.type)) {
605
611
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnknownVariableType, diagnosticRules_1.DiagnosticRule.reportUnknownVariableType, localize_1.Localizer.Diagnostic.returnTypePartiallyUnknown().format({
606
- returnType: this._evaluator.printType(returnType, { expandTypeAlias: true }),
612
+ returnType: this._evaluator.printType(returnTypeResult.type, { expandTypeAlias: true }),
607
613
  }), node.returnExpression);
608
614
  }
609
615
  }