Start implementation of anonymous block methods

This CL introduces support for anonymous block methods (that is,
`e.{ print(this); }` as opposed to `e.=> print(this);`). It introduces
the notion of a `ReturnContext` which is used to change the semantics
of a return statement when it returns from an anonymous method (where
it works like a `break` that terminates the execution of the block
which is the body of the enclosing anonymous method), but keeps the
semantics of return statements returning from a function (including
function literals) still have the same semantics as today.

Change-Id: I404459361fbb7c2e495e46d1bd29924063f3aac4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/503800
SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
This commit is contained in:
Erik Ernst
2026-05-27 06:04:46 -07:00
committed by dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent 656ff46efd
commit 3263555dc5
100 changed files with 5684 additions and 98 deletions
+77 -66
View File
@@ -3178,7 +3178,9 @@ class BodyBuilderImpl extends StackListenerImpl
) {
debugEvent("ReturnStatement");
Expression? expression = hasExpression ? popForValue() : null;
if (expression != null && inConstructor) {
if (expression != null &&
inConstructor &&
_parameterlessAnonymousMethodDepth == 0) {
push(
buildProblemStatement(
diag.constructorWithReturnType,
@@ -8123,73 +8125,50 @@ class BodyBuilderImpl extends StackListenerImpl
exitLocalScope(expectedScopeKinds: const [LocalScopeKind.formals]);
}
Expression? bodyExpr;
if (isExpression) {
Expression bodyExpr;
Expression receiver;
Variable variable;
bodyExpr = toValue(body);
}
bool isImplicitlyTyped;
int typeOffset;
if (formals is FormalParameters &&
formals.parameters?.length == 1 &&
formals.parameters![0].isRequiredPositional) {
bodyExpr = toValue(body);
receiver = popForValue();
FormalParameterBuilder formal = formals.parameters![0];
Expression receiver;
Variable variable;
bool isImplicitlyTyped;
int typeOffset;
// Build the variable declaration.
variable = formal.build(libraryBuilder);
variable.initializer = receiver;
variable.initializer!.parent = variable;
if (formals is FormalParameters &&
formals.parameters?.length == 1 &&
formals.parameters![0].isRequiredPositional) {
receiver = popForValue();
FormalParameterBuilder formal = formals.parameters![0];
isImplicitlyTyped = false;
if (variable is InternalVariable) {
isImplicitlyTyped = (variable as InternalVariable).isImplicitlyTyped;
}
typeOffset = formal.type.charOffset ?? variable.fileOffset;
} else if (formals == null) {
bodyExpr = toValue(body);
variable = _thisVariables.pop();
_parameterlessAnonymousMethodDepth--;
receiver = popForValue();
isImplicitlyTyped = true;
typeOffset = variable.fileOffset;
} else {
FormalParameters formalParameters = formals as FormalParameters;
addProblem(
diag.anonymousMethodWrongParameterList,
formalParameters.charOffset,
formalParameters.length,
);
popForValue();
bodyExpr = toValue(body);
Expression result = new InvalidExpression(
"An anonymous method must have a single mandatory positional "
"parameter, or no parameter list at all",
)..fileOffset = offsetForToken(beginToken);
push(result);
assignedVariables.endNode(
result,
isClosureOrLateVariableInitializer: false,
);
return;
// Build the variable declaration.
variable = formal.build(libraryBuilder);
variable.initializer = receiver;
variable.initializer!.parent = variable;
isImplicitlyTyped = false;
if (variable is InternalVariable) {
isImplicitlyTyped = (variable as InternalVariable).isImplicitlyTyped;
}
int variableOffset = variable.initializer!.fileOffset;
// Build the result expression.
bool isNullAware =
beginToken.lexeme == '?.' || beginToken.lexeme == '?..';
bool isCascade = beginToken.lexeme == '..' || beginToken.lexeme == '?..';
Expression result = new AnonymousMethodExpression(
variable,
bodyExpr,
isImplicitlyTyped: isImplicitlyTyped,
isNullAware: isNullAware,
isCascade: isCascade,
typeOffset: typeOffset,
)..fileOffset = variableOffset;
typeOffset = formal.type.charOffset ?? variable.fileOffset;
} else if (formals == null) {
variable = _thisVariables.pop();
_parameterlessAnonymousMethodDepth--;
receiver = popForValue();
isImplicitlyTyped = true;
typeOffset = variable.fileOffset;
} else {
FormalParameters formalParameters = formals as FormalParameters;
addProblem(
diag.anonymousMethodWrongParameterList,
formalParameters.charOffset,
formalParameters.length,
);
popForValue();
Expression result = new InvalidExpression(
"An anonymous method must have a single mandatory positional "
"parameter, or no parameter list at all",
)..fileOffset = offsetForToken(beginToken);
push(result);
assignedVariables.endNode(
result,
@@ -8197,9 +8176,39 @@ class BodyBuilderImpl extends StackListenerImpl
);
return;
}
int variableOffset = variable.initializer!.fileOffset;
// Coverage-ignore-block(suite): Not run.
throw new UnimplementedError("endAnonymousMethodInvocation other cases");
// Build the result expression.
bool isNullAware = beginToken.lexeme == '?.' || beginToken.lexeme == '?..';
bool isCascade = beginToken.lexeme == '..' || beginToken.lexeme == '?..';
Expression result;
if (isExpression) {
result = new AnonymousMethodExpression(
variable,
bodyExpr!,
isImplicitlyTyped: isImplicitlyTyped,
isNullAware: isNullAware,
isCascade: isCascade,
typeOffset: typeOffset,
)..fileOffset = variableOffset;
} else {
Statement bodyStatement = body as Statement;
result = new AnonymousMethodBlock(
variable,
bodyStatement,
isImplicitlyTyped: isImplicitlyTyped,
isNullAware: isNullAware,
isCascade: isCascade,
typeOffset: typeOffset,
)..fileOffset = variableOffset;
}
push(result);
assignedVariables.endNode(
result,
isClosureOrLateVariableInitializer: false,
);
}
@override
@@ -9732,7 +9741,9 @@ class BodyBuilderImpl extends StackListenerImpl
if (target == null) {
push(
problemInLoopOrSwitch = buildProblemStatement(
diag.continueWithoutLabelInCase,
_switchScope != null
? diag.continueWithoutLabelInCase
: diag.continueOutsideOfLoop,
continueKeyword.charOffset,
length: continueKeyword.length,
),
@@ -558,6 +558,51 @@ class AnonymousMethodExpression extends InternalExpression {
}
}
/// Internal expression representing an anonymous block method invocation.
class AnonymousMethodBlock extends InternalExpression {
Variable variable;
Statement body;
final bool isCascade;
final bool isImplicitlyTyped;
final bool isNullAware;
final bool isParameterless;
final int typeOffset;
AnonymousMethodBlock(
this.variable,
this.body, {
required this.isImplicitlyTyped,
required this.isNullAware,
required this.isCascade,
required this.typeOffset,
}) : isParameterless = variable.isSynthesized {
variable.parent = this;
body.parent = this;
}
@override
ExpressionInferenceResult acceptInference(
InferenceVisitorImpl visitor,
DartType typeContext,
) {
return visitor.visitAnonymousMethodBlock(this, typeContext);
}
@override
String toString() {
return "AnonymousMethodBlock(${toStringInternal()})";
}
@override
// Coverage-ignore(suite): Not run.
void toTextInternal(AstPrinter printer) {
printer.write('let ');
printer.writeVariableInitialization(variable);
printer.write(' in ');
printer.writeStatement(body);
}
}
/// Internal expression representing a deferred check.
// TODO(johnniwinther): Change the representation to be direct and perform
// the [Let] encoding in the replacement.
@@ -17,6 +17,7 @@ import 'package:_fe_analyzer_shared/src/types/shared_type.dart';
import 'package:_fe_analyzer_shared/src/util/null_value.dart';
import 'package:_fe_analyzer_shared/src/util/stack_checker.dart';
import 'package:_fe_analyzer_shared/src/util/value_kind.dart';
import 'package:front_end/src/util/local_stack.dart';
import 'package:kernel/ast.dart';
import 'package:kernel/names.dart';
import 'package:kernel/src/non_null.dart';
@@ -104,6 +105,25 @@ abstract class InferenceVisitor {
InitializerInferenceResult inferInitializer(Initializer initializer);
}
abstract class ReturnContext {}
class StandardReturnContext implements ReturnContext {
const StandardReturnContext();
}
class AnonymousMethodReturnContext extends ReturnContext {
final Variable resultVariable;
final LabeledStatement label;
final List<DartType> returnTypes = [];
final DartType typeContext;
AnonymousMethodReturnContext({
required this.resultVariable,
required this.label,
required this.typeContext,
});
}
class InferenceVisitorImpl extends InferenceVisitorBase
with
TypeAnalyzer<
@@ -141,6 +161,11 @@ class InferenceVisitorImpl extends InferenceVisitorBase
/// inside a closure.
BodyInferenceContext? _bodyContext;
/// Stack for return contexts.
final LocalStack<ReturnContext> _returnContexts = new LocalStack([]);
ReturnContext? get returnContext => _returnContexts.currentOrNull;
/// If a switch statement is being visited and the type being switched on is a
/// (possibly nullable) enumerated type, the set of enum values for which no
/// case head has been seen yet; otherwise `null`.
@@ -3522,6 +3547,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
_inTryOrLocalFunction = true;
Variable variable = node.variable;
flowAnalysis.functionExpression_begin(node);
_returnContexts.push(const StandardReturnContext());
inferMetadata(this, variable);
DartType? returnContext = node.hasImplicitReturnType
? null
@@ -3546,6 +3572,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
initialized: true,
);
flowAnalysis.functionExpression_end();
_returnContexts.pop();
_inTryOrLocalFunction = oldInTryOrLocalFunction;
return const StatementInferenceResult();
}
@@ -3612,6 +3639,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
bool oldInTryOrLocalFunction = _inTryOrLocalFunction;
_inTryOrLocalFunction = true;
flowAnalysis.functionExpression_begin(node);
_returnContexts.push(const StandardReturnContext());
FunctionType inferredType = visitFunctionNode(
node.function,
typeContext,
@@ -3624,6 +3652,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
inferredType.returnType;
}
flowAnalysis.functionExpression_end();
_returnContexts.pop();
_inTryOrLocalFunction = oldInTryOrLocalFunction;
if (scopeProviderInfo != null) {
_contextAllocationStrategy.exitScopeProvider(scopeProviderInfo);
@@ -11918,6 +11947,163 @@ class InferenceVisitorImpl extends InferenceVisitorBase
return new ExpressionInferenceResult(inferredType, replacement);
}
ExpressionInferenceResult visitAnonymousMethodBlock(
AnonymousMethodBlock node,
DartType typeContext,
) {
Variable resultVar = new Variable(null, isSynthesized: true)
..fileOffset = node.fileOffset;
LabeledStatement label = new LabeledStatement(null)
..fileOffset = node.fileOffset;
AnonymousMethodReturnContext context = new AnonymousMethodReturnContext(
resultVariable: resultVar,
label: label,
typeContext: typeContext,
);
_returnContexts.push(context);
DartType variableType = node.variable.type;
ExpressionInferenceResult initializerResult = inferExpression(
node.variable.initializer!,
const UnknownType(),
continueNullShorting: true,
);
Expression initializer = initializerResult.expression;
DartType initializerType = initializerResult.inferredType;
if (initializerType is VoidType) {
initializer = problemReporting.wrapInProblem(
compilerContext: compilerContext,
expression: initializer,
message: diag.voidExpression,
fileUri: fileUri,
fileOffset: initializer.fileOffset,
length: noLength,
);
}
if (node.isImplicitlyTyped) {
node.variable.type = node.isNullAware
? initializerType.toNonNull()
: initializerType;
} else {
DartType checkedType = node.isNullAware
? initializerType.toNonNull()
: initializerType;
if (!isAssignable(variableType, checkedType)) {
initializer = wrapUnassignableExpression(
initializer,
checkedType,
variableType,
diag.anonymousMethodWrongParameterTypeCfe.withArguments(
receiverType: checkedType,
parameterType: variableType,
),
fileOffset: node.typeOffset,
);
}
}
node.variable.initializer = initializer..parent = node.variable;
flowAnalysis.declare(
node.variable,
new SharedTypeView(node.variable.type),
initialized: false,
);
flowAnalysis.initialize(
node.variable,
new SharedTypeView(node.variable.type),
flowAnalysis.getExpressionInfo(node.variable.initializer!),
isFinal: false,
isLate: false,
isImplicitlyTyped: node.isImplicitlyTyped,
inheritPromotableProperties: node.isParameterless,
);
bool isNullAwareAccess = node.isNullAware && _enclosingCascade == null;
if (node.isNullAware) {
Expression receiverExpr = node.variable.initializer!;
Variable? tempVar;
if (isNullAwareAccess) {
tempVar =
new Variable(null, initializer: receiverExpr, isSynthesized: true)
..type = initializerType
..fileOffset = node.fileOffset;
receiverExpr = new VariableGet(tempVar);
}
node.variable.initializer =
new AsExpression(receiverExpr, node.variable.type)
..fileOffset = node.fileOffset
..parent = node.variable;
if (isNullAwareAccess) {
startNullShorting(
new NullAwareGuard(tempVar!, node.variable.fileOffset, this),
flowAnalysis.getExpressionInfo(tempVar.initializer!),
new SharedTypeView(tempVar.type),
guardVariable: tempVar,
);
}
}
if (node.isParameterless) {
flow.thisBinding_begin(
flowAnalysis.getExpressionInfo(node.variable.initializer!),
);
}
flowAnalysis.labeledStatement_begin(label);
StatementInferenceResult bodyResult = inferStatement(node.body);
bool isReachable = flowAnalysis.isReachable;
flowAnalysis.labeledStatement_end();
if (node.isParameterless) {
flow.thisBinding_end();
}
_returnContexts.pop();
Statement body = bodyResult.hasChanged ? bodyResult.statement : node.body;
label.body = body..parent = label;
DartType inferredType = isReachable
? const NullType()
: const NeverType.nonNullable();
for (DartType returnType in context.returnTypes) {
inferredType = typeSchemaEnvironment.getStandardUpperBound(
inferredType,
returnType,
);
}
resultVar.type = inferredType;
if (node.isCascade) {
inferredType = initializerType;
}
Block block = new Block([
extern.createVariableStatement(
extern.createVariableDeclaration(node.variable),
),
extern.createVariableStatement(
extern.createVariableDeclaration(resultVar),
),
label,
])..fileOffset = node.fileOffset;
Expression replacement = new BlockExpression(
block,
node.isCascade
? new VariableGet(node.variable)
: new VariableGet(resultVar),
)..fileOffset = node.fileOffset;
return new ExpressionInferenceResult(inferredType, replacement);
}
ExpressionInferenceResult visitPropertySet(
PropertySet node,
DartType typeContext,
@@ -12307,6 +12493,34 @@ class InferenceVisitorImpl extends InferenceVisitorBase
StatementInferenceResult visitReturnStatement(
covariant ReturnStatementImpl node,
) {
ReturnContext? context = returnContext;
if (context is AnonymousMethodReturnContext) {
Expression expression =
node.expression ?? (new NullLiteral()..fileOffset = node.fileOffset);
ExpressionInferenceResult expressionResult = inferExpression(
expression,
context.typeContext,
isVoidAllowed: true,
);
context.returnTypes.add(expressionResult.inferredType);
VariableSet assignment = new VariableSet(
context.resultVariable,
expressionResult.expression,
)..fileOffset = node.fileOffset;
BreakStatement breakStmt = new BreakStatement(context.label)
..fileOffset = node.fileOffset;
flowAnalysis.handleBreak(context.label);
Statement replacement = new Block([
new ExpressionStatement(assignment)..fileOffset = node.fileOffset,
breakStmt,
])..fileOffset = node.fileOffset;
return new StatementInferenceResult.single(replacement);
}
DartType typeContext = bodyContext.returnContext;
DartType inferredType;
Variable? thisVariable = _constructorContext?.thisVariable;
@@ -0,0 +1,29 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
int? i = null;
void main() {
i?..(p) {
1;
return;
};
i?..(p) {
p;
return;
};
i?..(p) {
p.isEven;
return;
};
i?..(p) {
return 1;
};
i?..(p) {
return p;
};
i?..(p) {
return p.isEven;
};
}
@@ -0,0 +1,88 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let final core::int? #t1 = self::i in #t1 == null ?{core::int?} null : block {
{
core::int p = #t1{core::int} as core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int? #t3 = self::i in #t3 == null ?{core::int?} null : block {
{
core::int p = #t3{core::int} as core::int;
Null #t4;
#L2:
{
p;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int? #t5 = self::i in #t5 == null ?{core::int?} null : block {
{
core::int p = #t5{core::int} as core::int;
Null #t6;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int? #t7 = self::i in #t7 == null ?{core::int?} null : block {
{
core::int p = #t7{core::int} as core::int;
core::int #t8;
#L4:
{
{
#t8 = 1;
break #L4;
}
}
}
} =>#t7;
let final core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
{
core::int p = #t9{core::int} as core::int;
core::int #t10;
#L5:
{
{
#t10 = p;
break #L5;
}
}
}
} =>#t9;
let final core::int? #t11 = self::i in #t11 == null ?{core::int?} null : block {
{
core::int p = #t11{core::int} as core::int;
core::bool #t12;
#L6:
{
{
#t12 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
}
} =>#t11;
}
@@ -0,0 +1,88 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let final core::int? #t1 = self::i in #t1 == null ?{core::int?} null : block {
{
core::int p = #t1{core::int} as core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int? #t3 = self::i in #t3 == null ?{core::int?} null : block {
{
core::int p = #t3{core::int} as core::int;
Null #t4;
#L2:
{
p;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int? #t5 = self::i in #t5 == null ?{core::int?} null : block {
{
core::int p = #t5{core::int} as core::int;
Null #t6;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int? #t7 = self::i in #t7 == null ?{core::int?} null : block {
{
core::int p = #t7{core::int} as core::int;
core::int #t8;
#L4:
{
{
#t8 = 1;
break #L4;
}
}
}
} =>#t7;
let final core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
{
core::int p = #t9{core::int} as core::int;
core::int #t10;
#L5:
{
{
#t10 = p;
break #L5;
}
}
}
} =>#t9;
let final core::int? #t11 = self::i in #t11 == null ?{core::int?} null : block {
{
core::int p = #t11{core::int} as core::int;
core::bool #t12;
#L6:
{
{
#t12 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
}
} =>#t11;
}
@@ -0,0 +1,7 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i;
static method main() → void
;
@@ -0,0 +1,88 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let final core::int? #t1 = self::i in #t1 == null ?{core::int?} null : block {
{
core::int p = #t1{core::int} as{Unchecked} core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int? #t3 = self::i in #t3 == null ?{core::int?} null : block {
{
core::int p = #t3{core::int} as{Unchecked} core::int;
Null #t4;
#L2:
{
p;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int? #t5 = self::i in #t5 == null ?{core::int?} null : block {
{
core::int p = #t5{core::int} as{Unchecked} core::int;
Null #t6;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int? #t7 = self::i in #t7 == null ?{core::int?} null : block {
{
core::int p = #t7{core::int} as{Unchecked} core::int;
core::int #t8;
#L4:
{
{
#t8 = 1;
break #L4;
}
}
}
} =>#t7;
let final core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
{
core::int p = #t9{core::int} as{Unchecked} core::int;
core::int #t10;
#L5:
{
{
#t10 = p;
break #L5;
}
}
}
} =>#t9;
let final core::int? #t11 = self::i in #t11 == null ?{core::int?} null : block {
{
core::int p = #t11{core::int} as{Unchecked} core::int;
core::bool #t12;
#L6:
{
{
#t12 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
}
} =>#t11;
}
@@ -0,0 +1,36 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
int? i = null;
void main() {
i?..{
1;
return;
};
i?..{
this;
return;
};
i?..{
this.isEven;
return;
};
i?..{
isEven;
return;
};
i?..{
return 1;
};
i?..{
return this;
};
i?..{
return this.isEven;
};
i?..{
return isEven;
};
}
@@ -0,0 +1,115 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let final core::int? #t1 = self::i in #t1 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t1{core::int} as core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int? #t3 = self::i in #t3 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t3{core::int} as core::int;
Null #t4;
#L2:
{
anonymous#this;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int? #t5 = self::i in #t5 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t5{core::int} as core::int;
Null #t6;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int? #t7 = self::i in #t7 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t7{core::int} as core::int;
Null #t8;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t8 = null;
break #L4;
}
}
}
} =>#t7;
let final core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t9{core::int} as core::int;
core::int #t10;
#L5:
{
{
#t10 = 1;
break #L5;
}
}
}
} =>#t9;
let final core::int? #t11 = self::i in #t11 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t11{core::int} as core::int;
core::int #t12;
#L6:
{
{
#t12 = anonymous#this;
break #L6;
}
}
}
} =>#t11;
let final core::int? #t13 = self::i in #t13 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t13{core::int} as core::int;
core::bool #t14;
#L7:
{
{
#t14 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
}
} =>#t13;
let final core::int? #t15 = self::i in #t15 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t15{core::int} as core::int;
core::bool #t16;
#L8:
{
{
#t16 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
}
} =>#t15;
}
@@ -0,0 +1,115 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let final core::int? #t1 = self::i in #t1 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t1{core::int} as core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int? #t3 = self::i in #t3 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t3{core::int} as core::int;
Null #t4;
#L2:
{
anonymous#this;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int? #t5 = self::i in #t5 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t5{core::int} as core::int;
Null #t6;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int? #t7 = self::i in #t7 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t7{core::int} as core::int;
Null #t8;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t8 = null;
break #L4;
}
}
}
} =>#t7;
let final core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t9{core::int} as core::int;
core::int #t10;
#L5:
{
{
#t10 = 1;
break #L5;
}
}
}
} =>#t9;
let final core::int? #t11 = self::i in #t11 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t11{core::int} as core::int;
core::int #t12;
#L6:
{
{
#t12 = anonymous#this;
break #L6;
}
}
}
} =>#t11;
let final core::int? #t13 = self::i in #t13 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t13{core::int} as core::int;
core::bool #t14;
#L7:
{
{
#t14 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
}
} =>#t13;
let final core::int? #t15 = self::i in #t15 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t15{core::int} as core::int;
core::bool #t16;
#L8:
{
{
#t16 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
}
} =>#t15;
}
@@ -0,0 +1,7 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i;
static method main() → void
;
@@ -0,0 +1,115 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let final core::int? #t1 = self::i in #t1 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t1{core::int} as{Unchecked} core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int? #t3 = self::i in #t3 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t3{core::int} as{Unchecked} core::int;
Null #t4;
#L2:
{
anonymous#this;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int? #t5 = self::i in #t5 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t5{core::int} as{Unchecked} core::int;
Null #t6;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int? #t7 = self::i in #t7 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t7{core::int} as{Unchecked} core::int;
Null #t8;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t8 = null;
break #L4;
}
}
}
} =>#t7;
let final core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t9{core::int} as{Unchecked} core::int;
core::int #t10;
#L5:
{
{
#t10 = 1;
break #L5;
}
}
}
} =>#t9;
let final core::int? #t11 = self::i in #t11 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t11{core::int} as{Unchecked} core::int;
core::int #t12;
#L6:
{
{
#t12 = anonymous#this;
break #L6;
}
}
}
} =>#t11;
let final core::int? #t13 = self::i in #t13 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t13{core::int} as{Unchecked} core::int;
core::bool #t14;
#L7:
{
{
#t14 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
}
} =>#t13;
let final core::int? #t15 = self::i in #t15 == null ?{core::int?} null : block {
{
final synthesized core::int anonymous#this = #t15{core::int} as{Unchecked} core::int;
core::bool #t16;
#L8:
{
{
#t16 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
}
} =>#t15;
}
@@ -0,0 +1,27 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
void main() {
1..(p) {
1;
return;
};
1..(p) {
p;
return;
};
1..(p) {
p.isEven;
return;
};
1..(p) {
return 1;
};
1..(p) {
return p;
};
1..(p) {
return p.isEven;
};
}
@@ -0,0 +1,87 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
let final core::int #t1 = 1 in block {
{
core::int p = #t1;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int #t3 = 1 in block {
{
core::int p = #t3;
Null #t4;
#L2:
{
p;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int #t5 = 1 in block {
{
core::int p = #t5;
Null #t6;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int #t7 = 1 in block {
{
core::int p = #t7;
core::int #t8;
#L4:
{
{
#t8 = 1;
break #L4;
}
}
}
} =>#t7;
let final core::int #t9 = 1 in block {
{
core::int p = #t9;
core::int #t10;
#L5:
{
{
#t10 = p;
break #L5;
}
}
}
} =>#t9;
let final core::int #t11 = 1 in block {
{
core::int p = #t11;
core::bool #t12;
#L6:
{
{
#t12 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
}
} =>#t11;
}
@@ -0,0 +1,87 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
let final core::int #t1 = 1 in block {
{
core::int p = #t1;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int #t3 = 1 in block {
{
core::int p = #t3;
Null #t4;
#L2:
{
p;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int #t5 = 1 in block {
{
core::int p = #t5;
Null #t6;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int #t7 = 1 in block {
{
core::int p = #t7;
core::int #t8;
#L4:
{
{
#t8 = 1;
break #L4;
}
}
}
} =>#t7;
let final core::int #t9 = 1 in block {
{
core::int p = #t9;
core::int #t10;
#L5:
{
{
#t10 = p;
break #L5;
}
}
}
} =>#t9;
let final core::int #t11 = 1 in block {
{
core::int p = #t11;
core::bool #t12;
#L6:
{
{
#t12 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
}
} =>#t11;
}
@@ -0,0 +1,5 @@
library;
import self as self;
static method main() → void
;
@@ -0,0 +1,103 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
let final core::int #t1 = 1 in block {
{
core::int p = #t1;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int #t3 = 1 in block {
{
core::int p = #t3;
Null #t4;
#L2:
{
p;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int #t5 = 1 in block {
{
core::int p = #t5;
Null #t6;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int #t7 = 1 in block {
{
core::int p = #t7;
core::int #t8;
#L4:
{
{
#t8 = 1;
break #L4;
}
}
}
} =>#t7;
let final core::int #t9 = 1 in block {
{
core::int p = #t9;
core::int #t10;
#L5:
{
{
#t10 = p;
break #L5;
}
}
}
} =>#t9;
let final core::int #t11 = 1 in block {
{
core::int p = #t11;
core::bool #t12;
#L6:
{
{
#t12 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
}
} =>#t11;
}
Extra constant evaluation status:
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:6:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:6:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:10:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:10:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:14:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:14:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:18:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:18:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:21:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:21:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:24:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_with_parameter.dart:24:3 -> IntConstant(1)
Extra constant evaluation: evaluated: 36, effectively constant: 12
@@ -0,0 +1,34 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
void main() {
1..{
1;
return;
};
1..{
this;
return;
};
1..{
this.isEven;
return;
};
1..{
isEven;
return;
};
1..{
return 1;
};
1..{
return this;
};
1..{
return this.isEven;
};
1..{
return isEven;
};
}
@@ -0,0 +1,114 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
let final core::int #t1 = 1 in block {
{
final synthesized core::int anonymous#this = #t1;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int #t3 = 1 in block {
{
final synthesized core::int anonymous#this = #t3;
Null #t4;
#L2:
{
anonymous#this;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int #t5 = 1 in block {
{
final synthesized core::int anonymous#this = #t5;
Null #t6;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int #t7 = 1 in block {
{
final synthesized core::int anonymous#this = #t7;
Null #t8;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t8 = null;
break #L4;
}
}
}
} =>#t7;
let final core::int #t9 = 1 in block {
{
final synthesized core::int anonymous#this = #t9;
core::int #t10;
#L5:
{
{
#t10 = 1;
break #L5;
}
}
}
} =>#t9;
let final core::int #t11 = 1 in block {
{
final synthesized core::int anonymous#this = #t11;
core::int #t12;
#L6:
{
{
#t12 = anonymous#this;
break #L6;
}
}
}
} =>#t11;
let final core::int #t13 = 1 in block {
{
final synthesized core::int anonymous#this = #t13;
core::bool #t14;
#L7:
{
{
#t14 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
}
} =>#t13;
let final core::int #t15 = 1 in block {
{
final synthesized core::int anonymous#this = #t15;
core::bool #t16;
#L8:
{
{
#t16 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
}
} =>#t15;
}
@@ -0,0 +1,114 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
let final core::int #t1 = 1 in block {
{
final synthesized core::int anonymous#this = #t1;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int #t3 = 1 in block {
{
final synthesized core::int anonymous#this = #t3;
Null #t4;
#L2:
{
anonymous#this;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int #t5 = 1 in block {
{
final synthesized core::int anonymous#this = #t5;
Null #t6;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int #t7 = 1 in block {
{
final synthesized core::int anonymous#this = #t7;
Null #t8;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t8 = null;
break #L4;
}
}
}
} =>#t7;
let final core::int #t9 = 1 in block {
{
final synthesized core::int anonymous#this = #t9;
core::int #t10;
#L5:
{
{
#t10 = 1;
break #L5;
}
}
}
} =>#t9;
let final core::int #t11 = 1 in block {
{
final synthesized core::int anonymous#this = #t11;
core::int #t12;
#L6:
{
{
#t12 = anonymous#this;
break #L6;
}
}
}
} =>#t11;
let final core::int #t13 = 1 in block {
{
final synthesized core::int anonymous#this = #t13;
core::bool #t14;
#L7:
{
{
#t14 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
}
} =>#t13;
let final core::int #t15 = 1 in block {
{
final synthesized core::int anonymous#this = #t15;
core::bool #t16;
#L8:
{
{
#t16 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
}
} =>#t15;
}
@@ -0,0 +1,5 @@
library;
import self as self;
static method main() → void
;
@@ -0,0 +1,134 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
let final core::int #t1 = 1 in block {
{
final synthesized core::int anonymous#this = #t1;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
}
} =>#t1;
let final core::int #t3 = 1 in block {
{
final synthesized core::int anonymous#this = #t3;
Null #t4;
#L2:
{
anonymous#this;
{
#t4 = null;
break #L2;
}
}
}
} =>#t3;
let final core::int #t5 = 1 in block {
{
final synthesized core::int anonymous#this = #t5;
Null #t6;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
}
} =>#t5;
let final core::int #t7 = 1 in block {
{
final synthesized core::int anonymous#this = #t7;
Null #t8;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t8 = null;
break #L4;
}
}
}
} =>#t7;
let final core::int #t9 = 1 in block {
{
final synthesized core::int anonymous#this = #t9;
core::int #t10;
#L5:
{
{
#t10 = 1;
break #L5;
}
}
}
} =>#t9;
let final core::int #t11 = 1 in block {
{
final synthesized core::int anonymous#this = #t11;
core::int #t12;
#L6:
{
{
#t12 = anonymous#this;
break #L6;
}
}
}
} =>#t11;
let final core::int #t13 = 1 in block {
{
final synthesized core::int anonymous#this = #t13;
core::bool #t14;
#L7:
{
{
#t14 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
}
} =>#t13;
let final core::int #t15 = 1 in block {
{
final synthesized core::int anonymous#this = #t15;
core::bool #t16;
#L8:
{
{
#t16 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
}
} =>#t15;
}
Extra constant evaluation status:
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:6:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:6:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:10:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:10:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:14:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:14:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:18:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:18:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:22:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:22:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:25:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:25:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:28:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:28:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:31:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_cascaded_without_parameter.dart:31:3 -> IntConstant(1)
Extra constant evaluation: evaluated: 50, effectively constant: 16
@@ -0,0 +1,34 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
void main() {
1.(int p) {
p;
return;
};
1?.(int p) {
p;
return;
};
1..(int p) {
p;
return;
};
1?..(int p) {
p;
return;
};
1.(int p) {
return p;
};
1?.(int p) {
return p;
};
1..(int p) {
return p;
};
1?..(int p) {
return p;
};
}
@@ -0,0 +1,106 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
{
core::int p = 1;
Null #t1;
#L1:
{
p;
{
#t1 = null;
break #L1;
}
}
}
let core::int #t2 = 1 in #t2 == null ?{Null} null : block {
core::int p = #t2 as core::int;
Null #t3;
#L2:
{
p;
{
#t3 = null;
break #L2;
}
}
} =>#t3;
let final core::int #t4 = 1 in block {
{
core::int p = #t4;
Null #t5;
#L3:
{
p;
{
#t5 = null;
break #L3;
}
}
}
} =>#t4;
let final core::int #t6 = 1 in #t6 == null ?{core::int} #t6 : block {
{
core::int p = #t6 as core::int;
Null #t7;
#L4:
{
p;
{
#t7 = null;
break #L4;
}
}
}
} =>#t6;
{
core::int p = 1;
core::int #t8;
#L5:
{
{
#t8 = p;
break #L5;
}
}
}
let core::int #t9 = 1 in #t9 == null ?{core::int?} null : block {
core::int p = #t9 as core::int;
core::int #t10;
#L6:
{
{
#t10 = p;
break #L6;
}
}
} =>#t10;
let final core::int #t11 = 1 in block {
{
core::int p = #t11;
core::int #t12;
#L7:
{
{
#t12 = p;
break #L7;
}
}
}
} =>#t11;
let final core::int #t13 = 1 in #t13 == null ?{core::int} #t13 : block {
{
core::int p = #t13 as core::int;
core::int #t14;
#L8:
{
{
#t14 = p;
break #L8;
}
}
}
} =>#t13;
}
@@ -0,0 +1,106 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
{
core::int p = 1;
Null #t1;
#L1:
{
p;
{
#t1 = null;
break #L1;
}
}
}
let core::int #t2 = 1 in #t2 == null ?{Null} null : block {
core::int p = #t2 as core::int;
Null #t3;
#L2:
{
p;
{
#t3 = null;
break #L2;
}
}
} =>#t3;
let final core::int #t4 = 1 in block {
{
core::int p = #t4;
Null #t5;
#L3:
{
p;
{
#t5 = null;
break #L3;
}
}
}
} =>#t4;
let final core::int #t6 = 1 in #t6 == null ?{core::int} #t6 : block {
{
core::int p = #t6 as core::int;
Null #t7;
#L4:
{
p;
{
#t7 = null;
break #L4;
}
}
}
} =>#t6;
{
core::int p = 1;
core::int #t8;
#L5:
{
{
#t8 = p;
break #L5;
}
}
}
let core::int #t9 = 1 in #t9 == null ?{core::int?} null : block {
core::int p = #t9 as core::int;
core::int #t10;
#L6:
{
{
#t10 = p;
break #L6;
}
}
} =>#t10;
let final core::int #t11 = 1 in block {
{
core::int p = #t11;
core::int #t12;
#L7:
{
{
#t12 = p;
break #L7;
}
}
}
} =>#t11;
let final core::int #t13 = 1 in #t13 == null ?{core::int} #t13 : block {
{
core::int p = #t13 as core::int;
core::int #t14;
#L8:
{
{
#t14 = p;
break #L8;
}
}
}
} =>#t13;
}
@@ -0,0 +1,5 @@
library;
import self as self;
static method main() → void
;
@@ -0,0 +1,126 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
{
core::int p = 1;
Null #t1;
#L1:
{
p;
{
#t1 = null;
break #L1;
}
}
}
let core::int #t2 = 1 in #t2 == null ?{Null} null : block {
core::int p = #t2 as{Unchecked} core::int;
Null #t3;
#L2:
{
p;
{
#t3 = null;
break #L2;
}
}
} =>#t3;
let final core::int #t4 = 1 in block {
{
core::int p = #t4;
Null #t5;
#L3:
{
p;
{
#t5 = null;
break #L3;
}
}
}
} =>#t4;
let final core::int #t6 = 1 in #t6 == null ?{core::int} #t6 : block {
{
core::int p = #t6 as{Unchecked} core::int;
Null #t7;
#L4:
{
p;
{
#t7 = null;
break #L4;
}
}
}
} =>#t6;
{
core::int p = 1;
core::int #t8;
#L5:
{
{
#t8 = p;
break #L5;
}
}
}
let core::int #t9 = 1 in #t9 == null ?{core::int?} null : block {
core::int p = #t9 as{Unchecked} core::int;
core::int #t10;
#L6:
{
{
#t10 = p;
break #L6;
}
}
} =>#t10;
let final core::int #t11 = 1 in block {
{
core::int p = #t11;
core::int #t12;
#L7:
{
{
#t12 = p;
break #L7;
}
}
}
} =>#t11;
let final core::int #t13 = 1 in #t13 == null ?{core::int} #t13 : block {
{
core::int p = #t13 as{Unchecked} core::int;
core::int #t14;
#L8:
{
{
#t14 = p;
break #L8;
}
}
}
} =>#t13;
}
Extra constant evaluation status:
Evaluated: EqualsNull @ org-dartlang-testcase:///block_explicitly_typed.dart:10:11 -> BoolConstant(false)
Evaluated: AsExpression @ org-dartlang-testcase:///block_explicitly_typed.dart:10:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_typed.dart:14:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_typed.dart:14:3 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_explicitly_typed.dart:18:3 -> BoolConstant(false)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_typed.dart:18:3 -> IntConstant(1)
Evaluated: AsExpression @ org-dartlang-testcase:///block_explicitly_typed.dart:18:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_typed.dart:18:3 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_explicitly_typed.dart:25:11 -> BoolConstant(false)
Evaluated: AsExpression @ org-dartlang-testcase:///block_explicitly_typed.dart:25:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_typed.dart:28:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_typed.dart:28:3 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_explicitly_typed.dart:31:3 -> BoolConstant(false)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_typed.dart:31:3 -> IntConstant(1)
Evaluated: AsExpression @ org-dartlang-testcase:///block_explicitly_typed.dart:31:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_typed.dart:31:3 -> IntConstant(1)
Extra constant evaluation: evaluated: 50, effectively constant: 16
@@ -0,0 +1,18 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
void test() {
1.(String p) { // Error
p;
};
1?.(String p) { // Error
p;
};
1..(String p) { // Error
p;
};
1?..(String p) { // Error
p;
};
}
@@ -0,0 +1,77 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:6:6: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1.(String p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:9:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1?.(String p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:12:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1..(String p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:15:8: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1?..(String p) { // Error
// ^
//
import self as self;
import "dart:core" as core;
static method test() → void {
{
core::String p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:6:6: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1.(String p) { // Error
^" in 1 as{TypeError} core::String;
Null #t1;
#L1:
{
p;
}
}
let core::int #t2 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:9:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1?.(String p) { // Error
^" in 1 as{TypeError} core::String in #t2 == null ?{Null} null : block {
core::String p = #t2 as core::String;
Null #t3;
#L2:
{
p;
}
} =>#t3;
let final core::int #t4 = 1 in block {
{
core::String p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:12:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1..(String p) { // Error
^" in #t4 as{TypeError} core::String;
Null #t5;
#L3:
{
p;
}
}
} =>#t4;
let final core::int #t6 = 1 in #t6 == null ?{core::int} #t6 : block {
{
core::String p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:15:8: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1?..(String p) { // Error
^" in #t6 as{TypeError} core::String as core::String;
Null #t7;
#L4:
{
p;
}
}
} =>#t6;
}
@@ -0,0 +1,77 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:6:6: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1.(String p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:9:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1?.(String p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:12:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1..(String p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:15:8: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1?..(String p) { // Error
// ^
//
import self as self;
import "dart:core" as core;
static method test() → void {
{
core::String p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:6:6: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1.(String p) { // Error
^" in 1 as{TypeError} core::String;
Null #t1;
#L1:
{
p;
}
}
let core::int #t2 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:9:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1?.(String p) { // Error
^" in 1 as{TypeError} core::String in #t2 == null ?{Null} null : block {
core::String p = #t2 as core::String;
Null #t3;
#L2:
{
p;
}
} =>#t3;
let final core::int #t4 = 1 in block {
{
core::String p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:12:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1..(String p) { // Error
^" in #t4 as{TypeError} core::String;
Null #t5;
#L3:
{
p;
}
}
} =>#t4;
let final core::int #t6 = 1 in #t6 == null ?{core::int} #t6 : block {
{
core::String p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:15:8: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1?..(String p) { // Error
^" in #t6 as{TypeError} core::String as core::String;
Null #t7;
#L4:
{
p;
}
}
} =>#t6;
}
@@ -0,0 +1,5 @@
library;
import self as self;
static method test() → void
;
@@ -0,0 +1,85 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:6:6: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1.(String p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:9:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1?.(String p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:12:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1..(String p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:15:8: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
// Try removing the parameter type, or make it a supertype of the receiver type.
// 1?..(String p) { // Error
// ^
//
import self as self;
import "dart:core" as core;
static method test() → void {
{
core::String p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:6:6: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1.(String p) { // Error
^" in 1 as{TypeError} core::String;
Null #t1;
#L1:
{
p;
}
}
let core::int #t2 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:9:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1?.(String p) { // Error
^" in 1 as{TypeError} core::String in #t2 == null ?{Null} null : block {
core::String p = #t2 as core::String;
Null #t3;
#L2:
{
p;
}
} =>#t3;
let final core::int #t4 = 1 in block {
{
core::String p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:12:7: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1..(String p) { // Error
^" in #t4 as{TypeError} core::String;
Null #t5;
#L3:
{
p;
}
}
} =>#t4;
let final core::int #t6 = 1 in #t6 == null ?{core::int} #t6 : block {
{
core::String p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_explicitly_wrongly_typed.dart:15:8: Error: The receiver type 'int' must be assignable to the formal parameter type 'String' in an anonymous method.
Try removing the parameter type, or make it a supertype of the receiver type.
1?..(String p) { // Error
^" in #t6 as{TypeError} core::String as{Unchecked} core::String;
Null #t7;
#L4:
{
p;
}
}
} =>#t6;
}
Extra constant evaluation status:
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_wrongly_typed.dart:12:3 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_explicitly_wrongly_typed.dart:15:3 -> BoolConstant(false)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_wrongly_typed.dart:15:3 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_explicitly_wrongly_typed.dart:15:3 -> IntConstant(1)
Extra constant evaluation: evaluated: 22, effectively constant: 4
@@ -0,0 +1,68 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
extension E on int {
void foo() {
1.{
this;
return;
};
1.(p) {
this;
return;
};
1?.{
this;
return;
};
1?.(p) {
this;
return;
};
1..{
this;
return;
};
1..(p) {
this;
return;
};
1?..{
this;
return;
};
1?..(p) {
this;
return;
};
1.{
return this;
};
1.(p) {
return this;
};
1?.{
return this;
};
1?.(p) {
return this;
};
1..{
return this;
};
1..(p) {
return this;
};
1?..{
return this;
};
1?..(p) {
return this;
};
}
}
void main() {
1.foo();
}
@@ -0,0 +1,215 @@
library;
import self as self;
import "dart:core" as core;
extension E on core::int {
method foo = self::E|foo;
method tearoff foo = self::E|get#foo;
}
static extension-member method E|foo(lowered final core::int #this) → void {
{
final synthesized core::int anonymous#this = 1;
Null #t1;
#L1:
{
anonymous#this;
{
#t1 = null;
break #L1;
}
}
}
{
core::int p = 1;
Null #t2;
#L2:
{
#this;
{
#t2 = null;
break #L2;
}
}
}
let core::int #t3 = 1 in #t3 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t3 as core::int;
Null #t4;
#L3:
{
anonymous#this;
{
#t4 = null;
break #L3;
}
}
} =>#t4;
let core::int #t5 = 1 in #t5 == null ?{Null} null : block {
core::int p = #t5 as core::int;
Null #t6;
#L4:
{
#this;
{
#t6 = null;
break #L4;
}
}
} =>#t6;
let final core::int #t7 = 1 in block {
{
final synthesized core::int anonymous#this = #t7;
Null #t8;
#L5:
{
anonymous#this;
{
#t8 = null;
break #L5;
}
}
}
} =>#t7;
let final core::int #t9 = 1 in block {
{
core::int p = #t9;
Null #t10;
#L6:
{
#this;
{
#t10 = null;
break #L6;
}
}
}
} =>#t9;
let final core::int #t11 = 1 in #t11 == null ?{core::int} #t11 : block {
{
final synthesized core::int anonymous#this = #t11 as core::int;
Null #t12;
#L7:
{
anonymous#this;
{
#t12 = null;
break #L7;
}
}
}
} =>#t11;
let final core::int #t13 = 1 in #t13 == null ?{core::int} #t13 : block {
{
core::int p = #t13 as core::int;
Null #t14;
#L8:
{
#this;
{
#t14 = null;
break #L8;
}
}
}
} =>#t13;
{
final synthesized core::int anonymous#this = 1;
core::int #t15;
#L9:
{
{
#t15 = anonymous#this;
break #L9;
}
}
}
{
core::int p = 1;
core::int #t16;
#L10:
{
{
#t16 = #this;
break #L10;
}
}
}
let core::int #t17 = 1 in #t17 == null ?{core::int?} null : block {
final synthesized core::int anonymous#this = #t17 as core::int;
core::int #t18;
#L11:
{
{
#t18 = anonymous#this;
break #L11;
}
}
} =>#t18;
let core::int #t19 = 1 in #t19 == null ?{core::int?} null : block {
core::int p = #t19 as core::int;
core::int #t20;
#L12:
{
{
#t20 = #this;
break #L12;
}
}
} =>#t20;
let final core::int #t21 = 1 in block {
{
final synthesized core::int anonymous#this = #t21;
core::int #t22;
#L13:
{
{
#t22 = anonymous#this;
break #L13;
}
}
}
} =>#t21;
let final core::int #t23 = 1 in block {
{
core::int p = #t23;
core::int #t24;
#L14:
{
{
#t24 = #this;
break #L14;
}
}
}
} =>#t23;
let final core::int #t25 = 1 in #t25 == null ?{core::int} #t25 : block {
{
final synthesized core::int anonymous#this = #t25 as core::int;
core::int #t26;
#L15:
{
{
#t26 = anonymous#this;
break #L15;
}
}
}
} =>#t25;
let final core::int #t27 = 1 in #t27 == null ?{core::int} #t27 : block {
{
core::int p = #t27 as core::int;
core::int #t28;
#L16:
{
{
#t28 = #this;
break #L16;
}
}
}
} =>#t27;
}
static extension-member method E|get#foo(lowered final core::int #this) → () → void
return () → void => self::E|foo(#this);
static method main() → void {
self::E|foo(1);
}
@@ -0,0 +1,215 @@
library;
import self as self;
import "dart:core" as core;
extension E on core::int {
method foo = self::E|foo;
method tearoff foo = self::E|get#foo;
}
static extension-member method E|foo(lowered final core::int #this) → void {
{
final synthesized core::int anonymous#this = 1;
Null #t1;
#L1:
{
anonymous#this;
{
#t1 = null;
break #L1;
}
}
}
{
core::int p = 1;
Null #t2;
#L2:
{
#this;
{
#t2 = null;
break #L2;
}
}
}
let core::int #t3 = 1 in #t3 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t3 as core::int;
Null #t4;
#L3:
{
anonymous#this;
{
#t4 = null;
break #L3;
}
}
} =>#t4;
let core::int #t5 = 1 in #t5 == null ?{Null} null : block {
core::int p = #t5 as core::int;
Null #t6;
#L4:
{
#this;
{
#t6 = null;
break #L4;
}
}
} =>#t6;
let final core::int #t7 = 1 in block {
{
final synthesized core::int anonymous#this = #t7;
Null #t8;
#L5:
{
anonymous#this;
{
#t8 = null;
break #L5;
}
}
}
} =>#t7;
let final core::int #t9 = 1 in block {
{
core::int p = #t9;
Null #t10;
#L6:
{
#this;
{
#t10 = null;
break #L6;
}
}
}
} =>#t9;
let final core::int #t11 = 1 in #t11 == null ?{core::int} #t11 : block {
{
final synthesized core::int anonymous#this = #t11 as core::int;
Null #t12;
#L7:
{
anonymous#this;
{
#t12 = null;
break #L7;
}
}
}
} =>#t11;
let final core::int #t13 = 1 in #t13 == null ?{core::int} #t13 : block {
{
core::int p = #t13 as core::int;
Null #t14;
#L8:
{
#this;
{
#t14 = null;
break #L8;
}
}
}
} =>#t13;
{
final synthesized core::int anonymous#this = 1;
core::int #t15;
#L9:
{
{
#t15 = anonymous#this;
break #L9;
}
}
}
{
core::int p = 1;
core::int #t16;
#L10:
{
{
#t16 = #this;
break #L10;
}
}
}
let core::int #t17 = 1 in #t17 == null ?{core::int?} null : block {
final synthesized core::int anonymous#this = #t17 as core::int;
core::int #t18;
#L11:
{
{
#t18 = anonymous#this;
break #L11;
}
}
} =>#t18;
let core::int #t19 = 1 in #t19 == null ?{core::int?} null : block {
core::int p = #t19 as core::int;
core::int #t20;
#L12:
{
{
#t20 = #this;
break #L12;
}
}
} =>#t20;
let final core::int #t21 = 1 in block {
{
final synthesized core::int anonymous#this = #t21;
core::int #t22;
#L13:
{
{
#t22 = anonymous#this;
break #L13;
}
}
}
} =>#t21;
let final core::int #t23 = 1 in block {
{
core::int p = #t23;
core::int #t24;
#L14:
{
{
#t24 = #this;
break #L14;
}
}
}
} =>#t23;
let final core::int #t25 = 1 in #t25 == null ?{core::int} #t25 : block {
{
final synthesized core::int anonymous#this = #t25 as core::int;
core::int #t26;
#L15:
{
{
#t26 = anonymous#this;
break #L15;
}
}
}
} =>#t25;
let final core::int #t27 = 1 in #t27 == null ?{core::int} #t27 : block {
{
core::int p = #t27 as core::int;
core::int #t28;
#L16:
{
{
#t28 = #this;
break #L16;
}
}
}
} =>#t27;
}
static extension-member method E|get#foo(lowered final core::int #this) → () → void
return () → void => self::E|foo(#this);
static method main() → void {
self::E|foo(1);
}
@@ -0,0 +1,14 @@
library;
import self as self;
import "dart:core" as core;
extension E on core::int {
method foo = self::E|foo;
method tearoff foo = self::E|get#foo;
}
static extension-member method E|foo(lowered final core::int #this) → void
;
static extension-member method E|get#foo(lowered final core::int #this) → () → void
return () → void => self::E|foo(#this);
static method main() → void
;
@@ -0,0 +1,251 @@
library;
import self as self;
import "dart:core" as core;
extension E on core::int {
method foo = self::E|foo;
method tearoff foo = self::E|get#foo;
}
static extension-member method E|foo(lowered final core::int #this) → void {
{
final synthesized core::int anonymous#this = 1;
Null #t1;
#L1:
{
anonymous#this;
{
#t1 = null;
break #L1;
}
}
}
{
core::int p = 1;
Null #t2;
#L2:
{
#this;
{
#t2 = null;
break #L2;
}
}
}
let core::int #t3 = 1 in #t3 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t3 as{Unchecked} core::int;
Null #t4;
#L3:
{
anonymous#this;
{
#t4 = null;
break #L3;
}
}
} =>#t4;
let core::int #t5 = 1 in #t5 == null ?{Null} null : block {
core::int p = #t5 as{Unchecked} core::int;
Null #t6;
#L4:
{
#this;
{
#t6 = null;
break #L4;
}
}
} =>#t6;
let final core::int #t7 = 1 in block {
{
final synthesized core::int anonymous#this = #t7;
Null #t8;
#L5:
{
anonymous#this;
{
#t8 = null;
break #L5;
}
}
}
} =>#t7;
let final core::int #t9 = 1 in block {
{
core::int p = #t9;
Null #t10;
#L6:
{
#this;
{
#t10 = null;
break #L6;
}
}
}
} =>#t9;
let final core::int #t11 = 1 in #t11 == null ?{core::int} #t11 : block {
{
final synthesized core::int anonymous#this = #t11 as{Unchecked} core::int;
Null #t12;
#L7:
{
anonymous#this;
{
#t12 = null;
break #L7;
}
}
}
} =>#t11;
let final core::int #t13 = 1 in #t13 == null ?{core::int} #t13 : block {
{
core::int p = #t13 as{Unchecked} core::int;
Null #t14;
#L8:
{
#this;
{
#t14 = null;
break #L8;
}
}
}
} =>#t13;
{
final synthesized core::int anonymous#this = 1;
core::int #t15;
#L9:
{
{
#t15 = anonymous#this;
break #L9;
}
}
}
{
core::int p = 1;
core::int #t16;
#L10:
{
{
#t16 = #this;
break #L10;
}
}
}
let core::int #t17 = 1 in #t17 == null ?{core::int?} null : block {
final synthesized core::int anonymous#this = #t17 as{Unchecked} core::int;
core::int #t18;
#L11:
{
{
#t18 = anonymous#this;
break #L11;
}
}
} =>#t18;
let core::int #t19 = 1 in #t19 == null ?{core::int?} null : block {
core::int p = #t19 as{Unchecked} core::int;
core::int #t20;
#L12:
{
{
#t20 = #this;
break #L12;
}
}
} =>#t20;
let final core::int #t21 = 1 in block {
{
final synthesized core::int anonymous#this = #t21;
core::int #t22;
#L13:
{
{
#t22 = anonymous#this;
break #L13;
}
}
}
} =>#t21;
let final core::int #t23 = 1 in block {
{
core::int p = #t23;
core::int #t24;
#L14:
{
{
#t24 = #this;
break #L14;
}
}
}
} =>#t23;
let final core::int #t25 = 1 in #t25 == null ?{core::int} #t25 : block {
{
final synthesized core::int anonymous#this = #t25 as{Unchecked} core::int;
core::int #t26;
#L15:
{
{
#t26 = anonymous#this;
break #L15;
}
}
}
} =>#t25;
let final core::int #t27 = 1 in #t27 == null ?{core::int} #t27 : block {
{
core::int p = #t27 as{Unchecked} core::int;
core::int #t28;
#L16:
{
{
#t28 = #this;
break #L16;
}
}
}
} =>#t27;
}
static extension-member method E|get#foo(lowered final core::int #this) → () → void
return () → void => self::E|foo(#this);
static method main() → void {
self::E|foo(1);
}
Extra constant evaluation status:
Evaluated: EqualsNull @ org-dartlang-testcase:///block_extension_method.dart:15:6 -> BoolConstant(false)
Evaluated: AsExpression @ org-dartlang-testcase:///block_extension_method.dart:15:5 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_extension_method.dart:19:9 -> BoolConstant(false)
Evaluated: AsExpression @ org-dartlang-testcase:///block_extension_method.dart:19:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:23:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:23:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:27:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:27:5 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_extension_method.dart:31:5 -> BoolConstant(false)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:31:5 -> IntConstant(1)
Evaluated: AsExpression @ org-dartlang-testcase:///block_extension_method.dart:31:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:31:5 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_extension_method.dart:35:5 -> BoolConstant(false)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:35:5 -> IntConstant(1)
Evaluated: AsExpression @ org-dartlang-testcase:///block_extension_method.dart:35:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:35:5 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_extension_method.dart:45:6 -> BoolConstant(false)
Evaluated: AsExpression @ org-dartlang-testcase:///block_extension_method.dart:45:5 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_extension_method.dart:48:9 -> BoolConstant(false)
Evaluated: AsExpression @ org-dartlang-testcase:///block_extension_method.dart:48:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:51:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:51:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:54:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:54:5 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_extension_method.dart:57:5 -> BoolConstant(false)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:57:5 -> IntConstant(1)
Evaluated: AsExpression @ org-dartlang-testcase:///block_extension_method.dart:57:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:57:5 -> IntConstant(1)
Evaluated: EqualsNull @ org-dartlang-testcase:///block_extension_method.dart:60:5 -> BoolConstant(false)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:60:5 -> IntConstant(1)
Evaluated: AsExpression @ org-dartlang-testcase:///block_extension_method.dart:60:5 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///block_extension_method.dart:60:5 -> IntConstant(1)
Extra constant evaluation: evaluated: 104, effectively constant: 32
@@ -0,0 +1,5 @@
extension E on int {
void foo() {}
}
void main() {}
@@ -0,0 +1,5 @@
extension E on int {
void foo() {}
}
void main() {}
@@ -0,0 +1,29 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
int? i = null;
void main() {
i?.(p) {
1;
return;
};
i?.(p) {
p;
return;
};
i?.(p) {
p.isEven;
return;
};
i?.(p) {
return 1;
};
i?.(p) {
return p;
};
i?.(p) {
return p.isEven;
};
}
@@ -0,0 +1,76 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let core::int? #t1 = self::i in #t1 == null ?{Null} null : block {
core::int p = #t1 as core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
} =>#t2;
let core::int? #t3 = self::i in #t3 == null ?{Null} null : block {
core::int p = #t3 as core::int;
Null #t4;
#L2:
{
p;
{
#t4 = null;
break #L2;
}
}
} =>#t4;
let core::int? #t5 = self::i in #t5 == null ?{Null} null : block {
core::int p = #t5 as core::int;
Null #t6;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
} =>#t6;
let core::int? #t7 = self::i in #t7 == null ?{core::int?} null : block {
core::int p = #t7 as core::int;
core::int #t8;
#L4:
{
{
#t8 = 1;
break #L4;
}
}
} =>#t8;
let core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
core::int p = #t9 as core::int;
core::int #t10;
#L5:
{
{
#t10 = p;
break #L5;
}
}
} =>#t10;
let core::int? #t11 = self::i in #t11 == null ?{core::bool?} null : block {
core::int p = #t11 as core::int;
core::bool #t12;
#L6:
{
{
#t12 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
} =>#t12;
}
@@ -0,0 +1,76 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let core::int? #t1 = self::i in #t1 == null ?{Null} null : block {
core::int p = #t1 as core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
} =>#t2;
let core::int? #t3 = self::i in #t3 == null ?{Null} null : block {
core::int p = #t3 as core::int;
Null #t4;
#L2:
{
p;
{
#t4 = null;
break #L2;
}
}
} =>#t4;
let core::int? #t5 = self::i in #t5 == null ?{Null} null : block {
core::int p = #t5 as core::int;
Null #t6;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
} =>#t6;
let core::int? #t7 = self::i in #t7 == null ?{core::int?} null : block {
core::int p = #t7 as core::int;
core::int #t8;
#L4:
{
{
#t8 = 1;
break #L4;
}
}
} =>#t8;
let core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
core::int p = #t9 as core::int;
core::int #t10;
#L5:
{
{
#t10 = p;
break #L5;
}
}
} =>#t10;
let core::int? #t11 = self::i in #t11 == null ?{core::bool?} null : block {
core::int p = #t11 as core::int;
core::bool #t12;
#L6:
{
{
#t12 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
} =>#t12;
}
@@ -0,0 +1,7 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i;
static method main() → void
;
@@ -0,0 +1,76 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let core::int? #t1 = self::i in #t1 == null ?{Null} null : block {
core::int p = let core::int? #t2 = #t1 in #t2 == null ?{core::int} #t2 as core::int : #t2{core::int};
Null #t3;
#L1:
{
1;
{
#t3 = null;
break #L1;
}
}
} =>#t3;
let core::int? #t4 = self::i in #t4 == null ?{Null} null : block {
core::int p = let core::int? #t5 = #t4 in #t5 == null ?{core::int} #t5 as core::int : #t5{core::int};
Null #t6;
#L2:
{
p;
{
#t6 = null;
break #L2;
}
}
} =>#t6;
let core::int? #t7 = self::i in #t7 == null ?{Null} null : block {
core::int p = let core::int? #t8 = #t7 in #t8 == null ?{core::int} #t8 as core::int : #t8{core::int};
Null #t9;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t9 = null;
break #L3;
}
}
} =>#t9;
let core::int? #t10 = self::i in #t10 == null ?{core::int?} null : block {
core::int p = let core::int? #t11 = #t10 in #t11 == null ?{core::int} #t11 as core::int : #t11{core::int};
core::int #t12;
#L4:
{
{
#t12 = 1;
break #L4;
}
}
} =>#t12;
let core::int? #t13 = self::i in #t13 == null ?{core::int?} null : block {
core::int p = let core::int? #t14 = #t13 in #t14 == null ?{core::int} #t14 as core::int : #t14{core::int};
core::int #t15;
#L5:
{
{
#t15 = p;
break #L5;
}
}
} =>#t15;
let core::int? #t16 = self::i in #t16 == null ?{core::bool?} null : block {
core::int p = let core::int? #t17 = #t16 in #t17 == null ?{core::int} #t17 as core::int : #t17{core::int};
core::bool #t18;
#L6:
{
{
#t18 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
} =>#t18;
}
@@ -0,0 +1,36 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
int? i = null;
void main() {
i?.{
1;
return;
};
i?.{
this;
return;
};
i?.{
this.isEven;
return;
};
i?.{
isEven;
return;
};
i?.{
return 1;
};
i?.{
return this;
};
i?.{
return this.isEven;
};
i?.{
return isEven;
};
}
@@ -0,0 +1,99 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let core::int? #t1 = self::i in #t1 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t1 as core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
} =>#t2;
let core::int? #t3 = self::i in #t3 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t3 as core::int;
Null #t4;
#L2:
{
anonymous#this;
{
#t4 = null;
break #L2;
}
}
} =>#t4;
let core::int? #t5 = self::i in #t5 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t5 as core::int;
Null #t6;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
} =>#t6;
let core::int? #t7 = self::i in #t7 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t7 as core::int;
Null #t8;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t8 = null;
break #L4;
}
}
} =>#t8;
let core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
final synthesized core::int anonymous#this = #t9 as core::int;
core::int #t10;
#L5:
{
{
#t10 = 1;
break #L5;
}
}
} =>#t10;
let core::int? #t11 = self::i in #t11 == null ?{core::int?} null : block {
final synthesized core::int anonymous#this = #t11 as core::int;
core::int #t12;
#L6:
{
{
#t12 = anonymous#this;
break #L6;
}
}
} =>#t12;
let core::int? #t13 = self::i in #t13 == null ?{core::bool?} null : block {
final synthesized core::int anonymous#this = #t13 as core::int;
core::bool #t14;
#L7:
{
{
#t14 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
} =>#t14;
let core::int? #t15 = self::i in #t15 == null ?{core::bool?} null : block {
final synthesized core::int anonymous#this = #t15 as core::int;
core::bool #t16;
#L8:
{
{
#t16 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
} =>#t16;
}
@@ -0,0 +1,99 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let core::int? #t1 = self::i in #t1 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t1 as core::int;
Null #t2;
#L1:
{
1;
{
#t2 = null;
break #L1;
}
}
} =>#t2;
let core::int? #t3 = self::i in #t3 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t3 as core::int;
Null #t4;
#L2:
{
anonymous#this;
{
#t4 = null;
break #L2;
}
}
} =>#t4;
let core::int? #t5 = self::i in #t5 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t5 as core::int;
Null #t6;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t6 = null;
break #L3;
}
}
} =>#t6;
let core::int? #t7 = self::i in #t7 == null ?{Null} null : block {
final synthesized core::int anonymous#this = #t7 as core::int;
Null #t8;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t8 = null;
break #L4;
}
}
} =>#t8;
let core::int? #t9 = self::i in #t9 == null ?{core::int?} null : block {
final synthesized core::int anonymous#this = #t9 as core::int;
core::int #t10;
#L5:
{
{
#t10 = 1;
break #L5;
}
}
} =>#t10;
let core::int? #t11 = self::i in #t11 == null ?{core::int?} null : block {
final synthesized core::int anonymous#this = #t11 as core::int;
core::int #t12;
#L6:
{
{
#t12 = anonymous#this;
break #L6;
}
}
} =>#t12;
let core::int? #t13 = self::i in #t13 == null ?{core::bool?} null : block {
final synthesized core::int anonymous#this = #t13 as core::int;
core::bool #t14;
#L7:
{
{
#t14 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
} =>#t14;
let core::int? #t15 = self::i in #t15 == null ?{core::bool?} null : block {
final synthesized core::int anonymous#this = #t15 as core::int;
core::bool #t16;
#L8:
{
{
#t16 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
} =>#t16;
}
@@ -0,0 +1,7 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i;
static method main() → void
;
@@ -0,0 +1,99 @@
library;
import self as self;
import "dart:core" as core;
static field core::int? i = null;
static method main() → void {
let core::int? #t1 = self::i in #t1 == null ?{Null} null : block {
final synthesized core::int anonymous#this = let core::int? #t2 = #t1 in #t2 == null ?{core::int} #t2 as core::int : #t2{core::int};
Null #t3;
#L1:
{
1;
{
#t3 = null;
break #L1;
}
}
} =>#t3;
let core::int? #t4 = self::i in #t4 == null ?{Null} null : block {
final synthesized core::int anonymous#this = let core::int? #t5 = #t4 in #t5 == null ?{core::int} #t5 as core::int : #t5{core::int};
Null #t6;
#L2:
{
anonymous#this;
{
#t6 = null;
break #L2;
}
}
} =>#t6;
let core::int? #t7 = self::i in #t7 == null ?{Null} null : block {
final synthesized core::int anonymous#this = let core::int? #t8 = #t7 in #t8 == null ?{core::int} #t8 as core::int : #t8{core::int};
Null #t9;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t9 = null;
break #L3;
}
}
} =>#t9;
let core::int? #t10 = self::i in #t10 == null ?{Null} null : block {
final synthesized core::int anonymous#this = let core::int? #t11 = #t10 in #t11 == null ?{core::int} #t11 as core::int : #t11{core::int};
Null #t12;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t12 = null;
break #L4;
}
}
} =>#t12;
let core::int? #t13 = self::i in #t13 == null ?{core::int?} null : block {
final synthesized core::int anonymous#this = let core::int? #t14 = #t13 in #t14 == null ?{core::int} #t14 as core::int : #t14{core::int};
core::int #t15;
#L5:
{
{
#t15 = 1;
break #L5;
}
}
} =>#t15;
let core::int? #t16 = self::i in #t16 == null ?{core::int?} null : block {
final synthesized core::int anonymous#this = let core::int? #t17 = #t16 in #t17 == null ?{core::int} #t17 as core::int : #t17{core::int};
core::int #t18;
#L6:
{
{
#t18 = anonymous#this;
break #L6;
}
}
} =>#t18;
let core::int? #t19 = self::i in #t19 == null ?{core::bool?} null : block {
final synthesized core::int anonymous#this = let core::int? #t20 = #t19 in #t20 == null ?{core::int} #t20 as core::int : #t20{core::int};
core::bool #t21;
#L7:
{
{
#t21 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
} =>#t21;
let core::int? #t22 = self::i in #t22 == null ?{core::bool?} null : block {
final synthesized core::int anonymous#this = let core::int? #t23 = #t22 in #t23 == null ?{core::int} #t23 as core::int : #t23{core::int};
core::bool #t24;
#L8:
{
{
#t24 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
} =>#t24;
}
@@ -0,0 +1,28 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
int f() => 5;
class A {
final int x;
A.n1() : x = 42.{
return this;
};
A.n2() : x = 'abc'.{
return this.length;
};
A.n3() : x = f.{
return this();
};
A.n4() : x = 'def'.{
return this.toString().length;
};
}
void main() {
A.n1();
A.n2();
A.n3();
A.n4();
}
@@ -0,0 +1,71 @@
library;
import self as self;
import "dart:core" as core;
class A extends core::Object {
final field core::int x;
constructor n1() → self::A
: self::A::x = block {
final synthesized core::int anonymous#this = 42;
core::int #t1;
#L1:
{
{
#t1 = anonymous#this;
break #L1;
}
}
} =>#t1, super core::Object::•()
;
constructor n2() → self::A
: self::A::x = block {
final synthesized core::String anonymous#this = "abc";
core::int #t2;
#L2:
{
{
#t2 = anonymous#this.{core::String::length}{core::int};
break #L2;
}
}
} =>#t2, super core::Object::•()
;
constructor n3() → self::A
: self::A::x = block {
final synthesized () → core::int anonymous#this = #C1;
core::int #t3;
#L3:
{
{
#t3 = anonymous#this(){() → core::int};
break #L3;
}
}
} =>#t3, super core::Object::•()
;
constructor n4() → self::A
: self::A::x = block {
final synthesized core::String anonymous#this = "def";
core::int #t4;
#L4:
{
{
#t4 = anonymous#this.{core::Object::toString}(){() → core::String}.{core::String::length}{core::int};
break #L4;
}
}
} =>#t4, super core::Object::•()
;
}
static method f() → core::int
return 5;
static method main() → void {
new self::A::n1();
new self::A::n2();
new self::A::n3();
new self::A::n4();
}
constants {
#C1 = static-tearoff self::f
}
@@ -0,0 +1,71 @@
library;
import self as self;
import "dart:core" as core;
class A extends core::Object {
final field core::int x;
constructor n1() → self::A
: self::A::x = block {
final synthesized core::int anonymous#this = 42;
core::int #t1;
#L1:
{
{
#t1 = anonymous#this;
break #L1;
}
}
} =>#t1, super core::Object::•()
;
constructor n2() → self::A
: self::A::x = block {
final synthesized core::String anonymous#this = "abc";
core::int #t2;
#L2:
{
{
#t2 = anonymous#this.{core::String::length}{core::int};
break #L2;
}
}
} =>#t2, super core::Object::•()
;
constructor n3() → self::A
: self::A::x = block {
final synthesized () → core::int anonymous#this = #C1;
core::int #t3;
#L3:
{
{
#t3 = anonymous#this(){() → core::int};
break #L3;
}
}
} =>#t3, super core::Object::•()
;
constructor n4() → self::A
: self::A::x = block {
final synthesized core::String anonymous#this = "def";
core::int #t4;
#L4:
{
{
#t4 = anonymous#this.{core::Object::toString}(){() → core::String}.{core::String::length}{core::int};
break #L4;
}
}
} =>#t4, super core::Object::•()
;
}
static method f() → core::int
return 5;
static method main() → void {
new self::A::n1();
new self::A::n2();
new self::A::n3();
new self::A::n4();
}
constants {
#C1 = static-tearoff self::f
}
@@ -0,0 +1,19 @@
library;
import self as self;
import "dart:core" as core;
class A extends core::Object {
final field core::int x;
constructor n1() → self::A
;
constructor n2() → self::A
;
constructor n3() → self::A
;
constructor n4() → self::A
;
}
static method f() → core::int
;
static method main() → void
;
@@ -0,0 +1,71 @@
library;
import self as self;
import "dart:core" as core;
class A extends core::Object {
final field core::int x;
constructor n1() → self::A
: self::A::x = block {
final synthesized core::int anonymous#this = 42;
core::int #t1;
#L1:
{
{
#t1 = anonymous#this;
break #L1;
}
}
} =>#t1, super core::Object::•()
;
constructor n2() → self::A
: self::A::x = block {
final synthesized core::String anonymous#this = "abc";
core::int #t2;
#L2:
{
{
#t2 = anonymous#this.{core::String::length}{core::int};
break #L2;
}
}
} =>#t2, super core::Object::•()
;
constructor n3() → self::A
: self::A::x = block {
final synthesized () → core::int anonymous#this = #C1;
core::int #t3;
#L3:
{
{
#t3 = anonymous#this(){() → core::int};
break #L3;
}
}
} =>#t3, super core::Object::•()
;
constructor n4() → self::A
: self::A::x = block {
final synthesized core::String anonymous#this = "def";
core::int #t4;
#L4:
{
{
#t4 = anonymous#this.{core::Object::toString}(){() → core::String}.{core::String::length}{core::int};
break #L4;
}
}
} =>#t4, super core::Object::•()
;
}
static method f() → core::int
return 5;
static method main() → void {
new self::A::n1();
new self::A::n2();
new self::A::n3();
new self::A::n4();
}
constants {
#C1 = static-tearoff self::f
}
@@ -0,0 +1,11 @@
int f() => 5;
class A {
final int x;
A.n1() : x = 42.{ return this; };
A.n2() : x = 'abc'.{ return this.length; };
A.n3() : x = f.{ return this(); };
A.n4() : x = 'def'.{ return this.toString().length; };
}
void main() {}
@@ -0,0 +1,11 @@
class A {
A.n1() : x = 42.{ return this; };
A.n2() : x = 'abc'.{ return this.length; };
A.n3() : x = f.{ return this(); };
A.n4() : x = 'def'.{ return this.toString().length; };
final int x;
}
int f() => 5;
void main() {}
@@ -0,0 +1,64 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
void v = null;
void test() {
v.{ // Error
1;
return;
};
v.(p) { // Error
1;
return;
};
v?.{ // Error
1;
return;
};
v?.(p) { // Error
1;
return;
};
v..{ // Error
1;
return;
};
v..(p) { // Error
1;
return;
};
v?..{ // Error
1;
return;
};
v?..(p) { // Error
1;
return;
};
v.{ // Error
return 1;
};
v.(p) { // Error
return 1;
};
v?.{ // Error
return 1;
};
v?.(p) { // Error
return 1;
};
v..{ // Error
return 1;
};
v..(p) { // Error
return 1;
};
v?..{ // Error
return 1;
};
v?..(p) { // Error
return 1;
};
}
@@ -0,0 +1,306 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
// v.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
// v.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:16:3: Error: This expression has type 'void' and can't be used.
// v?.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:20:3: Error: This expression has type 'void' and can't be used.
// v?.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:24:3: Error: This expression has type 'void' and can't be used.
// v..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:28:3: Error: This expression has type 'void' and can't be used.
// v..(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:32:3: Error: This expression has type 'void' and can't be used.
// v?..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:36:3: Error: This expression has type 'void' and can't be used.
// v?..(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:40:3: Error: This expression has type 'void' and can't be used.
// v.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:43:3: Error: This expression has type 'void' and can't be used.
// v.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:46:3: Error: This expression has type 'void' and can't be used.
// v?.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:49:3: Error: This expression has type 'void' and can't be used.
// v?.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:52:3: Error: This expression has type 'void' and can't be used.
// v..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:55:3: Error: This expression has type 'void' and can't be used.
// v..(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:58:3: Error: This expression has type 'void' and can't be used.
// v?..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:61:3: Error: This expression has type 'void' and can't be used.
// v?..(p) { // Error
// ^
//
import self as self;
import "dart:core" as core;
static field void v = null;
static method test() → void {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
v.{ // Error
^" in self::v;
Null #t1;
#L1:
{
1;
{
#t1 = null;
break #L1;
}
}
}
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
v.(p) { // Error
^" in self::v;
Null #t2;
#L2:
{
1;
{
#t2 = null;
break #L2;
}
}
}
let void #t3 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:16:3: Error: This expression has type 'void' and can't be used.
v?.{ // Error
^" in self::v in #t3 == null ?{Null} null : block {
final synthesized void anonymous#this = #t3 as void;
Null #t4;
#L3:
{
1;
{
#t4 = null;
break #L3;
}
}
} =>#t4;
let void #t5 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:20:3: Error: This expression has type 'void' and can't be used.
v?.(p) { // Error
^" in self::v in #t5 == null ?{Null} null : block {
void p = #t5 as void;
Null #t6;
#L4:
{
1;
{
#t6 = null;
break #L4;
}
}
} =>#t6;
let final void #t7 = self::v in block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:24:3: Error: This expression has type 'void' and can't be used.
v..{ // Error
^" in #t7;
Null #t8;
#L5:
{
1;
{
#t8 = null;
break #L5;
}
}
}
} =>#t7;
let final void #t9 = self::v in block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:28:3: Error: This expression has type 'void' and can't be used.
v..(p) { // Error
^" in #t9;
Null #t10;
#L6:
{
1;
{
#t10 = null;
break #L6;
}
}
}
} =>#t9;
let final void #t11 = self::v in #t11 == null ?{void} null : block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:32:3: Error: This expression has type 'void' and can't be used.
v?..{ // Error
^" in #t11 as void;
Null #t12;
#L7:
{
1;
{
#t12 = null;
break #L7;
}
}
}
} =>#t11;
let final void #t13 = self::v in #t13 == null ?{void} null : block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:36:3: Error: This expression has type 'void' and can't be used.
v?..(p) { // Error
^" in #t13 as void;
Null #t14;
#L8:
{
1;
{
#t14 = null;
break #L8;
}
}
}
} =>#t13;
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:40:3: Error: This expression has type 'void' and can't be used.
v.{ // Error
^" in self::v;
core::int #t15;
#L9:
{
{
#t15 = 1;
break #L9;
}
}
}
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:43:3: Error: This expression has type 'void' and can't be used.
v.(p) { // Error
^" in self::v;
core::int #t16;
#L10:
{
{
#t16 = 1;
break #L10;
}
}
}
let void #t17 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:46:3: Error: This expression has type 'void' and can't be used.
v?.{ // Error
^" in self::v in #t17 == null ?{core::int?} null : block {
final synthesized void anonymous#this = #t17 as void;
core::int #t18;
#L11:
{
{
#t18 = 1;
break #L11;
}
}
} =>#t18;
let void #t19 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:49:3: Error: This expression has type 'void' and can't be used.
v?.(p) { // Error
^" in self::v in #t19 == null ?{core::int?} null : block {
void p = #t19 as void;
core::int #t20;
#L12:
{
{
#t20 = 1;
break #L12;
}
}
} =>#t20;
let final void #t21 = self::v in block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:52:3: Error: This expression has type 'void' and can't be used.
v..{ // Error
^" in #t21;
core::int #t22;
#L13:
{
{
#t22 = 1;
break #L13;
}
}
}
} =>#t21;
let final void #t23 = self::v in block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:55:3: Error: This expression has type 'void' and can't be used.
v..(p) { // Error
^" in #t23;
core::int #t24;
#L14:
{
{
#t24 = 1;
break #L14;
}
}
}
} =>#t23;
let final void #t25 = self::v in #t25 == null ?{void} null : block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:58:3: Error: This expression has type 'void' and can't be used.
v?..{ // Error
^" in #t25 as void;
core::int #t26;
#L15:
{
{
#t26 = 1;
break #L15;
}
}
}
} =>#t25;
let final void #t27 = self::v in #t27 == null ?{void} null : block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:61:3: Error: This expression has type 'void' and can't be used.
v?..(p) { // Error
^" in #t27 as void;
core::int #t28;
#L16:
{
{
#t28 = 1;
break #L16;
}
}
}
} =>#t27;
}
@@ -0,0 +1,306 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
// v.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
// v.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:16:3: Error: This expression has type 'void' and can't be used.
// v?.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:20:3: Error: This expression has type 'void' and can't be used.
// v?.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:24:3: Error: This expression has type 'void' and can't be used.
// v..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:28:3: Error: This expression has type 'void' and can't be used.
// v..(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:32:3: Error: This expression has type 'void' and can't be used.
// v?..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:36:3: Error: This expression has type 'void' and can't be used.
// v?..(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:40:3: Error: This expression has type 'void' and can't be used.
// v.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:43:3: Error: This expression has type 'void' and can't be used.
// v.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:46:3: Error: This expression has type 'void' and can't be used.
// v?.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:49:3: Error: This expression has type 'void' and can't be used.
// v?.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:52:3: Error: This expression has type 'void' and can't be used.
// v..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:55:3: Error: This expression has type 'void' and can't be used.
// v..(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:58:3: Error: This expression has type 'void' and can't be used.
// v?..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:61:3: Error: This expression has type 'void' and can't be used.
// v?..(p) { // Error
// ^
//
import self as self;
import "dart:core" as core;
static field void v = null;
static method test() → void {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
v.{ // Error
^" in self::v;
Null #t1;
#L1:
{
1;
{
#t1 = null;
break #L1;
}
}
}
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
v.(p) { // Error
^" in self::v;
Null #t2;
#L2:
{
1;
{
#t2 = null;
break #L2;
}
}
}
let void #t3 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:16:3: Error: This expression has type 'void' and can't be used.
v?.{ // Error
^" in self::v in #t3 == null ?{Null} null : block {
final synthesized void anonymous#this = #t3 as void;
Null #t4;
#L3:
{
1;
{
#t4 = null;
break #L3;
}
}
} =>#t4;
let void #t5 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:20:3: Error: This expression has type 'void' and can't be used.
v?.(p) { // Error
^" in self::v in #t5 == null ?{Null} null : block {
void p = #t5 as void;
Null #t6;
#L4:
{
1;
{
#t6 = null;
break #L4;
}
}
} =>#t6;
let final void #t7 = self::v in block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:24:3: Error: This expression has type 'void' and can't be used.
v..{ // Error
^" in #t7;
Null #t8;
#L5:
{
1;
{
#t8 = null;
break #L5;
}
}
}
} =>#t7;
let final void #t9 = self::v in block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:28:3: Error: This expression has type 'void' and can't be used.
v..(p) { // Error
^" in #t9;
Null #t10;
#L6:
{
1;
{
#t10 = null;
break #L6;
}
}
}
} =>#t9;
let final void #t11 = self::v in #t11 == null ?{void} null : block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:32:3: Error: This expression has type 'void' and can't be used.
v?..{ // Error
^" in #t11 as void;
Null #t12;
#L7:
{
1;
{
#t12 = null;
break #L7;
}
}
}
} =>#t11;
let final void #t13 = self::v in #t13 == null ?{void} null : block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:36:3: Error: This expression has type 'void' and can't be used.
v?..(p) { // Error
^" in #t13 as void;
Null #t14;
#L8:
{
1;
{
#t14 = null;
break #L8;
}
}
}
} =>#t13;
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:40:3: Error: This expression has type 'void' and can't be used.
v.{ // Error
^" in self::v;
core::int #t15;
#L9:
{
{
#t15 = 1;
break #L9;
}
}
}
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:43:3: Error: This expression has type 'void' and can't be used.
v.(p) { // Error
^" in self::v;
core::int #t16;
#L10:
{
{
#t16 = 1;
break #L10;
}
}
}
let void #t17 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:46:3: Error: This expression has type 'void' and can't be used.
v?.{ // Error
^" in self::v in #t17 == null ?{core::int?} null : block {
final synthesized void anonymous#this = #t17 as void;
core::int #t18;
#L11:
{
{
#t18 = 1;
break #L11;
}
}
} =>#t18;
let void #t19 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:49:3: Error: This expression has type 'void' and can't be used.
v?.(p) { // Error
^" in self::v in #t19 == null ?{core::int?} null : block {
void p = #t19 as void;
core::int #t20;
#L12:
{
{
#t20 = 1;
break #L12;
}
}
} =>#t20;
let final void #t21 = self::v in block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:52:3: Error: This expression has type 'void' and can't be used.
v..{ // Error
^" in #t21;
core::int #t22;
#L13:
{
{
#t22 = 1;
break #L13;
}
}
}
} =>#t21;
let final void #t23 = self::v in block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:55:3: Error: This expression has type 'void' and can't be used.
v..(p) { // Error
^" in #t23;
core::int #t24;
#L14:
{
{
#t24 = 1;
break #L14;
}
}
}
} =>#t23;
let final void #t25 = self::v in #t25 == null ?{void} null : block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:58:3: Error: This expression has type 'void' and can't be used.
v?..{ // Error
^" in #t25 as void;
core::int #t26;
#L15:
{
{
#t26 = 1;
break #L15;
}
}
}
} =>#t25;
let final void #t27 = self::v in #t27 == null ?{void} null : block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:61:3: Error: This expression has type 'void' and can't be used.
v?..(p) { // Error
^" in #t27 as void;
core::int #t28;
#L16:
{
{
#t28 = 1;
break #L16;
}
}
}
} =>#t27;
}
@@ -0,0 +1,6 @@
library;
import self as self;
static field void v;
static method test() → void
;
@@ -0,0 +1,306 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
// v.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
// v.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:16:3: Error: This expression has type 'void' and can't be used.
// v?.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:20:3: Error: This expression has type 'void' and can't be used.
// v?.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:24:3: Error: This expression has type 'void' and can't be used.
// v..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:28:3: Error: This expression has type 'void' and can't be used.
// v..(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:32:3: Error: This expression has type 'void' and can't be used.
// v?..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:36:3: Error: This expression has type 'void' and can't be used.
// v?..(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:40:3: Error: This expression has type 'void' and can't be used.
// v.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:43:3: Error: This expression has type 'void' and can't be used.
// v.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:46:3: Error: This expression has type 'void' and can't be used.
// v?.{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:49:3: Error: This expression has type 'void' and can't be used.
// v?.(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:52:3: Error: This expression has type 'void' and can't be used.
// v..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:55:3: Error: This expression has type 'void' and can't be used.
// v..(p) { // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:58:3: Error: This expression has type 'void' and can't be used.
// v?..{ // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:61:3: Error: This expression has type 'void' and can't be used.
// v?..(p) { // Error
// ^
//
import self as self;
import "dart:core" as core;
static field void v = null;
static method test() → void {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
v.{ // Error
^" in self::v;
Null #t1;
#L1:
{
1;
{
#t1 = null;
break #L1;
}
}
}
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
v.(p) { // Error
^" in self::v;
Null #t2;
#L2:
{
1;
{
#t2 = null;
break #L2;
}
}
}
let void #t3 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:16:3: Error: This expression has type 'void' and can't be used.
v?.{ // Error
^" in self::v in #t3 == null ?{Null} null : block {
final synthesized void anonymous#this = #t3 as{Unchecked} void;
Null #t4;
#L3:
{
1;
{
#t4 = null;
break #L3;
}
}
} =>#t4;
let void #t5 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:20:3: Error: This expression has type 'void' and can't be used.
v?.(p) { // Error
^" in self::v in #t5 == null ?{Null} null : block {
void p = #t5 as{Unchecked} void;
Null #t6;
#L4:
{
1;
{
#t6 = null;
break #L4;
}
}
} =>#t6;
let final void #t7 = self::v in block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:24:3: Error: This expression has type 'void' and can't be used.
v..{ // Error
^" in #t7;
Null #t8;
#L5:
{
1;
{
#t8 = null;
break #L5;
}
}
}
} =>#t7;
let final void #t9 = self::v in block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:28:3: Error: This expression has type 'void' and can't be used.
v..(p) { // Error
^" in #t9;
Null #t10;
#L6:
{
1;
{
#t10 = null;
break #L6;
}
}
}
} =>#t9;
let final void #t11 = self::v in #t11 == null ?{void} null : block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:32:3: Error: This expression has type 'void' and can't be used.
v?..{ // Error
^" in #t11 as{Unchecked} void;
Null #t12;
#L7:
{
1;
{
#t12 = null;
break #L7;
}
}
}
} =>#t11;
let final void #t13 = self::v in #t13 == null ?{void} null : block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:36:3: Error: This expression has type 'void' and can't be used.
v?..(p) { // Error
^" in #t13 as{Unchecked} void;
Null #t14;
#L8:
{
1;
{
#t14 = null;
break #L8;
}
}
}
} =>#t13;
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:40:3: Error: This expression has type 'void' and can't be used.
v.{ // Error
^" in self::v;
core::int #t15;
#L9:
{
{
#t15 = 1;
break #L9;
}
}
}
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:43:3: Error: This expression has type 'void' and can't be used.
v.(p) { // Error
^" in self::v;
core::int #t16;
#L10:
{
{
#t16 = 1;
break #L10;
}
}
}
let void #t17 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:46:3: Error: This expression has type 'void' and can't be used.
v?.{ // Error
^" in self::v in #t17 == null ?{core::int?} null : block {
final synthesized void anonymous#this = #t17 as{Unchecked} void;
core::int #t18;
#L11:
{
{
#t18 = 1;
break #L11;
}
}
} =>#t18;
let void #t19 = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:49:3: Error: This expression has type 'void' and can't be used.
v?.(p) { // Error
^" in self::v in #t19 == null ?{core::int?} null : block {
void p = #t19 as{Unchecked} void;
core::int #t20;
#L12:
{
{
#t20 = 1;
break #L12;
}
}
} =>#t20;
let final void #t21 = self::v in block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:52:3: Error: This expression has type 'void' and can't be used.
v..{ // Error
^" in #t21;
core::int #t22;
#L13:
{
{
#t22 = 1;
break #L13;
}
}
}
} =>#t21;
let final void #t23 = self::v in block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:55:3: Error: This expression has type 'void' and can't be used.
v..(p) { // Error
^" in #t23;
core::int #t24;
#L14:
{
{
#t24 = 1;
break #L14;
}
}
}
} =>#t23;
let final void #t25 = self::v in #t25 == null ?{void} null : block {
{
final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:58:3: Error: This expression has type 'void' and can't be used.
v?..{ // Error
^" in #t25 as{Unchecked} void;
core::int #t26;
#L15:
{
{
#t26 = 1;
break #L15;
}
}
}
} =>#t25;
let final void #t27 = self::v in #t27 == null ?{void} null : block {
{
void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/block_void_receiver.dart:61:3: Error: This expression has type 'void' and can't be used.
v?..(p) { // Error
^" in #t27 as{Unchecked} void;
core::int #t28;
#L16:
{
{
#t28 = 1;
break #L16;
}
}
}
} =>#t27;
}
@@ -0,0 +1,3 @@
void v = null;
void test() {}
@@ -0,0 +1,3 @@
void test() {}
void v = null;
@@ -0,0 +1,27 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
void main() {
1.(p) {
1;
return;
};
1.(p) {
p;
return;
};
1.(p) {
p.isEven;
return;
};
1.(p) {
return 1;
};
1.(p) {
return p;
};
1.(p) {
return p.isEven;
};
}
@@ -0,0 +1,75 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
{
core::int p = 1;
Null #t1;
#L1:
{
1;
{
#t1 = null;
break #L1;
}
}
}
{
core::int p = 1;
Null #t2;
#L2:
{
p;
{
#t2 = null;
break #L2;
}
}
}
{
core::int p = 1;
Null #t3;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t3 = null;
break #L3;
}
}
}
{
core::int p = 1;
core::int #t4;
#L4:
{
{
#t4 = 1;
break #L4;
}
}
}
{
core::int p = 1;
core::int #t5;
#L5:
{
{
#t5 = p;
break #L5;
}
}
}
{
core::int p = 1;
core::bool #t6;
#L6:
{
{
#t6 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
}
}
@@ -0,0 +1,75 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
{
core::int p = 1;
Null #t1;
#L1:
{
1;
{
#t1 = null;
break #L1;
}
}
}
{
core::int p = 1;
Null #t2;
#L2:
{
p;
{
#t2 = null;
break #L2;
}
}
}
{
core::int p = 1;
Null #t3;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t3 = null;
break #L3;
}
}
}
{
core::int p = 1;
core::int #t4;
#L4:
{
{
#t4 = 1;
break #L4;
}
}
}
{
core::int p = 1;
core::int #t5;
#L5:
{
{
#t5 = p;
break #L5;
}
}
}
{
core::int p = 1;
core::bool #t6;
#L6:
{
{
#t6 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
}
}
@@ -0,0 +1,5 @@
library;
import self as self;
static method main() → void
;
@@ -0,0 +1,75 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
{
core::int p = 1;
Null #t1;
#L1:
{
1;
{
#t1 = null;
break #L1;
}
}
}
{
core::int p = 1;
Null #t2;
#L2:
{
p;
{
#t2 = null;
break #L2;
}
}
}
{
core::int p = 1;
Null #t3;
#L3:
{
p.{core::int::isEven}{core::bool};
{
#t3 = null;
break #L3;
}
}
}
{
core::int p = 1;
core::int #t4;
#L4:
{
{
#t4 = 1;
break #L4;
}
}
}
{
core::int p = 1;
core::int #t5;
#L5:
{
{
#t5 = p;
break #L5;
}
}
}
{
core::int p = 1;
core::bool #t6;
#L6:
{
{
#t6 = p.{core::int::isEven}{core::bool};
break #L6;
}
}
}
}
@@ -0,0 +1,34 @@
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
void main() {
1.{
1;
return;
};
1.{
this;
return;
};
1.{
this.isEven;
return;
};
1.{
isEven;
return;
};
1.{
return 1;
};
1.{
return this;
};
1.{
return this.isEven;
};
1.{
return isEven;
};
}
@@ -0,0 +1,98 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
{
final synthesized core::int anonymous#this = 1;
Null #t1;
#L1:
{
1;
{
#t1 = null;
break #L1;
}
}
}
{
final synthesized core::int anonymous#this = 1;
Null #t2;
#L2:
{
anonymous#this;
{
#t2 = null;
break #L2;
}
}
}
{
final synthesized core::int anonymous#this = 1;
Null #t3;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t3 = null;
break #L3;
}
}
}
{
final synthesized core::int anonymous#this = 1;
Null #t4;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t4 = null;
break #L4;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::int #t5;
#L5:
{
{
#t5 = 1;
break #L5;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::int #t6;
#L6:
{
{
#t6 = anonymous#this;
break #L6;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::bool #t7;
#L7:
{
{
#t7 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::bool #t8;
#L8:
{
{
#t8 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
}
}
@@ -0,0 +1,98 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
{
final synthesized core::int anonymous#this = 1;
Null #t1;
#L1:
{
1;
{
#t1 = null;
break #L1;
}
}
}
{
final synthesized core::int anonymous#this = 1;
Null #t2;
#L2:
{
anonymous#this;
{
#t2 = null;
break #L2;
}
}
}
{
final synthesized core::int anonymous#this = 1;
Null #t3;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t3 = null;
break #L3;
}
}
}
{
final synthesized core::int anonymous#this = 1;
Null #t4;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t4 = null;
break #L4;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::int #t5;
#L5:
{
{
#t5 = 1;
break #L5;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::int #t6;
#L6:
{
{
#t6 = anonymous#this;
break #L6;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::bool #t7;
#L7:
{
{
#t7 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::bool #t8;
#L8:
{
{
#t8 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
}
}
@@ -0,0 +1,5 @@
library;
import self as self;
static method main() → void
;
@@ -0,0 +1,98 @@
library;
import self as self;
import "dart:core" as core;
static method main() → void {
{
final synthesized core::int anonymous#this = 1;
Null #t1;
#L1:
{
1;
{
#t1 = null;
break #L1;
}
}
}
{
final synthesized core::int anonymous#this = 1;
Null #t2;
#L2:
{
anonymous#this;
{
#t2 = null;
break #L2;
}
}
}
{
final synthesized core::int anonymous#this = 1;
Null #t3;
#L3:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t3 = null;
break #L3;
}
}
}
{
final synthesized core::int anonymous#this = 1;
Null #t4;
#L4:
{
anonymous#this.{core::int::isEven}{core::bool};
{
#t4 = null;
break #L4;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::int #t5;
#L5:
{
{
#t5 = 1;
break #L5;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::int #t6;
#L6:
{
{
#t6 = anonymous#this;
break #L6;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::bool #t7;
#L7:
{
{
#t7 = anonymous#this.{core::int::isEven}{core::bool};
break #L7;
}
}
}
{
final synthesized core::int anonymous#this = 1;
core::bool #t8;
#L8:
{
{
#t8 = anonymous#this.{core::int::isEven}{core::bool};
break #L8;
}
}
}
}
@@ -5,12 +5,12 @@
void v = null;
void test() {
v. => 1; // Error
v.=> 1; // Error
v.(p) => 1; // Error
v?. => 1; // Error
v?.=> 1; // Error
v?.(p) => 1; // Error
v.. => 1; // Error
v..=> 1; // Error
v..(p) => 1; // Error
v?.. => 1; // Error
v?..=> 1; // Error
v?..(p) => 1; // Error
}
@@ -3,7 +3,7 @@ library;
// Problems in library:
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
// v. => 1; // Error
// v.=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:9:3: Error: This expression has type 'void' and can't be used.
@@ -11,7 +11,7 @@ library;
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:10:3: Error: This expression has type 'void' and can't be used.
// v?. => 1; // Error
// v?.=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:11:3: Error: This expression has type 'void' and can't be used.
@@ -19,7 +19,7 @@ library;
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
// v.. => 1; // Error
// v..=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:13:3: Error: This expression has type 'void' and can't be used.
@@ -27,7 +27,7 @@ library;
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:14:3: Error: This expression has type 'void' and can't be used.
// v?.. => 1; // Error
// v?..=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:15:3: Error: This expression has type 'void' and can't be used.
@@ -40,20 +40,20 @@ import "dart:core" as core;
static field void v = null;
static method test() → void {
let final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
v. => 1; // Error
v.=> 1; // Error
^" in self::v in 1;
let void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:9:3: Error: This expression has type 'void' and can't be used.
v.(p) => 1; // Error
^" in self::v in 1;
let synthesized void anonymous#receiver = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:10:3: Error: This expression has type 'void' and can't be used.
v?. => 1; // Error
v?.=> 1; // Error
^" in self::v in anonymous#receiver == null ?{core::int?} null : let final synthesized void anonymous#this = anonymous#receiver as void in 1;
let synthesized void anonymous#receiver = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:11:3: Error: This expression has type 'void' and can't be used.
v?.(p) => 1; // Error
^" in self::v in anonymous#receiver == null ?{core::int?} null : let void p = anonymous#receiver as void in 1;
let final void #t1 = self::v in block {
let final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
v.. => 1; // Error
v..=> 1; // Error
^" in #t1 in let dynamic #t2 = 1 in anonymous#this;
} =>#t1;
let final void #t3 = self::v in block {
@@ -63,7 +63,7 @@ static method test() → void {
} =>#t3;
let final void #t5 = self::v in #t5 == null ?{void} null : block {
let synthesized void anonymous#receiver = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:14:3: Error: This expression has type 'void' and can't be used.
v?.. => 1; // Error
v?..=> 1; // Error
^" in #t5 in anonymous#receiver == null ?{void} null : let final synthesized void anonymous#this = anonymous#receiver as void in let dynamic #t6 = 1 in anonymous#this;
} =>#t5;
let final void #t7 = self::v in #t7 == null ?{void} null : block {
@@ -3,7 +3,7 @@ library;
// Problems in library:
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
// v. => 1; // Error
// v.=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:9:3: Error: This expression has type 'void' and can't be used.
@@ -11,7 +11,7 @@ library;
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:10:3: Error: This expression has type 'void' and can't be used.
// v?. => 1; // Error
// v?.=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:11:3: Error: This expression has type 'void' and can't be used.
@@ -19,7 +19,7 @@ library;
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
// v.. => 1; // Error
// v..=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:13:3: Error: This expression has type 'void' and can't be used.
@@ -27,7 +27,7 @@ library;
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:14:3: Error: This expression has type 'void' and can't be used.
// v?.. => 1; // Error
// v?..=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:15:3: Error: This expression has type 'void' and can't be used.
@@ -40,20 +40,20 @@ import "dart:core" as core;
static field void v = null;
static method test() → void {
let final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
v. => 1; // Error
v.=> 1; // Error
^" in self::v in 1;
let void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:9:3: Error: This expression has type 'void' and can't be used.
v.(p) => 1; // Error
^" in self::v in 1;
let synthesized void anonymous#receiver = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:10:3: Error: This expression has type 'void' and can't be used.
v?. => 1; // Error
v?.=> 1; // Error
^" in self::v in anonymous#receiver == null ?{core::int?} null : let final synthesized void anonymous#this = anonymous#receiver as void in 1;
let synthesized void anonymous#receiver = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:11:3: Error: This expression has type 'void' and can't be used.
v?.(p) => 1; // Error
^" in self::v in anonymous#receiver == null ?{core::int?} null : let void p = anonymous#receiver as void in 1;
let final void #t1 = self::v in block {
let final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
v.. => 1; // Error
v..=> 1; // Error
^" in #t1 in let dynamic #t2 = 1 in anonymous#this;
} =>#t1;
let final void #t3 = self::v in block {
@@ -63,7 +63,7 @@ static method test() → void {
} =>#t3;
let final void #t5 = self::v in #t5 == null ?{void} null : block {
let synthesized void anonymous#receiver = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:14:3: Error: This expression has type 'void' and can't be used.
v?.. => 1; // Error
v?..=> 1; // Error
^" in #t5 in anonymous#receiver == null ?{void} null : let final synthesized void anonymous#this = anonymous#receiver as void in let dynamic #t6 = 1 in anonymous#this;
} =>#t5;
let final void #t7 = self::v in #t7 == null ?{void} null : block {
@@ -3,7 +3,7 @@ library;
// Problems in library:
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
// v. => 1; // Error
// v.=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:9:3: Error: This expression has type 'void' and can't be used.
@@ -11,7 +11,7 @@ library;
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:10:3: Error: This expression has type 'void' and can't be used.
// v?. => 1; // Error
// v?.=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:11:3: Error: This expression has type 'void' and can't be used.
@@ -19,7 +19,7 @@ library;
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
// v.. => 1; // Error
// v..=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:13:3: Error: This expression has type 'void' and can't be used.
@@ -27,7 +27,7 @@ library;
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:14:3: Error: This expression has type 'void' and can't be used.
// v?.. => 1; // Error
// v?..=> 1; // Error
// ^
//
// pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:15:3: Error: This expression has type 'void' and can't be used.
@@ -40,20 +40,20 @@ import "dart:core" as core;
static field void v = null;
static method test() → void {
let final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:8:3: Error: This expression has type 'void' and can't be used.
v. => 1; // Error
v.=> 1; // Error
^" in self::v in 1;
let void p = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:9:3: Error: This expression has type 'void' and can't be used.
v.(p) => 1; // Error
^" in self::v in 1;
let synthesized void anonymous#receiver = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:10:3: Error: This expression has type 'void' and can't be used.
v?. => 1; // Error
v?.=> 1; // Error
^" in self::v in anonymous#receiver == null ?{core::int?} null : let final synthesized void anonymous#this = anonymous#receiver as{Unchecked} void in 1;
let synthesized void anonymous#receiver = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:11:3: Error: This expression has type 'void' and can't be used.
v?.(p) => 1; // Error
^" in self::v in anonymous#receiver == null ?{core::int?} null : let void p = anonymous#receiver as{Unchecked} void in 1;
let final void #t1 = self::v in block {
let final synthesized void anonymous#this = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:12:3: Error: This expression has type 'void' and can't be used.
v.. => 1; // Error
v..=> 1; // Error
^" in #t1 in let dynamic #t2 = 1 in anonymous#this;
} =>#t1;
let final void #t3 = self::v in block {
@@ -63,7 +63,7 @@ static method test() → void {
} =>#t3;
let final void #t5 = self::v in #t5 == null ?{void} null : block {
let synthesized void anonymous#receiver = invalid-expression "pkg/front_end/testcases/coverage/anonymous_methods/expression_void_receiver.dart:14:3: Error: This expression has type 'void' and can't be used.
v?.. => 1; // Error
v?..=> 1; // Error
^" in #t5 in anonymous#receiver == null ?{void} null : let final synthesized void anonymous#this = anonymous#receiver as{Unchecked} void in let dynamic #t6 = 1 in anonymous#this;
} =>#t5;
let final void #t7 = self::v in #t7 == null ?{void} null : block {
@@ -42,19 +42,19 @@ void main() {
"".(int i) {};
// ^^^
// [analyzer] COMPILE_TIME_ERROR.ANONYMOUS_METHOD_WRONG_PARAMETER_TYPE
// [cfe] The receiver type 'String' must be assignable to the formal parameter type 'int' of an anonymous method.
// [cfe] The receiver type 'String' must be assignable to the formal parameter type 'int' in an anonymous method.
// Using a void value as receiver.
StringBuffer('').{ return print('0'); }.toString();
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
// ^
//^
// [cfe] This expression has type 'void' and can't be used.
StringBuffer('').{ return print('0'); }.{ print('1'); };
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.USE_OF_VOID_RESULT
// ^
//^
// [cfe] This expression has type 'void' and can't be used.
// Break outside of loop/switch.
@@ -146,7 +146,7 @@ void main() {
v3.expectStaticType<Exactly<bool?>>;
Expect.equals(buffer?.length, v1);
Expect.equals('true', v2);
Expect.equals(false, v3);
Expect.equals(true, v3);
}
// Dependency on parameter.