@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.
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +4 -2
- package/dist/analyzer/backgroundAnalysisProgram.js +7 -2
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.js +18 -1
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/cacheManager.d.ts +14 -0
- package/dist/analyzer/cacheManager.js +65 -0
- package/dist/analyzer/cacheManager.js.map +1 -0
- package/dist/analyzer/checker.d.ts +1 -0
- package/dist/analyzer/checker.js +35 -0
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +6 -1
- package/dist/analyzer/codeFlowEngine.js +102 -87
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +1 -1
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +1 -0
- package/dist/analyzer/importResolver.js +3 -2
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +4 -4
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/program.d.ts +10 -2
- package/dist/analyzer/program.js +67 -44
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/service.d.ts +2 -0
- package/dist/analyzer/service.js +12 -3
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +1 -1
- package/dist/analyzer/sourceFile.js +4 -4
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceMapper.d.ts +6 -3
- package/dist/analyzer/sourceMapper.js +38 -14
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/sourceMapperUtils.d.ts +9 -0
- package/dist/analyzer/sourceMapperUtils.js +45 -0
- package/dist/analyzer/sourceMapperUtils.js.map +1 -0
- package/dist/analyzer/typeEvaluator.js +59 -42
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +1 -1
- package/dist/analyzer/typeUtils.js +4 -36
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/types.d.ts +3 -1
- package/dist/analyzer/types.js +6 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.js +1 -0
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/languageServerBase.d.ts +3 -1
- package/dist/languageServerBase.js +12 -8
- package/dist/languageServerBase.js.map +1 -1
- package/dist/localization/localize.d.ts +4 -0
- package/dist/localization/localize.js +2 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +2 -0
- package/dist/parser/parser.js +21 -10
- package/dist/parser/parser.js.map +1 -1
- package/dist/tests/fourslash/findDefinitions.builtinClass.fourslash.js +8 -6
- package/dist/tests/fourslash/findDefinitions.builtinClass.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/runner.js +1 -0
- package/dist/tests/harness/fourslash/runner.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +1 -0
- package/dist/tests/harness/fourslash/testState.js +3 -0
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/parser.test.js +22 -0
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/sourceMapperUtils.test.d.ts +1 -0
- package/dist/tests/sourceMapperUtils.test.js +103 -0
- package/dist/tests/sourceMapperUtils.test.js.map +1 -0
- package/dist/tests/testUtils.js +3 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +8 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +16 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +4 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/workspaceMap.js +2 -3
- package/dist/workspaceMap.js.map +1 -1
- package/package.json +1 -1
package/dist/analyzer/checker.js
CHANGED
@@ -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;
|