@zzzen/pyright-internal 1.2.0-dev.20221002 → 1.2.0-dev.20221016

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 (78) hide show
  1. package/dist/analyzer/backgroundAnalysisProgram.d.ts +4 -2
  2. package/dist/analyzer/backgroundAnalysisProgram.js +7 -2
  3. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  4. package/dist/analyzer/binder.js +18 -1
  5. package/dist/analyzer/binder.js.map +1 -1
  6. package/dist/analyzer/cacheManager.d.ts +14 -0
  7. package/dist/analyzer/cacheManager.js +65 -0
  8. package/dist/analyzer/cacheManager.js.map +1 -0
  9. package/dist/analyzer/checker.d.ts +1 -0
  10. package/dist/analyzer/checker.js +35 -0
  11. package/dist/analyzer/checker.js.map +1 -1
  12. package/dist/analyzer/codeFlowEngine.d.ts +6 -1
  13. package/dist/analyzer/codeFlowEngine.js +102 -87
  14. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  15. package/dist/analyzer/constraintSolver.js +1 -1
  16. package/dist/analyzer/constraintSolver.js.map +1 -1
  17. package/dist/analyzer/importResolver.d.ts +1 -0
  18. package/dist/analyzer/importResolver.js +3 -2
  19. package/dist/analyzer/importResolver.js.map +1 -1
  20. package/dist/analyzer/packageTypeVerifier.js +4 -4
  21. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  22. package/dist/analyzer/program.d.ts +10 -2
  23. package/dist/analyzer/program.js +67 -44
  24. package/dist/analyzer/program.js.map +1 -1
  25. package/dist/analyzer/service.d.ts +2 -0
  26. package/dist/analyzer/service.js +12 -3
  27. package/dist/analyzer/service.js.map +1 -1
  28. package/dist/analyzer/sourceFile.d.ts +1 -1
  29. package/dist/analyzer/sourceFile.js +4 -4
  30. package/dist/analyzer/sourceFile.js.map +1 -1
  31. package/dist/analyzer/sourceMapper.d.ts +6 -3
  32. package/dist/analyzer/sourceMapper.js +38 -14
  33. package/dist/analyzer/sourceMapper.js.map +1 -1
  34. package/dist/analyzer/sourceMapperUtils.d.ts +9 -0
  35. package/dist/analyzer/sourceMapperUtils.js +45 -0
  36. package/dist/analyzer/sourceMapperUtils.js.map +1 -0
  37. package/dist/analyzer/typeEvaluator.js +59 -42
  38. package/dist/analyzer/typeEvaluator.js.map +1 -1
  39. package/dist/analyzer/typeUtils.d.ts +1 -1
  40. package/dist/analyzer/typeUtils.js +4 -36
  41. package/dist/analyzer/typeUtils.js.map +1 -1
  42. package/dist/analyzer/types.d.ts +3 -1
  43. package/dist/analyzer/types.js +6 -0
  44. package/dist/analyzer/types.js.map +1 -1
  45. package/dist/backgroundAnalysisBase.js +1 -0
  46. package/dist/backgroundAnalysisBase.js.map +1 -1
  47. package/dist/languageServerBase.d.ts +3 -1
  48. package/dist/languageServerBase.js +12 -8
  49. package/dist/languageServerBase.js.map +1 -1
  50. package/dist/localization/localize.d.ts +4 -0
  51. package/dist/localization/localize.js +2 -0
  52. package/dist/localization/localize.js.map +1 -1
  53. package/dist/localization/package.nls.en-us.json +2 -0
  54. package/dist/parser/parser.js +21 -10
  55. package/dist/parser/parser.js.map +1 -1
  56. package/dist/tests/fourslash/findDefinitions.builtinClass.fourslash.js +8 -6
  57. package/dist/tests/fourslash/findDefinitions.builtinClass.fourslash.js.map +1 -1
  58. package/dist/tests/harness/fourslash/runner.js +1 -0
  59. package/dist/tests/harness/fourslash/runner.js.map +1 -1
  60. package/dist/tests/harness/fourslash/testState.d.ts +1 -0
  61. package/dist/tests/harness/fourslash/testState.js +3 -0
  62. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  63. package/dist/tests/parser.test.js +22 -0
  64. package/dist/tests/parser.test.js.map +1 -1
  65. package/dist/tests/sourceMapperUtils.test.d.ts +1 -0
  66. package/dist/tests/sourceMapperUtils.test.js +103 -0
  67. package/dist/tests/sourceMapperUtils.test.js.map +1 -0
  68. package/dist/tests/testUtils.js +3 -1
  69. package/dist/tests/testUtils.js.map +1 -1
  70. package/dist/tests/typeEvaluator2.test.js +8 -0
  71. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  72. package/dist/tests/typeEvaluator3.test.js +16 -0
  73. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  74. package/dist/tests/typeEvaluator4.test.js +4 -0
  75. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  76. package/dist/workspaceMap.js +2 -3
  77. package/dist/workspaceMap.js.map +1 -1
  78. package/package.json +1 -1
