mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 01:45:06 +00:00
Disable type inference: local function return types
Change-Id: I5491150ccf4ddcb8c7905c66b5fc2b5b17d1239d Reviewed-on: https://dart-review.googlesource.com/c/86340 Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
This commit is contained in:
parent
6ec321f2b7
commit
b46077332b
|
@ -274,6 +274,8 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
|
|||
|
||||
bool get legacyMode => library.loader.target.legacyMode;
|
||||
|
||||
bool get disableTypeInference => library.disableTypeInference;
|
||||
|
||||
bool get inConstructor {
|
||||
return functionNestingLevel == 0 && member is KernelConstructorBuilder;
|
||||
}
|
||||
|
@ -3685,6 +3687,25 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
|
|||
FunctionNode function = formals.buildFunctionNode(
|
||||
library, null, typeParameters, asyncModifier, body, token.charOffset)
|
||||
..fileOffset = beginToken.charOffset;
|
||||
|
||||
if (disableTypeInference && asyncModifier != AsyncMarker.Sync) {
|
||||
DartType returnType;
|
||||
switch (asyncModifier) {
|
||||
case AsyncMarker.Async:
|
||||
returnType = coreTypes.futureClass.rawType;
|
||||
break;
|
||||
case AsyncMarker.AsyncStar:
|
||||
returnType = coreTypes.streamClass.rawType;
|
||||
break;
|
||||
case AsyncMarker.SyncStar:
|
||||
returnType = coreTypes.iterableClass.rawType;
|
||||
break;
|
||||
default:
|
||||
returnType = const DynamicType();
|
||||
break;
|
||||
}
|
||||
function.returnType = returnType;
|
||||
}
|
||||
if (constantContext != ConstantContext.none) {
|
||||
push(buildProblem(fasta.messageNotAConstantExpression, formals.charOffset,
|
||||
formals.length));
|
||||
|
|
Loading…
Reference in a new issue