@@ -533,6 +533,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
533
533
  // There is no return expression, so "None" is assumed.
534
534
  returnType = types_1.NoneType.createInstance();
535
535
  }
536
+ // If the enclosing function is async and a generator, the return
537
+ // statement is not allowed to have an argument. A syntax error occurs
538
+ // at runtime in this case.
539
+ if ((enclosingFunctionNode === null || enclosingFunctionNode === void 0 ? void 0 : enclosingFunctionNode.isAsync) && node.returnExpression) {
540
+ const functionDecl = AnalyzerNodeInfo.getDeclaration(enclosingFunctionNode);
541
+ if ((functionDecl === null || functionDecl === void 0 ? void 0 : functionDecl.type) === 5 /* Function */ && functionDecl.isGenerator) {
542
+ this._evaluator.addError(localize_1.Localizer.Diagnostic.returnInAsyncGenerator(), node.returnExpression);
543
+ }
544
+ }
536
545
  if (this._evaluator.isNodeReachable(node, /* sourceNode */ undefined) && enclosingFunctionNode) {
537
546
  if (declaredReturnType) {
538
547
  if ((0, types_1.isNever)(declaredReturnType)) {
@@ -3341,6 +3350,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3341
3350
  if ((0, types_1.isAnyOrUnknown)(typeOfSymbol)) {
3342
3351
  return;
3343
3352
  }
3353
+ let foundOverride = false;
3344
3354
  for (const baseClass of classType.details.baseClasses) {
3345
3355
  if (!(0, types_1.isClass)(baseClass)) {
3346
3356
  continue;
@@ -3355,10 +3365,35 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3355
3365
  if (!baseClassAndSymbol) {
3356
3366
  continue;
3357
3367
  }
3368
+ foundOverride = true;
3358
3369
  this._validateBaseClassOverride(baseClassAndSymbol, symbol, typeOfSymbol, classType, name);
3359
3370
  }
3371
+ if (!foundOverride) {
3372
+ // If this is a method decorated with @override, validate that there
3373
+ // is a base class method of the same name.
3374
+ this._validateOverrideDecorator(typeOfSymbol);
3375
+ }
3360
3376
  });
3361
3377
  }
3378
+ // Determines whether the type is a function or overloaded function with an @override
3379
+ // decorator. In this case, an error is reported because no base class has declared
3380
+ // a method of the same name.
3381
+ _validateOverrideDecorator(overrideType) {
3382
+ let overrideFunction;
3383
+ if ((0, types_1.isFunction)(overrideType)) {
3384
+ overrideFunction = overrideType;
3385
+ }
3386
+ else if ((0, types_1.isOverloadedFunction)(overrideType)) {
3387
+ overrideFunction = types_1.OverloadedFunctionType.getImplementation(overrideType);
3388
+ }
3389
+ if (!overrideFunction ||
3390
+ !types_1.FunctionType.isOverridden(overrideFunction) ||
3391
+ !overrideFunction.details.declaration) {
3392
+ return;
3393
+ }
3394
+ const funcNode = overrideFunction.details.declaration.node;
3395
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.overrideNotFound().format({ name: funcNode.name.value }), funcNode.name);
3396
+ }
3362
3397
  _validateBaseClassOverride(baseClassAndSymbol, overrideSymbol, overrideType, childClassType, memberName) {
3363
3398
  if (!(0, types_1.isInstantiableClass)(baseClassAndSymbol.classType)) {
3364
3399
  return;