[CFE] Handle unevaluated constants differently in constant evaluator
This for instance avoids an exponential blowup that would previously have occurred in certain cases. Change-Id: I258d8153e75f7059bca346826b5dec62cc1bac84 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/249000 Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Joshua Litt <joshualitt@google.com> Reviewed-by: Aske Simon Christensen <askesc@google.com> Commit-Queue: Jens Johansen <jensj@google.com>
This commit is contained in:
committed by
Commit Bot
parent
ac586ff2a6
commit
3c8a679b46
@@ -534,6 +534,47 @@ class Subclass<T extends A> extends Class<T> {
|
||||
ConstantData(
|
||||
'const Subclass<B>(B())', 'ConstructedConstant(Subclass<B*>())'),
|
||||
]),
|
||||
TestData('Nested Unevaluated', '''
|
||||
//@dart = 2.12
|
||||
class Foo {
|
||||
const Foo(
|
||||
int Function(String)? a1,
|
||||
int Function(String)? a2,
|
||||
int Function(String)? a3,
|
||||
int Function(String)? a4,
|
||||
) : _foo = a1 ??
|
||||
a2 ??
|
||||
a3 ??
|
||||
a4 ??
|
||||
bar;
|
||||
final int Function(String) _foo;
|
||||
}
|
||||
|
||||
int bar(String o) => int.parse(o);
|
||||
''', [
|
||||
ConstantData(
|
||||
'''Foo(
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
)''',
|
||||
<Map<String, String>, String>{
|
||||
{}: 'ConstructedConstant(Foo(_foo=FunctionConstant(bar)))',
|
||||
{'baz': 'true'}:
|
||||
'ConstructedConstant(Foo(_foo=FunctionConstant(int.parse)))'
|
||||
},
|
||||
),
|
||||
ConstantData(
|
||||
'''String.fromEnvironment(String.fromEnvironment(String.fromEnvironment("foo")))''',
|
||||
<Map<String, String>, String>{
|
||||
{}: 'StringConstant("")',
|
||||
{'foo': 'bar', 'bar': 'baz'}: 'StringConstant("")',
|
||||
{'foo': 'bar', 'bar': 'baz', 'baz': 'hello'}: 'StringConstant("hello")',
|
||||
{'foo': 'bar', 'bar': 'baz', 'baz': 'world'}: 'StringConstant("world")',
|
||||
},
|
||||
),
|
||||
]),
|
||||
];
|
||||
|
||||
main(List<String> args) {
|
||||
|
||||
@@ -26,7 +26,7 @@ abstract class _ListOrSetConstantBuilder<L extends Expression> {
|
||||
if (constant is AbortConstant) return constant;
|
||||
if (evaluator.shouldBeUnevaluated) {
|
||||
parts.add(evaluator.unevaluated(
|
||||
element, makeLiteral([evaluator.extract(constant)])));
|
||||
element, makeLiteral([evaluator._wrap(constant)])));
|
||||
return null;
|
||||
} else {
|
||||
return addConstant(constant, element);
|
||||
@@ -134,7 +134,7 @@ class ListConstantBuilder extends _ListOrSetConstantBuilder<ListLiteral> {
|
||||
if (part.isEmpty) continue;
|
||||
lists.add(new ConstantExpression(new ListConstant(elementType, part)));
|
||||
} else if (part is Constant) {
|
||||
lists.add(evaluator.extract(part));
|
||||
lists.add(evaluator._wrap(part));
|
||||
} else {
|
||||
throw 'Non-constant in constant list';
|
||||
}
|
||||
@@ -208,7 +208,7 @@ class SetConstantBuilder extends _ListOrSetConstantBuilder<SetLiteral> {
|
||||
if (part.isEmpty) continue;
|
||||
sets.add(new ConstantExpression(new SetConstant(elementType, part)));
|
||||
} else if (part is Constant) {
|
||||
sets.add(evaluator.extract(part));
|
||||
sets.add(evaluator._wrap(part));
|
||||
} else {
|
||||
throw 'Non-constant in constant set';
|
||||
}
|
||||
@@ -247,8 +247,7 @@ class MapConstantBuilder {
|
||||
parts.add(evaluator.unevaluated(
|
||||
element.key,
|
||||
new MapLiteral([
|
||||
new MapLiteralEntry(
|
||||
evaluator.extract(key), evaluator.extract(value))
|
||||
new MapLiteralEntry(evaluator._wrap(key), evaluator._wrap(value))
|
||||
], isConst: true)));
|
||||
return null;
|
||||
} else {
|
||||
@@ -347,7 +346,7 @@ class MapConstantBuilder {
|
||||
maps.add(
|
||||
new ConstantExpression(new MapConstant(keyType, valueType, part)));
|
||||
} else if (part is Constant) {
|
||||
maps.add(evaluator.extract(part));
|
||||
maps.add(evaluator._wrap(part));
|
||||
} else {
|
||||
throw 'Non-constant in constant map';
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import 'dart:io' as io;
|
||||
|
||||
import 'package:kernel/ast.dart';
|
||||
import 'package:kernel/class_hierarchy.dart';
|
||||
import 'package:kernel/clone.dart';
|
||||
import 'package:kernel/core_types.dart';
|
||||
import 'package:kernel/src/const_canonical_type.dart';
|
||||
import 'package:kernel/src/legacy_erasure.dart';
|
||||
@@ -835,7 +834,7 @@ class ConstantsTransformer extends RemovingTransformer {
|
||||
TreeNode visitConstantExpression(
|
||||
ConstantExpression node, TreeNode? removalSentinel) {
|
||||
Constant constant = node.constant;
|
||||
if (constant is UnevaluatedConstant) {
|
||||
if (constant is UnevaluatedConstant && constantEvaluator.hasEnvironment) {
|
||||
Expression expression = constant.expression;
|
||||
return evaluateAndTransformWithContext(expression, expression);
|
||||
} else {
|
||||
@@ -898,7 +897,6 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
|
||||
final Map<Constant, Constant> canonicalizationCache;
|
||||
final Map<Node, Constant?> nodeCache;
|
||||
final CloneVisitorNotMembers cloner = new CloneVisitorNotMembers();
|
||||
|
||||
late Map<Class, bool> primitiveEqualCache;
|
||||
|
||||
@@ -910,7 +908,6 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
|
||||
InstanceBuilder? instanceBuilder;
|
||||
EvaluationEnvironment env;
|
||||
Set<Expression> replacementNodes = new Set<Expression>.identity();
|
||||
Map<Constant, Constant> lowered = new Map<Constant, Constant>.identity();
|
||||
|
||||
bool seenUnevaluatedChild = false; // Any children that were left unevaluated?
|
||||
@@ -1209,17 +1206,11 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
return node.accept(new RedundantFileUriExpressionRemover()) as Expression;
|
||||
}
|
||||
|
||||
/// Extract an expression from a (possibly unevaluated) constant to become
|
||||
/// part of the expression tree of another unevaluated constant.
|
||||
/// Makes sure a particular expression occurs only once in the tree by
|
||||
/// cloning further instances.
|
||||
Expression extract(Constant constant) {
|
||||
Expression expression = constant.asExpression();
|
||||
if (!replacementNodes.add(expression)) {
|
||||
expression = cloner.clone(expression);
|
||||
replacementNodes.add(expression);
|
||||
}
|
||||
return expression;
|
||||
/// Wrap a constant in a ConstantExpression.
|
||||
///
|
||||
/// For use with unevaluated constants.
|
||||
ConstantExpression _wrap(Constant constant) {
|
||||
return new ConstantExpression(constant);
|
||||
}
|
||||
|
||||
/// Enter a region of lazy evaluation. All leaf nodes are evaluated normally
|
||||
@@ -1754,7 +1745,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
return error;
|
||||
}
|
||||
if (constant is UnevaluatedConstant) {
|
||||
instanceBuilder!.unusedArguments.add(extract(constant));
|
||||
instanceBuilder!.unusedArguments.add(_wrap(constant));
|
||||
}
|
||||
}
|
||||
if (error != null) return error;
|
||||
@@ -2040,7 +2031,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
}
|
||||
|
||||
for (UnevaluatedConstant constant in env.unevaluatedUnreadConstants) {
|
||||
instanceBuilder!.unusedArguments.add(extract(constant));
|
||||
instanceBuilder!.unusedArguments.add(_wrap(constant));
|
||||
}
|
||||
|
||||
// ignore: unnecessary_null_comparison
|
||||
@@ -2065,10 +2056,10 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
enterLazy();
|
||||
Constant constant = _evaluateSubexpression(statement.message!);
|
||||
if (constant is AbortConstant) return constant;
|
||||
message = extract(constant);
|
||||
message = _wrap(constant);
|
||||
leaveLazy();
|
||||
}
|
||||
instanceBuilder!.asserts.add(new AssertStatement(extract(condition),
|
||||
instanceBuilder!.asserts.add(new AssertStatement(_wrap(condition),
|
||||
message: message,
|
||||
conditionStartOffset: statement.conditionStartOffset,
|
||||
conditionEndOffset: statement.conditionEndOffset));
|
||||
@@ -2081,8 +2072,8 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
final Constant message = _evaluateSubexpression(statement.message!);
|
||||
if (message is AbortConstant) return message;
|
||||
if (shouldBeUnevaluated) {
|
||||
instanceBuilder!.asserts.add(new AssertStatement(extract(condition),
|
||||
message: extract(message),
|
||||
instanceBuilder!.asserts.add(new AssertStatement(_wrap(condition),
|
||||
message: _wrap(message),
|
||||
conditionStartOffset: statement.conditionStartOffset,
|
||||
conditionEndOffset: statement.conditionEndOffset));
|
||||
} else if (message is StringConstant) {
|
||||
@@ -2150,7 +2141,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
node,
|
||||
new DynamicInvocation(
|
||||
node.kind,
|
||||
extract(receiver),
|
||||
_wrap(receiver),
|
||||
node.name,
|
||||
unevaluatedArguments(
|
||||
positionalArguments, {}, node.arguments.types))
|
||||
@@ -2195,7 +2186,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
node,
|
||||
new InstanceInvocation(
|
||||
node.kind,
|
||||
extract(receiver),
|
||||
_wrap(receiver),
|
||||
node.name,
|
||||
unevaluatedArguments(
|
||||
positionalArguments, {}, node.arguments.types),
|
||||
@@ -2296,7 +2287,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
if (shouldBeUnevaluated) {
|
||||
return unevaluated(
|
||||
node,
|
||||
new EqualsCall(extract(left), extract(right),
|
||||
new EqualsCall(_wrap(left), _wrap(right),
|
||||
functionType: node.functionType,
|
||||
interfaceTarget: node.interfaceTarget)
|
||||
..fileOffset = node.fileOffset);
|
||||
@@ -2312,7 +2303,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
|
||||
if (shouldBeUnevaluated) {
|
||||
return unevaluated(node,
|
||||
new EqualsNull(extract(expression))..fileOffset = node.fileOffset);
|
||||
new EqualsNull(_wrap(expression))..fileOffset = node.fileOffset);
|
||||
}
|
||||
|
||||
return _handleEquals(node, expression, nullConstant);
|
||||
@@ -2603,10 +2594,8 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
Constant right = _evaluateSubexpression(node.right);
|
||||
if (right is AbortConstant) return right;
|
||||
leaveLazy();
|
||||
return unevaluated(
|
||||
node,
|
||||
new LogicalExpression(
|
||||
extract(left), node.operatorEnum, extract(right)));
|
||||
return unevaluated(node,
|
||||
new LogicalExpression(_wrap(left), node.operatorEnum, _wrap(right)));
|
||||
}
|
||||
switch (node.operatorEnum) {
|
||||
case LogicalExpressionOperator.OR:
|
||||
@@ -2687,8 +2676,8 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
leaveLazy();
|
||||
return unevaluated(
|
||||
node,
|
||||
new ConditionalExpression(extract(condition), extract(then),
|
||||
extract(otherwise), env.substituteType(node.staticType)));
|
||||
new ConditionalExpression(_wrap(condition), _wrap(then),
|
||||
_wrap(otherwise), env.substituteType(node.staticType)));
|
||||
} else {
|
||||
return createEvaluationErrorConstant(
|
||||
node.condition,
|
||||
@@ -2736,7 +2725,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
} else if (shouldBeUnevaluated) {
|
||||
return unevaluated(
|
||||
node,
|
||||
new InstanceGet(node.kind, extract(receiver), node.name,
|
||||
new InstanceGet(node.kind, _wrap(receiver), node.name,
|
||||
resultType: node.resultType,
|
||||
interfaceTarget: node.interfaceTarget));
|
||||
} else if (receiver is NullConstant) {
|
||||
@@ -2796,7 +2785,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
return canonicalize(intFolder.makeIntConstant(receiver.value.length));
|
||||
} else if (shouldBeUnevaluated) {
|
||||
return unevaluated(
|
||||
node, new DynamicGet(node.kind, extract(receiver), node.name));
|
||||
node, new DynamicGet(node.kind, _wrap(receiver), node.name));
|
||||
} else if (receiver is NullConstant) {
|
||||
return createEvaluationErrorConstant(node, messageConstEvalNullValue);
|
||||
}
|
||||
@@ -2978,7 +2967,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
} else {
|
||||
// The value is either unevaluated constant or a non-primitive
|
||||
// constant in an unevaluated expression.
|
||||
return extract(value as Constant);
|
||||
return _wrap(value as Constant);
|
||||
}
|
||||
}, growable: false);
|
||||
return unevaluated(node, new StringConcatenation(expressions));
|
||||
@@ -3253,7 +3242,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
if (shouldBeUnevaluated) {
|
||||
return unevaluated(
|
||||
node,
|
||||
new AsExpression(extract(constant), env.substituteType(node.type))
|
||||
new AsExpression(_wrap(constant), env.substituteType(node.type))
|
||||
..isForNonNullableByDefault =
|
||||
_staticTypeContext!.isNonNullableByDefault);
|
||||
}
|
||||
@@ -3276,7 +3265,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
if (shouldBeUnevaluated) {
|
||||
return unevaluated(
|
||||
node,
|
||||
new IsExpression(extract(constant), env.substituteType(node.type))
|
||||
new IsExpression(_wrap(constant), env.substituteType(node.type))
|
||||
..fileOffset = node.fileOffset
|
||||
..flags = node.flags);
|
||||
}
|
||||
@@ -3348,7 +3337,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
return makeBoolConstant(constant != trueConstant);
|
||||
}
|
||||
if (shouldBeUnevaluated) {
|
||||
return unevaluated(node, new Not(extract(constant)));
|
||||
return unevaluated(node, new Not(_wrap(constant)));
|
||||
}
|
||||
return createEvaluationErrorConstant(
|
||||
node,
|
||||
@@ -3367,7 +3356,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
return createEvaluationErrorConstant(node, messageConstEvalNonNull);
|
||||
}
|
||||
if (shouldBeUnevaluated) {
|
||||
return unevaluated(node, new NullCheck(extract(constant)));
|
||||
return unevaluated(node, new NullCheck(_wrap(constant)));
|
||||
}
|
||||
return constant;
|
||||
}
|
||||
@@ -3396,7 +3385,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
if (shouldBeUnevaluated) {
|
||||
return unevaluated(
|
||||
node,
|
||||
new Instantiation(extract(constant),
|
||||
new Instantiation(_wrap(constant),
|
||||
node.typeArguments.map((t) => env.substituteType(t)).toList()));
|
||||
}
|
||||
List<TypeParameter>? typeParameters;
|
||||
@@ -3690,11 +3679,11 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
||||
final List<NamedExpression> named = new List<NamedExpression>.filled(
|
||||
namedArgs.length, dummyNamedExpression);
|
||||
for (int i = 0; i < positionalArgs.length; ++i) {
|
||||
positional[i] = extract(positionalArgs[i]);
|
||||
positional[i] = _wrap(positionalArgs[i]);
|
||||
}
|
||||
int i = 0;
|
||||
namedArgs.forEach((String name, Constant value) {
|
||||
named[i++] = new NamedExpression(name, extract(value));
|
||||
named[i++] = new NamedExpression(name, _wrap(value));
|
||||
});
|
||||
return new Arguments(positional, named: named, types: types);
|
||||
}
|
||||
@@ -4145,7 +4134,7 @@ class InstanceBuilder {
|
||||
InstanceCreation buildUnevaluatedInstance() {
|
||||
final Map<Reference, Expression> fieldValues = <Reference, Expression>{};
|
||||
fields.forEach((Field field, Constant value) {
|
||||
fieldValues[field.fieldReference] = evaluator.extract(value);
|
||||
fieldValues[field.fieldReference] = evaluator._wrap(value);
|
||||
});
|
||||
return new InstanceCreation(
|
||||
klass.reference, typeArguments, fieldValues, asserts, unusedArguments);
|
||||
@@ -4325,11 +4314,6 @@ class FunctionValue implements Constant {
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Expression asExpression() {
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
DartType getType(StaticTypeContext context) {
|
||||
throw new UnimplementedError();
|
||||
@@ -4397,11 +4381,6 @@ class _AbortDueToErrorConstant extends AbortConstant {
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Expression asExpression() {
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
DartType getType(StaticTypeContext context) {
|
||||
throw new UnimplementedError();
|
||||
@@ -4463,11 +4442,6 @@ class _AbortDueToInvalidExpressionConstant extends AbortConstant {
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Expression asExpression() {
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
DartType getType(StaticTypeContext context) {
|
||||
throw new UnimplementedError();
|
||||
@@ -4530,11 +4504,6 @@ class _AbortDueToThrowConstant extends AbortConstant {
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Expression asExpression() {
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
DartType getType(StaticTypeContext context) {
|
||||
throw new UnimplementedError();
|
||||
|
||||
+12
-8
@@ -95,9 +95,9 @@ class Bar extends core::Object /*hasConstConstructor*/ {
|
||||
: self::Bar::x = x, assert(x.{core::num::<}(0){(core::num) → core::bool}), super core::Object::•()
|
||||
;
|
||||
}
|
||||
static const field self::Foo foo1 = #C9;
|
||||
static const field self::Foo foo1 = #C12;
|
||||
static const field self::Foo foo2 = invalid-expression "This assertion failed with message: x is not positive";
|
||||
static const field self::Foo foo3 = #C12;
|
||||
static const field self::Foo foo3 = #C16;
|
||||
static const field self::Foo foo4 = invalid-expression "This assertion failed with a non-String message.";
|
||||
static const field self::Foo foo5 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart:16:51: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
|
||||
const Foo.withInvalidCondition(this.x) : assert(x);
|
||||
@@ -107,7 +107,7 @@ static const field self::Bar bar2 = invalid-expression "This assertion failed wi
|
||||
static const field self::Bar bar3 = invalid-expression "This assertion failed.";
|
||||
static const field self::Bar bar4 = invalid-expression "This assertion failed.";
|
||||
static method main() → dynamic {
|
||||
core::print(#C9);
|
||||
core::print(#C12);
|
||||
}
|
||||
|
||||
constants {
|
||||
@@ -118,11 +118,15 @@ constants {
|
||||
#C5 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C6 = 1
|
||||
#C7 = false
|
||||
#C8 = "foo was "
|
||||
#C9 = eval self::Foo{x:#C6, assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7, "${#C8}${const core::bool::fromEnvironment(#C1)}"), assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7)}
|
||||
#C10 = 42
|
||||
#C11 = "btw foo was "
|
||||
#C12 = eval self::Foo{x:#C10, assert(#C7, "${#C11}${const core::bool::fromEnvironment(#C1)}")}
|
||||
#C8 = eval #C2 =={core::Object::==}{(core::Object) → core::bool} #C7
|
||||
#C9 = "foo was "
|
||||
#C10 = eval "${#C9}${#C3}"
|
||||
#C11 = eval #C4 =={core::Object::==}{(core::Object) → core::bool} #C7
|
||||
#C12 = eval self::Foo{x:#C6, assert(#C8, #C10), assert(#C11)}
|
||||
#C13 = 42
|
||||
#C14 = "btw foo was "
|
||||
#C15 = eval "${#C14}${#C5}"
|
||||
#C16 = eval self::Foo{x:#C13, assert(#C7, #C15)}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+12
-8
@@ -95,9 +95,9 @@ class Bar extends core::Object /*hasConstConstructor*/ {
|
||||
: self::Bar::x = x, assert(x.{core::num::<}(0){(core::num) → core::bool}), super core::Object::•()
|
||||
;
|
||||
}
|
||||
static const field self::Foo foo1 = #C9;
|
||||
static const field self::Foo foo1 = #C12;
|
||||
static const field self::Foo foo2 = invalid-expression "This assertion failed with message: x is not positive";
|
||||
static const field self::Foo foo3 = #C12;
|
||||
static const field self::Foo foo3 = #C16;
|
||||
static const field self::Foo foo4 = invalid-expression "This assertion failed with a non-String message.";
|
||||
static const field self::Foo foo5 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart:16:51: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
|
||||
const Foo.withInvalidCondition(this.x) : assert(x);
|
||||
@@ -107,7 +107,7 @@ static const field self::Bar bar2 = invalid-expression "This assertion failed wi
|
||||
static const field self::Bar bar3 = invalid-expression "This assertion failed.";
|
||||
static const field self::Bar bar4 = invalid-expression "This assertion failed.";
|
||||
static method main() → dynamic {
|
||||
core::print(#C9);
|
||||
core::print(#C12);
|
||||
}
|
||||
|
||||
constants {
|
||||
@@ -118,11 +118,15 @@ constants {
|
||||
#C5 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C6 = 1
|
||||
#C7 = false
|
||||
#C8 = "foo was "
|
||||
#C9 = eval self::Foo{x:#C6, assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7, "${#C8}${const core::bool::fromEnvironment(#C1)}"), assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7)}
|
||||
#C10 = 42
|
||||
#C11 = "btw foo was "
|
||||
#C12 = eval self::Foo{x:#C10, assert(#C7, "${#C11}${const core::bool::fromEnvironment(#C1)}")}
|
||||
#C8 = eval #C2 =={core::Object::==}{(core::Object) → core::bool} #C7
|
||||
#C9 = "foo was "
|
||||
#C10 = eval "${#C9}${#C3}"
|
||||
#C11 = eval #C4 =={core::Object::==}{(core::Object) → core::bool} #C7
|
||||
#C12 = eval self::Foo{x:#C6, assert(#C8, #C10), assert(#C11)}
|
||||
#C13 = 42
|
||||
#C14 = "btw foo was "
|
||||
#C15 = eval "${#C14}${#C5}"
|
||||
#C16 = eval self::Foo{x:#C13, assert(#C7, #C15)}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+13
-10
@@ -95,9 +95,9 @@ class Bar extends core::Object /*hasConstConstructor*/ {
|
||||
: self::Bar::x = x, assert(x.{core::num::<}(0){(core::num) → core::bool}), super core::Object::•()
|
||||
;
|
||||
}
|
||||
static const field self::Foo foo1 = #C9;
|
||||
static const field self::Foo foo1 = #C12;
|
||||
static const field self::Foo foo2 = invalid-expression "This assertion failed with message: x is not positive";
|
||||
static const field self::Foo foo3 = #C12;
|
||||
static const field self::Foo foo3 = #C16;
|
||||
static const field self::Foo foo4 = invalid-expression "This assertion failed with a non-String message.";
|
||||
static const field self::Foo foo5 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart:16:51: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
|
||||
const Foo.withInvalidCondition(this.x) : assert(x);
|
||||
@@ -107,7 +107,7 @@ static const field self::Bar bar2 = invalid-expression "This assertion failed wi
|
||||
static const field self::Bar bar3 = invalid-expression "This assertion failed.";
|
||||
static const field self::Bar bar4 = invalid-expression "This assertion failed.";
|
||||
static method main() → dynamic {
|
||||
core::print(#C13);
|
||||
core::print(#C12);
|
||||
}
|
||||
|
||||
constants {
|
||||
@@ -118,12 +118,15 @@ constants {
|
||||
#C5 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C6 = 1
|
||||
#C7 = false
|
||||
#C8 = "foo was "
|
||||
#C9 = eval self::Foo{x:#C6, assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7, "${#C8}${const core::bool::fromEnvironment(#C1)}"), assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7)}
|
||||
#C10 = 42
|
||||
#C11 = "btw foo was "
|
||||
#C12 = eval self::Foo{x:#C10, assert(#C7, "${#C11}${const core::bool::fromEnvironment(#C1)}")}
|
||||
#C13 = eval self::Foo{x:#C6, assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7, "${#C8}${const core::bool::fromEnvironment(#C1)}"), assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7)}
|
||||
#C8 = eval #C2 =={core::Object::==}{(core::Object) → core::bool} #C7
|
||||
#C9 = "foo was "
|
||||
#C10 = eval "${#C9}${#C3}"
|
||||
#C11 = eval #C4 =={core::Object::==}{(core::Object) → core::bool} #C7
|
||||
#C12 = eval self::Foo{x:#C6, assert(#C8, #C10), assert(#C11)}
|
||||
#C13 = 42
|
||||
#C14 = "btw foo was "
|
||||
#C15 = eval "${#C14}${#C5}"
|
||||
#C16 = eval self::Foo{x:#C13, assert(#C7, #C15)}
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
@@ -135,7 +138,7 @@ Evaluated with empty environment: EqualsCall @ org-dartlang-testcase:///const_as
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:12:22 -> BoolConstant(false)
|
||||
Evaluated with empty environment: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:14:73 -> StringConstant("btw foo was false")
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:14:44 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:25:24 -> InstanceConstant(const Foo{Foo.x: 1})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:36:9 -> InstanceConstant(const Foo{Foo.x: 1})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:25:24 -> InstanceConstant(const Foo{Foo.x: 1})
|
||||
Extra constant evaluation: evaluated: 31, effectively constant: 10
|
||||
|
||||
|
||||
+44
-33
@@ -9,44 +9,55 @@ library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::List<core::bool> listWithUnevaluated = #C5;
|
||||
static const field core::List<core::bool> listWithUnevaluatedSpread = #C8;
|
||||
static const field core::Set<core::bool> setWithUnevaluated = #C10;
|
||||
static const field core::Set<core::bool> setWithUnevaluatedSpread = #C12;
|
||||
static const field core::List<core::int> a = #C13;
|
||||
static const field core::List<core::int?> b = #C14;
|
||||
static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C15;
|
||||
static const field invalid-type MapWithUnevaluated = #C16;
|
||||
static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C19;
|
||||
static const field core::List<core::bool> listWithUnevaluated = #C9;
|
||||
static const field core::List<core::bool> listWithUnevaluatedSpread = #C12;
|
||||
static const field core::Set<core::bool> setWithUnevaluated = #C18;
|
||||
static const field core::Set<core::bool> setWithUnevaluatedSpread = #C20;
|
||||
static const field core::List<core::int> a = #C21;
|
||||
static const field core::List<core::int?> b = #C22;
|
||||
static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C23;
|
||||
static const field invalid-type MapWithUnevaluated = #C27;
|
||||
static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C30;
|
||||
static method main() → dynamic {
|
||||
core::print(#C5);
|
||||
core::print(#C8);
|
||||
core::print(#C10);
|
||||
core::print(#C9);
|
||||
core::print(#C12);
|
||||
core::print(#C18);
|
||||
core::print(#C20);
|
||||
core::print(<core::String>{"hello"});
|
||||
core::print(#C21);
|
||||
core::print(#C32);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = "foo"
|
||||
#C2 = "bar"
|
||||
#C3 = true
|
||||
#C4 = <core::bool*>[#C3]
|
||||
#C5 = eval const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4
|
||||
#C6 = false
|
||||
#C7 = <core::bool*>[#C6]
|
||||
#C8 = eval #C4 + const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4 + #C7
|
||||
#C9 = <core::bool*>{#C3}
|
||||
#C10 = eval const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9
|
||||
#C11 = <core::bool*>{#C6}
|
||||
#C12 = eval #C9 + const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9 + #C11
|
||||
#C13 = <core::int*>[]
|
||||
#C14 = <core::int?>[]
|
||||
#C15 = <core::List<core::int?>*>{#C13, #C14}
|
||||
#C16 = eval const <dynamic, dynamic>{const core::bool::fromEnvironment(#C1): const core::bool::fromEnvironment(#C2)}
|
||||
#C17 = 0
|
||||
#C18 = 1
|
||||
#C19 = <core::List<core::int?>*, core::int*>{#C13:#C17, #C14:#C18)
|
||||
#C20 = "hello"
|
||||
#C21 = <core::String*>{#C20}
|
||||
#C2 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C3 = eval const <dynamic>[#C2]
|
||||
#C4 = "bar"
|
||||
#C5 = eval const core::bool::fromEnvironment(#C4)
|
||||
#C6 = eval const <dynamic>[#C5]
|
||||
#C7 = true
|
||||
#C8 = <core::bool*>[#C7]
|
||||
#C9 = eval #C3 + #C6 + #C8
|
||||
#C10 = false
|
||||
#C11 = <core::bool*>[#C10]
|
||||
#C12 = eval #C8 + #C9 + #C11
|
||||
#C13 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C14 = eval const <dynamic>{#C13}
|
||||
#C15 = eval const core::bool::fromEnvironment(#C4)
|
||||
#C16 = eval const <dynamic>{#C15}
|
||||
#C17 = <core::bool*>{#C7}
|
||||
#C18 = eval #C14 + #C16 + #C17
|
||||
#C19 = <core::bool*>{#C10}
|
||||
#C20 = eval #C17 + #C18 + #C19
|
||||
#C21 = <core::int*>[]
|
||||
#C22 = <core::int?>[]
|
||||
#C23 = <core::List<core::int?>*>{#C21, #C22}
|
||||
#C24 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C25 = eval const core::bool::fromEnvironment(#C4)
|
||||
#C26 = eval const <dynamic, dynamic>{#C24: #C25}
|
||||
#C27 = eval #C26
|
||||
#C28 = 0
|
||||
#C29 = 1
|
||||
#C30 = <core::List<core::int?>*, core::int*>{#C21:#C28, #C22:#C29)
|
||||
#C31 = "hello"
|
||||
#C32 = <core::String*>{#C31}
|
||||
}
|
||||
|
||||
+44
-33
@@ -9,44 +9,55 @@ library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::List<core::bool> listWithUnevaluated = #C5;
|
||||
static const field core::List<core::bool> listWithUnevaluatedSpread = #C8;
|
||||
static const field core::Set<core::bool> setWithUnevaluated = #C10;
|
||||
static const field core::Set<core::bool> setWithUnevaluatedSpread = #C12;
|
||||
static const field core::List<core::int> a = #C13;
|
||||
static const field core::List<core::int?> b = #C14;
|
||||
static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C15;
|
||||
static const field invalid-type MapWithUnevaluated = #C16;
|
||||
static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C19;
|
||||
static const field core::List<core::bool> listWithUnevaluated = #C9;
|
||||
static const field core::List<core::bool> listWithUnevaluatedSpread = #C12;
|
||||
static const field core::Set<core::bool> setWithUnevaluated = #C18;
|
||||
static const field core::Set<core::bool> setWithUnevaluatedSpread = #C20;
|
||||
static const field core::List<core::int> a = #C21;
|
||||
static const field core::List<core::int?> b = #C22;
|
||||
static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C23;
|
||||
static const field invalid-type MapWithUnevaluated = #C27;
|
||||
static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C30;
|
||||
static method main() → dynamic {
|
||||
core::print(#C5);
|
||||
core::print(#C8);
|
||||
core::print(#C10);
|
||||
core::print(#C9);
|
||||
core::print(#C12);
|
||||
core::print(#C18);
|
||||
core::print(#C20);
|
||||
core::print(<core::String>{"hello"});
|
||||
core::print(#C21);
|
||||
core::print(#C32);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = "foo"
|
||||
#C2 = "bar"
|
||||
#C3 = true
|
||||
#C4 = <core::bool*>[#C3]
|
||||
#C5 = eval const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4
|
||||
#C6 = false
|
||||
#C7 = <core::bool*>[#C6]
|
||||
#C8 = eval #C4 + const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4 + #C7
|
||||
#C9 = <core::bool*>{#C3}
|
||||
#C10 = eval const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9
|
||||
#C11 = <core::bool*>{#C6}
|
||||
#C12 = eval #C9 + const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9 + #C11
|
||||
#C13 = <core::int*>[]
|
||||
#C14 = <core::int?>[]
|
||||
#C15 = <core::List<core::int?>*>{#C13, #C14}
|
||||
#C16 = eval const <dynamic, dynamic>{const core::bool::fromEnvironment(#C1): const core::bool::fromEnvironment(#C2)}
|
||||
#C17 = 0
|
||||
#C18 = 1
|
||||
#C19 = <core::List<core::int?>*, core::int*>{#C13:#C17, #C14:#C18)
|
||||
#C20 = "hello"
|
||||
#C21 = <core::String*>{#C20}
|
||||
#C2 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C3 = eval const <dynamic>[#C2]
|
||||
#C4 = "bar"
|
||||
#C5 = eval const core::bool::fromEnvironment(#C4)
|
||||
#C6 = eval const <dynamic>[#C5]
|
||||
#C7 = true
|
||||
#C8 = <core::bool*>[#C7]
|
||||
#C9 = eval #C3 + #C6 + #C8
|
||||
#C10 = false
|
||||
#C11 = <core::bool*>[#C10]
|
||||
#C12 = eval #C8 + #C9 + #C11
|
||||
#C13 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C14 = eval const <dynamic>{#C13}
|
||||
#C15 = eval const core::bool::fromEnvironment(#C4)
|
||||
#C16 = eval const <dynamic>{#C15}
|
||||
#C17 = <core::bool*>{#C7}
|
||||
#C18 = eval #C14 + #C16 + #C17
|
||||
#C19 = <core::bool*>{#C10}
|
||||
#C20 = eval #C17 + #C18 + #C19
|
||||
#C21 = <core::int*>[]
|
||||
#C22 = <core::int?>[]
|
||||
#C23 = <core::List<core::int?>*>{#C21, #C22}
|
||||
#C24 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C25 = eval const core::bool::fromEnvironment(#C4)
|
||||
#C26 = eval const <dynamic, dynamic>{#C24: #C25}
|
||||
#C27 = eval #C26
|
||||
#C28 = 0
|
||||
#C29 = 1
|
||||
#C30 = <core::List<core::int?>*, core::int*>{#C21:#C28, #C22:#C29)
|
||||
#C31 = "hello"
|
||||
#C32 = <core::String*>{#C31}
|
||||
}
|
||||
|
||||
+46
-39
@@ -9,55 +9,62 @@ library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::List<core::bool> listWithUnevaluated = #C5;
|
||||
static const field core::List<core::bool> listWithUnevaluatedSpread = #C8;
|
||||
static const field core::Set<core::bool> setWithUnevaluated = #C10;
|
||||
static const field core::Set<core::bool> setWithUnevaluatedSpread = #C12;
|
||||
static const field core::List<core::int> a = #C13;
|
||||
static const field core::List<core::int?> b = #C14;
|
||||
static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C15;
|
||||
static const field invalid-type MapWithUnevaluated = #C16;
|
||||
static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C19;
|
||||
static const field core::List<core::bool> listWithUnevaluated = #C9;
|
||||
static const field core::List<core::bool> listWithUnevaluatedSpread = #C12;
|
||||
static const field core::Set<core::bool> setWithUnevaluated = #C18;
|
||||
static const field core::Set<core::bool> setWithUnevaluatedSpread = #C20;
|
||||
static const field core::List<core::int> a = #C21;
|
||||
static const field core::List<core::int?> b = #C22;
|
||||
static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C23;
|
||||
static const field invalid-type MapWithUnevaluated = #C27;
|
||||
static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C30;
|
||||
static method main() → dynamic {
|
||||
core::print(#C9);
|
||||
core::print(#C12);
|
||||
core::print(#C18);
|
||||
core::print(#C20);
|
||||
core::print(#C21);
|
||||
core::print(#C22);
|
||||
core::print(#C23);
|
||||
core::print(<core::String>{"hello"});
|
||||
core::print(#C25);
|
||||
core::print(#C32);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = "foo"
|
||||
#C2 = "bar"
|
||||
#C3 = true
|
||||
#C4 = <core::bool*>[#C3]
|
||||
#C5 = eval const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4
|
||||
#C6 = false
|
||||
#C7 = <core::bool*>[#C6]
|
||||
#C8 = eval #C4 + const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4 + #C7
|
||||
#C9 = <core::bool*>{#C3}
|
||||
#C10 = eval const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9
|
||||
#C11 = <core::bool*>{#C6}
|
||||
#C12 = eval #C9 + const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9 + #C11
|
||||
#C13 = <core::int*>[]
|
||||
#C14 = <core::int?>[]
|
||||
#C15 = <core::List<core::int?>*>{#C13, #C14}
|
||||
#C16 = eval const <dynamic, dynamic>{const core::bool::fromEnvironment(#C1): const core::bool::fromEnvironment(#C2)}
|
||||
#C17 = 0
|
||||
#C18 = 1
|
||||
#C19 = <core::List<core::int?>*, core::int*>{#C13:#C17, #C14:#C18)
|
||||
#C20 = eval const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4
|
||||
#C21 = eval #C4 + const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4 + #C7
|
||||
#C22 = eval const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9
|
||||
#C23 = eval #C9 + const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9 + #C11
|
||||
#C24 = "hello"
|
||||
#C25 = <core::String*>{#C24}
|
||||
#C2 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C3 = eval const <dynamic>[#C2]
|
||||
#C4 = "bar"
|
||||
#C5 = eval const core::bool::fromEnvironment(#C4)
|
||||
#C6 = eval const <dynamic>[#C5]
|
||||
#C7 = true
|
||||
#C8 = <core::bool*>[#C7]
|
||||
#C9 = eval #C3 + #C6 + #C8
|
||||
#C10 = false
|
||||
#C11 = <core::bool*>[#C10]
|
||||
#C12 = eval #C8 + #C9 + #C11
|
||||
#C13 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C14 = eval const <dynamic>{#C13}
|
||||
#C15 = eval const core::bool::fromEnvironment(#C4)
|
||||
#C16 = eval const <dynamic>{#C15}
|
||||
#C17 = <core::bool*>{#C7}
|
||||
#C18 = eval #C14 + #C16 + #C17
|
||||
#C19 = <core::bool*>{#C10}
|
||||
#C20 = eval #C17 + #C18 + #C19
|
||||
#C21 = <core::int*>[]
|
||||
#C22 = <core::int?>[]
|
||||
#C23 = <core::List<core::int?>*>{#C21, #C22}
|
||||
#C24 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C25 = eval const core::bool::fromEnvironment(#C4)
|
||||
#C26 = eval const <dynamic, dynamic>{#C24: #C25}
|
||||
#C27 = eval #C26
|
||||
#C28 = 0
|
||||
#C29 = 1
|
||||
#C30 = <core::List<core::int?>*, core::int*>{#C21:#C28, #C22:#C29)
|
||||
#C31 = "hello"
|
||||
#C32 = <core::String*>{#C31}
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:5:40 -> ListConstant(const <bool*>[false, false, true])
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[true, false, false, true, false])
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:34:9 -> ListConstant(const <bool*>[false, false, true])
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:35:9 -> ListConstant(const <bool*>[true, false, false, true, false])
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:5:40 -> ListConstant(const <bool*>[false, false, true])
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[true, false, false, true, false])
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:27:38 -> MapConstant(const <bool*, bool*>{false: false})
|
||||
|
||||
+46
-30
@@ -2,37 +2,53 @@ library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C6;
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C14;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C16;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C19;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C22;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C25;
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C10;
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C22;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C26;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C31;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C36;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C41;
|
||||
|
||||
constants {
|
||||
#C1 = "foo"
|
||||
#C2 = "bar"
|
||||
#C3 = "hello"
|
||||
#C4 = "world"
|
||||
#C5 = <core::String*>[#C3, #C4]
|
||||
#C6 = eval const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C5
|
||||
#C7 = "A"
|
||||
#C8 = "few"
|
||||
#C9 = "strings"
|
||||
#C10 = <core::String*>[#C7, #C8, #C9]
|
||||
#C11 = "and"
|
||||
#C12 = "more"
|
||||
#C13 = <core::String*>[#C3, #C4, #C11, #C12]
|
||||
#C14 = eval #C10 + const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C13
|
||||
#C15 = <core::String*>{#C3, #C4}
|
||||
#C16 = eval const <dynamic>{const core::String::fromEnvironment(#C1)} + #C15
|
||||
#C17 = <core::String*>{#C7, #C8, #C9}
|
||||
#C18 = <core::String*>{#C3, #C4, #C11, #C12}
|
||||
#C19 = eval #C17 + const <dynamic>{const core::String::fromEnvironment(#C1)} + #C18
|
||||
#C20 = 42
|
||||
#C21 = <core::String*, core::int*>{#C3:#C20, #C4:#C20)
|
||||
#C22 = eval const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C21
|
||||
#C23 = <core::String*, core::int*>{#C7:#C20, #C8:#C20, #C9:#C20)
|
||||
#C24 = <core::String*, core::int*>{#C3:#C20, #C4:#C20, #C11:#C20, #C12:#C20)
|
||||
#C25 = eval #C23 + const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C24
|
||||
#C2 = eval const core::String::fromEnvironment(#C1)
|
||||
#C3 = eval const <dynamic>[#C2]
|
||||
#C4 = "bar"
|
||||
#C5 = eval const core::String::fromEnvironment(#C4)
|
||||
#C6 = eval const <dynamic>[#C5]
|
||||
#C7 = "hello"
|
||||
#C8 = "world"
|
||||
#C9 = <core::String*>[#C7, #C8]
|
||||
#C10 = eval #C3 + #C6 + #C9
|
||||
#C11 = "A"
|
||||
#C12 = "few"
|
||||
#C13 = "strings"
|
||||
#C14 = <core::String*>[#C11, #C12, #C13]
|
||||
#C15 = eval const core::String::fromEnvironment(#C1)
|
||||
#C16 = eval const <dynamic>[#C15]
|
||||
#C17 = eval const core::String::fromEnvironment(#C4)
|
||||
#C18 = eval const <dynamic>[#C17]
|
||||
#C19 = "and"
|
||||
#C20 = "more"
|
||||
#C21 = <core::String*>[#C7, #C8, #C19, #C20]
|
||||
#C22 = eval #C14 + #C16 + #C18 + #C21
|
||||
#C23 = eval const core::String::fromEnvironment(#C1)
|
||||
#C24 = eval const <dynamic>{#C23}
|
||||
#C25 = <core::String*>{#C7, #C8}
|
||||
#C26 = eval #C24 + #C25
|
||||
#C27 = <core::String*>{#C11, #C12, #C13}
|
||||
#C28 = eval const core::String::fromEnvironment(#C1)
|
||||
#C29 = eval const <dynamic>{#C28}
|
||||
#C30 = <core::String*>{#C7, #C8, #C19, #C20}
|
||||
#C31 = eval #C27 + #C29 + #C30
|
||||
#C32 = eval const core::String::fromEnvironment(#C1)
|
||||
#C33 = 42
|
||||
#C34 = eval const <dynamic, dynamic>{#C32: #C33}
|
||||
#C35 = <core::String*, core::int*>{#C7:#C33, #C8:#C33)
|
||||
#C36 = eval #C34 + #C35
|
||||
#C37 = <core::String*, core::int*>{#C11:#C33, #C12:#C33, #C13:#C33)
|
||||
#C38 = eval const core::String::fromEnvironment(#C1)
|
||||
#C39 = eval const <dynamic, dynamic>{#C38: #C33}
|
||||
#C40 = <core::String*, core::int*>{#C7:#C33, #C8:#C33, #C19:#C33, #C20:#C33)
|
||||
#C41 = eval #C37 + #C39 + #C40
|
||||
}
|
||||
|
||||
+46
-30
@@ -2,37 +2,53 @@ library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C6;
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C14;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C16;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C19;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C22;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C25;
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C10;
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C22;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C26;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C31;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C36;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C41;
|
||||
|
||||
constants {
|
||||
#C1 = "foo"
|
||||
#C2 = "bar"
|
||||
#C3 = "hello"
|
||||
#C4 = "world"
|
||||
#C5 = <core::String*>[#C3, #C4]
|
||||
#C6 = eval const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C5
|
||||
#C7 = "A"
|
||||
#C8 = "few"
|
||||
#C9 = "strings"
|
||||
#C10 = <core::String*>[#C7, #C8, #C9]
|
||||
#C11 = "and"
|
||||
#C12 = "more"
|
||||
#C13 = <core::String*>[#C3, #C4, #C11, #C12]
|
||||
#C14 = eval #C10 + const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C13
|
||||
#C15 = <core::String*>{#C3, #C4}
|
||||
#C16 = eval const <dynamic>{const core::String::fromEnvironment(#C1)} + #C15
|
||||
#C17 = <core::String*>{#C7, #C8, #C9}
|
||||
#C18 = <core::String*>{#C3, #C4, #C11, #C12}
|
||||
#C19 = eval #C17 + const <dynamic>{const core::String::fromEnvironment(#C1)} + #C18
|
||||
#C20 = 42
|
||||
#C21 = <core::String*, core::int*>{#C3:#C20, #C4:#C20)
|
||||
#C22 = eval const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C21
|
||||
#C23 = <core::String*, core::int*>{#C7:#C20, #C8:#C20, #C9:#C20)
|
||||
#C24 = <core::String*, core::int*>{#C3:#C20, #C4:#C20, #C11:#C20, #C12:#C20)
|
||||
#C25 = eval #C23 + const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C24
|
||||
#C2 = eval const core::String::fromEnvironment(#C1)
|
||||
#C3 = eval const <dynamic>[#C2]
|
||||
#C4 = "bar"
|
||||
#C5 = eval const core::String::fromEnvironment(#C4)
|
||||
#C6 = eval const <dynamic>[#C5]
|
||||
#C7 = "hello"
|
||||
#C8 = "world"
|
||||
#C9 = <core::String*>[#C7, #C8]
|
||||
#C10 = eval #C3 + #C6 + #C9
|
||||
#C11 = "A"
|
||||
#C12 = "few"
|
||||
#C13 = "strings"
|
||||
#C14 = <core::String*>[#C11, #C12, #C13]
|
||||
#C15 = eval const core::String::fromEnvironment(#C1)
|
||||
#C16 = eval const <dynamic>[#C15]
|
||||
#C17 = eval const core::String::fromEnvironment(#C4)
|
||||
#C18 = eval const <dynamic>[#C17]
|
||||
#C19 = "and"
|
||||
#C20 = "more"
|
||||
#C21 = <core::String*>[#C7, #C8, #C19, #C20]
|
||||
#C22 = eval #C14 + #C16 + #C18 + #C21
|
||||
#C23 = eval const core::String::fromEnvironment(#C1)
|
||||
#C24 = eval const <dynamic>{#C23}
|
||||
#C25 = <core::String*>{#C7, #C8}
|
||||
#C26 = eval #C24 + #C25
|
||||
#C27 = <core::String*>{#C11, #C12, #C13}
|
||||
#C28 = eval const core::String::fromEnvironment(#C1)
|
||||
#C29 = eval const <dynamic>{#C28}
|
||||
#C30 = <core::String*>{#C7, #C8, #C19, #C20}
|
||||
#C31 = eval #C27 + #C29 + #C30
|
||||
#C32 = eval const core::String::fromEnvironment(#C1)
|
||||
#C33 = 42
|
||||
#C34 = eval const <dynamic, dynamic>{#C32: #C33}
|
||||
#C35 = <core::String*, core::int*>{#C7:#C33, #C8:#C33)
|
||||
#C36 = eval #C34 + #C35
|
||||
#C37 = <core::String*, core::int*>{#C11:#C33, #C12:#C33, #C13:#C33)
|
||||
#C38 = eval const core::String::fromEnvironment(#C1)
|
||||
#C39 = eval const <dynamic, dynamic>{#C38: #C33}
|
||||
#C40 = <core::String*, core::int*>{#C7:#C33, #C8:#C33, #C19:#C33, #C20:#C33)
|
||||
#C41 = eval #C37 + #C39 + #C40
|
||||
}
|
||||
|
||||
+46
-30
@@ -2,39 +2,55 @@ library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C6;
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C14;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C16;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C19;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C22;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C25;
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C10;
|
||||
static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C22;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C26;
|
||||
static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C31;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C36;
|
||||
static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C41;
|
||||
|
||||
constants {
|
||||
#C1 = "foo"
|
||||
#C2 = "bar"
|
||||
#C3 = "hello"
|
||||
#C4 = "world"
|
||||
#C5 = <core::String*>[#C3, #C4]
|
||||
#C6 = eval const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C5
|
||||
#C7 = "A"
|
||||
#C8 = "few"
|
||||
#C9 = "strings"
|
||||
#C10 = <core::String*>[#C7, #C8, #C9]
|
||||
#C11 = "and"
|
||||
#C12 = "more"
|
||||
#C13 = <core::String*>[#C3, #C4, #C11, #C12]
|
||||
#C14 = eval #C10 + const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C13
|
||||
#C15 = <core::String*>{#C3, #C4}
|
||||
#C16 = eval const <dynamic>{const core::String::fromEnvironment(#C1)} + #C15
|
||||
#C17 = <core::String*>{#C7, #C8, #C9}
|
||||
#C18 = <core::String*>{#C3, #C4, #C11, #C12}
|
||||
#C19 = eval #C17 + const <dynamic>{const core::String::fromEnvironment(#C1)} + #C18
|
||||
#C20 = 42
|
||||
#C21 = <core::String*, core::int*>{#C3:#C20, #C4:#C20)
|
||||
#C22 = eval const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C21
|
||||
#C23 = <core::String*, core::int*>{#C7:#C20, #C8:#C20, #C9:#C20)
|
||||
#C24 = <core::String*, core::int*>{#C3:#C20, #C4:#C20, #C11:#C20, #C12:#C20)
|
||||
#C25 = eval #C23 + const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C24
|
||||
#C2 = eval const core::String::fromEnvironment(#C1)
|
||||
#C3 = eval const <dynamic>[#C2]
|
||||
#C4 = "bar"
|
||||
#C5 = eval const core::String::fromEnvironment(#C4)
|
||||
#C6 = eval const <dynamic>[#C5]
|
||||
#C7 = "hello"
|
||||
#C8 = "world"
|
||||
#C9 = <core::String*>[#C7, #C8]
|
||||
#C10 = eval #C3 + #C6 + #C9
|
||||
#C11 = "A"
|
||||
#C12 = "few"
|
||||
#C13 = "strings"
|
||||
#C14 = <core::String*>[#C11, #C12, #C13]
|
||||
#C15 = eval const core::String::fromEnvironment(#C1)
|
||||
#C16 = eval const <dynamic>[#C15]
|
||||
#C17 = eval const core::String::fromEnvironment(#C4)
|
||||
#C18 = eval const <dynamic>[#C17]
|
||||
#C19 = "and"
|
||||
#C20 = "more"
|
||||
#C21 = <core::String*>[#C7, #C8, #C19, #C20]
|
||||
#C22 = eval #C14 + #C16 + #C18 + #C21
|
||||
#C23 = eval const core::String::fromEnvironment(#C1)
|
||||
#C24 = eval const <dynamic>{#C23}
|
||||
#C25 = <core::String*>{#C7, #C8}
|
||||
#C26 = eval #C24 + #C25
|
||||
#C27 = <core::String*>{#C11, #C12, #C13}
|
||||
#C28 = eval const core::String::fromEnvironment(#C1)
|
||||
#C29 = eval const <dynamic>{#C28}
|
||||
#C30 = <core::String*>{#C7, #C8, #C19, #C20}
|
||||
#C31 = eval #C27 + #C29 + #C30
|
||||
#C32 = eval const core::String::fromEnvironment(#C1)
|
||||
#C33 = 42
|
||||
#C34 = eval const <dynamic, dynamic>{#C32: #C33}
|
||||
#C35 = <core::String*, core::int*>{#C7:#C33, #C8:#C33)
|
||||
#C36 = eval #C34 + #C35
|
||||
#C37 = <core::String*, core::int*>{#C11:#C33, #C12:#C33, #C13:#C33)
|
||||
#C38 = eval const core::String::fromEnvironment(#C1)
|
||||
#C39 = eval const <dynamic, dynamic>{#C38: #C33}
|
||||
#C40 = <core::String*, core::int*>{#C7:#C33, #C8:#C33, #C19:#C33, #C20:#C33)
|
||||
#C41 = eval #C37 + #C39 + #C40
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
|
||||
+9
-4
@@ -11,15 +11,20 @@ class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstCons
|
||||
static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
|
||||
return o as{ForNonNullableByDefault} self::bar::T%;
|
||||
static method main() → void {
|
||||
const self::Foo<core::int> myValue = #C5;
|
||||
const self::Foo<core::int> myValue = #C10;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = static-tearoff self::bar
|
||||
#C2 = "baz"
|
||||
#C3 = static-tearoff core::int::parse
|
||||
#C4 = null
|
||||
#C5 = eval self::Foo<core::int*>{_foo:(const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4) == null ?{(core::String) → core::int*} #C1<core::int*> : const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4}
|
||||
#C3 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C4 = static-tearoff core::int::parse
|
||||
#C5 = null
|
||||
#C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C7 = eval #C6 == null
|
||||
#C8 = eval #C1<core::int*>
|
||||
#C9 = eval #C7 ?{(core::String) → core::int*} #C8 : #C6
|
||||
#C10 = eval self::Foo<core::int*>{_foo:#C9}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+9
-4
@@ -11,15 +11,20 @@ class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstCons
|
||||
static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
|
||||
return o as{ForNonNullableByDefault} self::bar::T%;
|
||||
static method main() → void {
|
||||
const self::Foo<core::int> myValue = #C5;
|
||||
const self::Foo<core::int> myValue = #C10;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = static-tearoff self::bar
|
||||
#C2 = "baz"
|
||||
#C3 = static-tearoff core::int::parse
|
||||
#C4 = null
|
||||
#C5 = eval self::Foo<core::int*>{_foo:(const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4) == null ?{(core::String) → core::int*} #C1<core::int*> : const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4}
|
||||
#C3 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C4 = static-tearoff core::int::parse
|
||||
#C5 = null
|
||||
#C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C7 = eval #C6 == null
|
||||
#C8 = eval #C1<core::int*>
|
||||
#C9 = eval #C7 ?{(core::String) → core::int*} #C8 : #C6
|
||||
#C10 = eval self::Foo<core::int*>{_foo:#C9}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+9
-4
@@ -11,15 +11,20 @@ class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstCons
|
||||
static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
|
||||
return o as{ForNonNullableByDefault} self::bar::T%;
|
||||
static method main() → void {
|
||||
const self::Foo<core::int> myValue = #C5;
|
||||
const self::Foo<core::int> myValue = #C10;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = static-tearoff self::bar
|
||||
#C2 = "baz"
|
||||
#C3 = static-tearoff core::int::parse
|
||||
#C4 = null
|
||||
#C5 = eval self::Foo<core::int*>{_foo:(const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4) == null ?{(core::String) → core::int*} #C1<core::int*> : const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4}
|
||||
#C3 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C4 = static-tearoff core::int::parse
|
||||
#C5 = null
|
||||
#C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C7 = eval #C6 == null
|
||||
#C8 = eval #C1<core::int*>
|
||||
#C9 = eval #C7 ?{(core::String) → core::int*} #C8 : #C6
|
||||
#C10 = eval self::Foo<core::int*>{_foo:#C9}
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
|
||||
+12
-4
@@ -9,9 +9,9 @@ class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstCons
|
||||
;
|
||||
}
|
||||
static method main() → dynamic {
|
||||
const self::Foo<core::int> foo = #C6;
|
||||
core::print(#C6);
|
||||
core::print(#C6);
|
||||
const self::Foo<core::int> foo = #C14;
|
||||
core::print(#C14);
|
||||
core::print(#C14);
|
||||
}
|
||||
|
||||
constants {
|
||||
@@ -20,7 +20,15 @@ constants {
|
||||
#C3 = 2
|
||||
#C4 = <core::int*>[#C3]
|
||||
#C5 = "foo"
|
||||
#C6 = eval self::Foo<core::int*>{foo:(const core::bool::fromEnvironment(#C5) ?{core::List<dynamic>} const <dynamic>[#C1] : const <dynamic>[#C3]) is{ForNonNullableByDefault} core::List<core::int*> ?{core::List<core::int>} #C2 : #C4}
|
||||
#C6 = eval const core::bool::fromEnvironment(#C5)
|
||||
#C7 = eval const <dynamic>[#C1]
|
||||
#C8 = eval #C7
|
||||
#C9 = eval const <dynamic>[#C3]
|
||||
#C10 = eval #C9
|
||||
#C11 = eval #C6 ?{core::List<dynamic>} #C8 : #C10
|
||||
#C12 = eval #C11 is{ForNonNullableByDefault} core::List<core::int*>
|
||||
#C13 = eval #C12 ?{core::List<core::int>} #C2 : #C4
|
||||
#C14 = eval self::Foo<core::int*>{foo:#C13}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+12
-4
@@ -9,9 +9,9 @@ class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstCons
|
||||
;
|
||||
}
|
||||
static method main() → dynamic {
|
||||
const self::Foo<core::int> foo = #C6;
|
||||
core::print(#C6);
|
||||
core::print(#C6);
|
||||
const self::Foo<core::int> foo = #C14;
|
||||
core::print(#C14);
|
||||
core::print(#C14);
|
||||
}
|
||||
|
||||
constants {
|
||||
@@ -20,7 +20,15 @@ constants {
|
||||
#C3 = 2
|
||||
#C4 = <core::int*>[#C3]
|
||||
#C5 = "foo"
|
||||
#C6 = eval self::Foo<core::int*>{foo:(const core::bool::fromEnvironment(#C5) ?{core::List<dynamic>} const <dynamic>[#C1] : const <dynamic>[#C3]) is{ForNonNullableByDefault} core::List<core::int*> ?{core::List<core::int>} #C2 : #C4}
|
||||
#C6 = eval const core::bool::fromEnvironment(#C5)
|
||||
#C7 = eval const <dynamic>[#C1]
|
||||
#C8 = eval #C7
|
||||
#C9 = eval const <dynamic>[#C3]
|
||||
#C10 = eval #C9
|
||||
#C11 = eval #C6 ?{core::List<dynamic>} #C8 : #C10
|
||||
#C12 = eval #C11 is{ForNonNullableByDefault} core::List<core::int*>
|
||||
#C13 = eval #C12 ?{core::List<core::int>} #C2 : #C4
|
||||
#C14 = eval self::Foo<core::int*>{foo:#C13}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+14
-8
@@ -9,9 +9,9 @@ class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstCons
|
||||
;
|
||||
}
|
||||
static method main() → dynamic {
|
||||
const self::Foo<core::int> foo = #C6;
|
||||
core::print(#C7);
|
||||
core::print(#C8);
|
||||
const self::Foo<core::int> foo = #C14;
|
||||
core::print(#C14);
|
||||
core::print(#C14);
|
||||
}
|
||||
|
||||
constants {
|
||||
@@ -20,15 +20,21 @@ constants {
|
||||
#C3 = 2
|
||||
#C4 = <core::int*>[#C3]
|
||||
#C5 = "foo"
|
||||
#C6 = eval self::Foo<core::int*>{foo:(const core::bool::fromEnvironment(#C5) ?{core::List<dynamic>} const <dynamic>[#C1] : const <dynamic>[#C3]) is{ForNonNullableByDefault} core::List<core::int*> ?{core::List<core::int>} #C2 : #C4}
|
||||
#C7 = eval self::Foo<core::int*>{foo:(const core::bool::fromEnvironment(#C5) ?{core::List<dynamic>} const <dynamic>[#C1] : const <dynamic>[#C3]) is{ForNonNullableByDefault} core::List<core::int*> ?{core::List<core::int>} #C2 : #C4}
|
||||
#C8 = eval self::Foo<core::int*>{foo:(const core::bool::fromEnvironment(#C5) ?{core::List<dynamic>} const <dynamic>[#C1] : const <dynamic>[#C3]) is{ForNonNullableByDefault} core::List<core::int*> ?{core::List<core::int>} #C2 : #C4}
|
||||
#C6 = eval const core::bool::fromEnvironment(#C5)
|
||||
#C7 = eval const <dynamic>[#C1]
|
||||
#C8 = eval #C7
|
||||
#C9 = eval const <dynamic>[#C3]
|
||||
#C10 = eval #C9
|
||||
#C11 = eval #C6 ?{core::List<dynamic>} #C8 : #C10
|
||||
#C12 = eval #C11 is{ForNonNullableByDefault} core::List<core::int*>
|
||||
#C13 = eval #C12 ?{core::List<core::int>} #C2 : #C4
|
||||
#C14 = eval self::Foo<core::int*>{foo:#C13}
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_is.dart:11:30 -> InstanceConstant(const Foo<int*>{Foo.foo: const <int*>[2]})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_is.dart:11:30 -> InstanceConstant(const Foo<int*>{Foo.foo: const <int*>[2]})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_is.dart:11:30 -> InstanceConstant(const Foo<int*>{Foo.foo: const <int*>[2]})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_is.dart:12:9 -> InstanceConstant(const Foo<int*>{Foo.foo: const <int*>[2]})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_is.dart:13:9 -> InstanceConstant(const Foo<int*>{Foo.foo: const <int*>[2]})
|
||||
Extra constant evaluation: evaluated: 8, effectively constant: 3
|
||||
|
||||
|
||||
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
// Copyright (c) 2022, 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.
|
||||
|
||||
class Foo {
|
||||
const Foo(
|
||||
int Function(String)? a1,
|
||||
int Function(String)? a2,
|
||||
int Function(String)? a3,
|
||||
int Function(String)? a4,
|
||||
int Function(String)? a5,
|
||||
int Function(String)? a6,
|
||||
int Function(String)? a7,
|
||||
int Function(String)? a8,
|
||||
int Function(String)? a9,
|
||||
int Function(String)? a10,
|
||||
int Function(String)? a11,
|
||||
int Function(String)? a12,
|
||||
int Function(String)? a13,
|
||||
int Function(String)? a14,
|
||||
int Function(String)? a15,
|
||||
int Function(String)? a16,
|
||||
int Function(String)? a17,
|
||||
int Function(String)? a18,
|
||||
int Function(String)? a19,
|
||||
int Function(String)? a20,
|
||||
int Function(String)? a21,
|
||||
int Function(String)? a22,
|
||||
int Function(String)? a23,
|
||||
int Function(String)? a24,
|
||||
) : _foo = a1 ??
|
||||
a2 ??
|
||||
a3 ??
|
||||
a4 ??
|
||||
a5 ??
|
||||
a6 ??
|
||||
a7 ??
|
||||
a8 ??
|
||||
a9 ??
|
||||
a10 ??
|
||||
a11 ??
|
||||
a12 ??
|
||||
a13 ??
|
||||
a14 ??
|
||||
a15 ??
|
||||
a16 ??
|
||||
a17 ??
|
||||
a18 ??
|
||||
a19 ??
|
||||
a20 ??
|
||||
a21 ??
|
||||
a22 ??
|
||||
a23 ??
|
||||
a24 ??
|
||||
bar;
|
||||
final int Function(String) _foo;
|
||||
}
|
||||
|
||||
int bar(String o) => int.parse(o);
|
||||
|
||||
void main() {
|
||||
const Foo myValue = Foo(
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
bool.fromEnvironment("baz") ? int.parse : null,
|
||||
);
|
||||
|
||||
print(myValue);
|
||||
print(myValue);
|
||||
print(myValue);
|
||||
print(myValue);
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
class Foo {
|
||||
const Foo(
|
||||
int Function(String)? a1,
|
||||
int Function(String)? a2,
|
||||
int Function(String)? a3,
|
||||
int Function(String)? a4,
|
||||
int Function(String)? a5,
|
||||
int Function(String)? a6,
|
||||
int Function(String)? a7,
|
||||
int Function(String)? a8,
|
||||
int Function(String)? a9,
|
||||
int Function(String)? a10,
|
||||
int Function(String)? a11,
|
||||
int Function(String)? a12,
|
||||
int Function(String)? a13,
|
||||
int Function(String)? a14,
|
||||
int Function(String)? a15,
|
||||
int Function(String)? a16,
|
||||
int Function(String)? a17,
|
||||
int Function(String)? a18,
|
||||
int Function(String)? a19,
|
||||
int Function(String)? a20,
|
||||
int Function(String)? a21,
|
||||
int Function(String)? a22,
|
||||
int Function(String)? a23,
|
||||
int Function(String)? a24,
|
||||
) : _foo = a1 ??
|
||||
a2 ??
|
||||
a3 ??
|
||||
a4 ??
|
||||
a5 ??
|
||||
a6 ??
|
||||
a7 ??
|
||||
a8 ??
|
||||
a9 ??
|
||||
a10 ??
|
||||
a11 ??
|
||||
a12 ??
|
||||
a13 ??
|
||||
a14 ??
|
||||
a15 ??
|
||||
a16 ??
|
||||
a17 ??
|
||||
a18 ??
|
||||
a19 ??
|
||||
a20 ??
|
||||
a21 ??
|
||||
a22 ??
|
||||
a23 ??
|
||||
a24 ??
|
||||
bar;
|
||||
final int Function(String) _foo;
|
||||
}
|
||||
|
||||
int bar(String o) => int.parse(o);
|
||||
void main() {}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
class Foo {
|
||||
const Foo(
|
||||
int Function(String)? a1,
|
||||
int Function(String)? a2,
|
||||
int Function(String)? a3,
|
||||
int Function(String)? a4,
|
||||
int Function(String)? a5,
|
||||
int Function(String)? a6,
|
||||
int Function(String)? a7,
|
||||
int Function(String)? a8,
|
||||
int Function(String)? a9,
|
||||
int Function(String)? a10,
|
||||
int Function(String)? a11,
|
||||
int Function(String)? a12,
|
||||
int Function(String)? a13,
|
||||
int Function(String)? a14,
|
||||
int Function(String)? a15,
|
||||
int Function(String)? a16,
|
||||
int Function(String)? a17,
|
||||
int Function(String)? a18,
|
||||
int Function(String)? a19,
|
||||
int Function(String)? a20,
|
||||
int Function(String)? a21,
|
||||
int Function(String)? a22,
|
||||
int Function(String)? a23,
|
||||
int Function(String)? a24,
|
||||
) : _foo = a1 ??
|
||||
a2 ??
|
||||
a3 ??
|
||||
a4 ??
|
||||
a5 ??
|
||||
a6 ??
|
||||
a7 ??
|
||||
a8 ??
|
||||
a9 ??
|
||||
a10 ??
|
||||
a11 ??
|
||||
a12 ??
|
||||
a13 ??
|
||||
a14 ??
|
||||
a15 ??
|
||||
a16 ??
|
||||
a17 ??
|
||||
a18 ??
|
||||
a19 ??
|
||||
a20 ??
|
||||
a21 ??
|
||||
a22 ??
|
||||
a23 ??
|
||||
a24 ??
|
||||
bar;
|
||||
final int Function(String) _foo;
|
||||
}
|
||||
|
||||
int bar(String o) => int.parse(o);
|
||||
void main() {}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Foo extends core::Object /*hasConstConstructor*/ {
|
||||
final field (core::String) → core::int _foo;
|
||||
const constructor •((core::String) →? core::int a1, (core::String) →? core::int a2, (core::String) →? core::int a3, (core::String) →? core::int a4, (core::String) →? core::int a5, (core::String) →? core::int a6, (core::String) →? core::int a7, (core::String) →? core::int a8, (core::String) →? core::int a9, (core::String) →? core::int a10, (core::String) →? core::int a11, (core::String) →? core::int a12, (core::String) →? core::int a13, (core::String) →? core::int a14, (core::String) →? core::int a15, (core::String) →? core::int a16, (core::String) →? core::int a17, (core::String) →? core::int a18, (core::String) →? core::int a19, (core::String) →? core::int a20, (core::String) →? core::int a21, (core::String) →? core::int a22, (core::String) →? core::int a23, (core::String) →? core::int a24) → self::Foo
|
||||
: self::Foo::_foo = let final (core::String) →? core::int #t1 = let final (core::String) →? core::int #t2 = let final (core::String) →? core::int #t3 = let final (core::String) →? core::int #t4 = let final (core::String) →? core::int #t5 = let final (core::String) →? core::int #t6 = let final (core::String) →? core::int #t7 = let final (core::String) →? core::int #t8 = let final (core::String) →? core::int #t9 = let final (core::String) →? core::int #t10 = let final (core::String) →? core::int #t11 = let final (core::String) →? core::int #t12 = let final (core::String) →? core::int #t13 = let final (core::String) →? core::int #t14 = let final (core::String) →? core::int #t15 = let final (core::String) →? core::int #t16 = let final (core::String) →? core::int #t17 = let final (core::String) →? core::int #t18 = let final (core::String) →? core::int #t19 = let final (core::String) →? core::int #t20 = let final (core::String) →? core::int #t21 = let final (core::String) →? core::int #t22 = let final (core::String) →? core::int #t23 = let final (core::String) →? core::int #t24 = a1 in #t24 == null ?{(core::String) →? core::int} a2 : #t24{(core::String) → core::int} in #t23 == null ?{(core::String) →? core::int} a3 : #t23{(core::String) → core::int} in #t22 == null ?{(core::String) →? core::int} a4 : #t22{(core::String) → core::int} in #t21 == null ?{(core::String) →? core::int} a5 : #t21{(core::String) → core::int} in #t20 == null ?{(core::String) →? core::int} a6 : #t20{(core::String) → core::int} in #t19 == null ?{(core::String) →? core::int} a7 : #t19{(core::String) → core::int} in #t18 == null ?{(core::String) →? core::int} a8 : #t18{(core::String) → core::int} in #t17 == null ?{(core::String) →? core::int} a9 : #t17{(core::String) → core::int} in #t16 == null ?{(core::String) →? core::int} a10 : #t16{(core::String) → core::int} in #t15 == null ?{(core::String) →? core::int} a11 : #t15{(core::String) → core::int} in #t14 == null ?{(core::String) →? core::int} a12 : #t14{(core::String) → core::int} in #t13 == null ?{(core::String) →? core::int} a13 : #t13{(core::String) → core::int} in #t12 == null ?{(core::String) →? core::int} a14 : #t12{(core::String) → core::int} in #t11 == null ?{(core::String) →? core::int} a15 : #t11{(core::String) → core::int} in #t10 == null ?{(core::String) →? core::int} a16 : #t10{(core::String) → core::int} in #t9 == null ?{(core::String) →? core::int} a17 : #t9{(core::String) → core::int} in #t8 == null ?{(core::String) →? core::int} a18 : #t8{(core::String) → core::int} in #t7 == null ?{(core::String) →? core::int} a19 : #t7{(core::String) → core::int} in #t6 == null ?{(core::String) →? core::int} a20 : #t6{(core::String) → core::int} in #t5 == null ?{(core::String) →? core::int} a21 : #t5{(core::String) → core::int} in #t4 == null ?{(core::String) →? core::int} a22 : #t4{(core::String) → core::int} in #t3 == null ?{(core::String) →? core::int} a23 : #t3{(core::String) → core::int} in #t2 == null ?{(core::String) →? core::int} a24 : #t2{(core::String) → core::int} in #t1 == null ?{(core::String) → core::int} #C1 : #t1{(core::String) → core::int}, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method bar(core::String o) → core::int
|
||||
return core::int::parse(o);
|
||||
static method main() → void {
|
||||
const self::Foo myValue = #C101;
|
||||
core::print(#C101);
|
||||
core::print(#C101);
|
||||
core::print(#C101);
|
||||
core::print(#C101);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = static-tearoff self::bar
|
||||
#C2 = "baz"
|
||||
#C3 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C4 = static-tearoff core::int::parse
|
||||
#C5 = null
|
||||
#C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C7 = eval #C6 == null
|
||||
#C8 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C9 = eval #C8 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C10 = eval #C7 ?{(core::String) →? core::int} #C9 : #C6
|
||||
#C11 = eval #C10 == null
|
||||
#C12 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C13 = eval #C12 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C14 = eval #C11 ?{(core::String) →? core::int} #C13 : #C10
|
||||
#C15 = eval #C14 == null
|
||||
#C16 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C17 = eval #C16 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C18 = eval #C15 ?{(core::String) →? core::int} #C17 : #C14
|
||||
#C19 = eval #C18 == null
|
||||
#C20 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C21 = eval #C20 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C22 = eval #C19 ?{(core::String) →? core::int} #C21 : #C18
|
||||
#C23 = eval #C22 == null
|
||||
#C24 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C25 = eval #C24 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C26 = eval #C23 ?{(core::String) →? core::int} #C25 : #C22
|
||||
#C27 = eval #C26 == null
|
||||
#C28 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C29 = eval #C28 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C30 = eval #C27 ?{(core::String) →? core::int} #C29 : #C26
|
||||
#C31 = eval #C30 == null
|
||||
#C32 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C33 = eval #C32 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C34 = eval #C31 ?{(core::String) →? core::int} #C33 : #C30
|
||||
#C35 = eval #C34 == null
|
||||
#C36 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C37 = eval #C36 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C38 = eval #C35 ?{(core::String) →? core::int} #C37 : #C34
|
||||
#C39 = eval #C38 == null
|
||||
#C40 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C41 = eval #C40 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C42 = eval #C39 ?{(core::String) →? core::int} #C41 : #C38
|
||||
#C43 = eval #C42 == null
|
||||
#C44 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C45 = eval #C44 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C46 = eval #C43 ?{(core::String) →? core::int} #C45 : #C42
|
||||
#C47 = eval #C46 == null
|
||||
#C48 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C49 = eval #C48 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C50 = eval #C47 ?{(core::String) →? core::int} #C49 : #C46
|
||||
#C51 = eval #C50 == null
|
||||
#C52 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C53 = eval #C52 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C54 = eval #C51 ?{(core::String) →? core::int} #C53 : #C50
|
||||
#C55 = eval #C54 == null
|
||||
#C56 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C57 = eval #C56 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C58 = eval #C55 ?{(core::String) →? core::int} #C57 : #C54
|
||||
#C59 = eval #C58 == null
|
||||
#C60 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C61 = eval #C60 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C62 = eval #C59 ?{(core::String) →? core::int} #C61 : #C58
|
||||
#C63 = eval #C62 == null
|
||||
#C64 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C65 = eval #C64 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C66 = eval #C63 ?{(core::String) →? core::int} #C65 : #C62
|
||||
#C67 = eval #C66 == null
|
||||
#C68 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C69 = eval #C68 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C70 = eval #C67 ?{(core::String) →? core::int} #C69 : #C66
|
||||
#C71 = eval #C70 == null
|
||||
#C72 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C73 = eval #C72 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C74 = eval #C71 ?{(core::String) →? core::int} #C73 : #C70
|
||||
#C75 = eval #C74 == null
|
||||
#C76 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C77 = eval #C76 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C78 = eval #C75 ?{(core::String) →? core::int} #C77 : #C74
|
||||
#C79 = eval #C78 == null
|
||||
#C80 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C81 = eval #C80 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C82 = eval #C79 ?{(core::String) →? core::int} #C81 : #C78
|
||||
#C83 = eval #C82 == null
|
||||
#C84 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C85 = eval #C84 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C86 = eval #C83 ?{(core::String) →? core::int} #C85 : #C82
|
||||
#C87 = eval #C86 == null
|
||||
#C88 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C89 = eval #C88 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C90 = eval #C87 ?{(core::String) →? core::int} #C89 : #C86
|
||||
#C91 = eval #C90 == null
|
||||
#C92 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C93 = eval #C92 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C94 = eval #C91 ?{(core::String) →? core::int} #C93 : #C90
|
||||
#C95 = eval #C94 == null
|
||||
#C96 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C97 = eval #C96 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C98 = eval #C95 ?{(core::String) →? core::int} #C97 : #C94
|
||||
#C99 = eval #C98 == null
|
||||
#C100 = eval #C99 ?{(core::String) → core::int} #C1 : #C98
|
||||
#C101 = eval self::Foo{_foo:#C100}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:
|
||||
- Foo. (from org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:6:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Foo extends core::Object /*hasConstConstructor*/ {
|
||||
final field (core::String) → core::int _foo;
|
||||
const constructor •((core::String) →? core::int a1, (core::String) →? core::int a2, (core::String) →? core::int a3, (core::String) →? core::int a4, (core::String) →? core::int a5, (core::String) →? core::int a6, (core::String) →? core::int a7, (core::String) →? core::int a8, (core::String) →? core::int a9, (core::String) →? core::int a10, (core::String) →? core::int a11, (core::String) →? core::int a12, (core::String) →? core::int a13, (core::String) →? core::int a14, (core::String) →? core::int a15, (core::String) →? core::int a16, (core::String) →? core::int a17, (core::String) →? core::int a18, (core::String) →? core::int a19, (core::String) →? core::int a20, (core::String) →? core::int a21, (core::String) →? core::int a22, (core::String) →? core::int a23, (core::String) →? core::int a24) → self::Foo
|
||||
: self::Foo::_foo = let final (core::String) →? core::int #t1 = let final (core::String) →? core::int #t2 = let final (core::String) →? core::int #t3 = let final (core::String) →? core::int #t4 = let final (core::String) →? core::int #t5 = let final (core::String) →? core::int #t6 = let final (core::String) →? core::int #t7 = let final (core::String) →? core::int #t8 = let final (core::String) →? core::int #t9 = let final (core::String) →? core::int #t10 = let final (core::String) →? core::int #t11 = let final (core::String) →? core::int #t12 = let final (core::String) →? core::int #t13 = let final (core::String) →? core::int #t14 = let final (core::String) →? core::int #t15 = let final (core::String) →? core::int #t16 = let final (core::String) →? core::int #t17 = let final (core::String) →? core::int #t18 = let final (core::String) →? core::int #t19 = let final (core::String) →? core::int #t20 = let final (core::String) →? core::int #t21 = let final (core::String) →? core::int #t22 = let final (core::String) →? core::int #t23 = let final (core::String) →? core::int #t24 = a1 in #t24 == null ?{(core::String) →? core::int} a2 : #t24{(core::String) → core::int} in #t23 == null ?{(core::String) →? core::int} a3 : #t23{(core::String) → core::int} in #t22 == null ?{(core::String) →? core::int} a4 : #t22{(core::String) → core::int} in #t21 == null ?{(core::String) →? core::int} a5 : #t21{(core::String) → core::int} in #t20 == null ?{(core::String) →? core::int} a6 : #t20{(core::String) → core::int} in #t19 == null ?{(core::String) →? core::int} a7 : #t19{(core::String) → core::int} in #t18 == null ?{(core::String) →? core::int} a8 : #t18{(core::String) → core::int} in #t17 == null ?{(core::String) →? core::int} a9 : #t17{(core::String) → core::int} in #t16 == null ?{(core::String) →? core::int} a10 : #t16{(core::String) → core::int} in #t15 == null ?{(core::String) →? core::int} a11 : #t15{(core::String) → core::int} in #t14 == null ?{(core::String) →? core::int} a12 : #t14{(core::String) → core::int} in #t13 == null ?{(core::String) →? core::int} a13 : #t13{(core::String) → core::int} in #t12 == null ?{(core::String) →? core::int} a14 : #t12{(core::String) → core::int} in #t11 == null ?{(core::String) →? core::int} a15 : #t11{(core::String) → core::int} in #t10 == null ?{(core::String) →? core::int} a16 : #t10{(core::String) → core::int} in #t9 == null ?{(core::String) →? core::int} a17 : #t9{(core::String) → core::int} in #t8 == null ?{(core::String) →? core::int} a18 : #t8{(core::String) → core::int} in #t7 == null ?{(core::String) →? core::int} a19 : #t7{(core::String) → core::int} in #t6 == null ?{(core::String) →? core::int} a20 : #t6{(core::String) → core::int} in #t5 == null ?{(core::String) →? core::int} a21 : #t5{(core::String) → core::int} in #t4 == null ?{(core::String) →? core::int} a22 : #t4{(core::String) → core::int} in #t3 == null ?{(core::String) →? core::int} a23 : #t3{(core::String) → core::int} in #t2 == null ?{(core::String) →? core::int} a24 : #t2{(core::String) → core::int} in #t1 == null ?{(core::String) → core::int} #C1 : #t1{(core::String) → core::int}, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method bar(core::String o) → core::int
|
||||
return core::int::parse(o);
|
||||
static method main() → void {
|
||||
const self::Foo myValue = #C101;
|
||||
core::print(#C101);
|
||||
core::print(#C101);
|
||||
core::print(#C101);
|
||||
core::print(#C101);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = static-tearoff self::bar
|
||||
#C2 = "baz"
|
||||
#C3 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C4 = static-tearoff core::int::parse
|
||||
#C5 = null
|
||||
#C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C7 = eval #C6 == null
|
||||
#C8 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C9 = eval #C8 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C10 = eval #C7 ?{(core::String) →? core::int} #C9 : #C6
|
||||
#C11 = eval #C10 == null
|
||||
#C12 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C13 = eval #C12 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C14 = eval #C11 ?{(core::String) →? core::int} #C13 : #C10
|
||||
#C15 = eval #C14 == null
|
||||
#C16 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C17 = eval #C16 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C18 = eval #C15 ?{(core::String) →? core::int} #C17 : #C14
|
||||
#C19 = eval #C18 == null
|
||||
#C20 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C21 = eval #C20 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C22 = eval #C19 ?{(core::String) →? core::int} #C21 : #C18
|
||||
#C23 = eval #C22 == null
|
||||
#C24 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C25 = eval #C24 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C26 = eval #C23 ?{(core::String) →? core::int} #C25 : #C22
|
||||
#C27 = eval #C26 == null
|
||||
#C28 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C29 = eval #C28 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C30 = eval #C27 ?{(core::String) →? core::int} #C29 : #C26
|
||||
#C31 = eval #C30 == null
|
||||
#C32 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C33 = eval #C32 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C34 = eval #C31 ?{(core::String) →? core::int} #C33 : #C30
|
||||
#C35 = eval #C34 == null
|
||||
#C36 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C37 = eval #C36 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C38 = eval #C35 ?{(core::String) →? core::int} #C37 : #C34
|
||||
#C39 = eval #C38 == null
|
||||
#C40 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C41 = eval #C40 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C42 = eval #C39 ?{(core::String) →? core::int} #C41 : #C38
|
||||
#C43 = eval #C42 == null
|
||||
#C44 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C45 = eval #C44 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C46 = eval #C43 ?{(core::String) →? core::int} #C45 : #C42
|
||||
#C47 = eval #C46 == null
|
||||
#C48 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C49 = eval #C48 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C50 = eval #C47 ?{(core::String) →? core::int} #C49 : #C46
|
||||
#C51 = eval #C50 == null
|
||||
#C52 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C53 = eval #C52 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C54 = eval #C51 ?{(core::String) →? core::int} #C53 : #C50
|
||||
#C55 = eval #C54 == null
|
||||
#C56 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C57 = eval #C56 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C58 = eval #C55 ?{(core::String) →? core::int} #C57 : #C54
|
||||
#C59 = eval #C58 == null
|
||||
#C60 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C61 = eval #C60 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C62 = eval #C59 ?{(core::String) →? core::int} #C61 : #C58
|
||||
#C63 = eval #C62 == null
|
||||
#C64 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C65 = eval #C64 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C66 = eval #C63 ?{(core::String) →? core::int} #C65 : #C62
|
||||
#C67 = eval #C66 == null
|
||||
#C68 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C69 = eval #C68 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C70 = eval #C67 ?{(core::String) →? core::int} #C69 : #C66
|
||||
#C71 = eval #C70 == null
|
||||
#C72 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C73 = eval #C72 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C74 = eval #C71 ?{(core::String) →? core::int} #C73 : #C70
|
||||
#C75 = eval #C74 == null
|
||||
#C76 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C77 = eval #C76 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C78 = eval #C75 ?{(core::String) →? core::int} #C77 : #C74
|
||||
#C79 = eval #C78 == null
|
||||
#C80 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C81 = eval #C80 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C82 = eval #C79 ?{(core::String) →? core::int} #C81 : #C78
|
||||
#C83 = eval #C82 == null
|
||||
#C84 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C85 = eval #C84 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C86 = eval #C83 ?{(core::String) →? core::int} #C85 : #C82
|
||||
#C87 = eval #C86 == null
|
||||
#C88 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C89 = eval #C88 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C90 = eval #C87 ?{(core::String) →? core::int} #C89 : #C86
|
||||
#C91 = eval #C90 == null
|
||||
#C92 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C93 = eval #C92 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C94 = eval #C91 ?{(core::String) →? core::int} #C93 : #C90
|
||||
#C95 = eval #C94 == null
|
||||
#C96 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C97 = eval #C96 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C98 = eval #C95 ?{(core::String) →? core::int} #C97 : #C94
|
||||
#C99 = eval #C98 == null
|
||||
#C100 = eval #C99 ?{(core::String) → core::int} #C1 : #C98
|
||||
#C101 = eval self::Foo{_foo:#C100}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:
|
||||
- Foo. (from org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:6:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Foo extends core::Object /*hasConstConstructor*/ {
|
||||
final field (core::String) → core::int _foo;
|
||||
const constructor •((core::String) →? core::int a1, (core::String) →? core::int a2, (core::String) →? core::int a3, (core::String) →? core::int a4, (core::String) →? core::int a5, (core::String) →? core::int a6, (core::String) →? core::int a7, (core::String) →? core::int a8, (core::String) →? core::int a9, (core::String) →? core::int a10, (core::String) →? core::int a11, (core::String) →? core::int a12, (core::String) →? core::int a13, (core::String) →? core::int a14, (core::String) →? core::int a15, (core::String) →? core::int a16, (core::String) →? core::int a17, (core::String) →? core::int a18, (core::String) →? core::int a19, (core::String) →? core::int a20, (core::String) →? core::int a21, (core::String) →? core::int a22, (core::String) →? core::int a23, (core::String) →? core::int a24) → self::Foo
|
||||
: self::Foo::_foo = let final (core::String) →? core::int #t1 = let final (core::String) →? core::int #t2 = let final (core::String) →? core::int #t3 = let final (core::String) →? core::int #t4 = let final (core::String) →? core::int #t5 = let final (core::String) →? core::int #t6 = let final (core::String) →? core::int #t7 = let final (core::String) →? core::int #t8 = let final (core::String) →? core::int #t9 = let final (core::String) →? core::int #t10 = let final (core::String) →? core::int #t11 = let final (core::String) →? core::int #t12 = let final (core::String) →? core::int #t13 = let final (core::String) →? core::int #t14 = let final (core::String) →? core::int #t15 = let final (core::String) →? core::int #t16 = let final (core::String) →? core::int #t17 = let final (core::String) →? core::int #t18 = let final (core::String) →? core::int #t19 = let final (core::String) →? core::int #t20 = let final (core::String) →? core::int #t21 = let final (core::String) →? core::int #t22 = let final (core::String) →? core::int #t23 = let final (core::String) →? core::int #t24 = a1 in #t24 == null ?{(core::String) →? core::int} a2 : #t24{(core::String) → core::int} in #t23 == null ?{(core::String) →? core::int} a3 : #t23{(core::String) → core::int} in #t22 == null ?{(core::String) →? core::int} a4 : #t22{(core::String) → core::int} in #t21 == null ?{(core::String) →? core::int} a5 : #t21{(core::String) → core::int} in #t20 == null ?{(core::String) →? core::int} a6 : #t20{(core::String) → core::int} in #t19 == null ?{(core::String) →? core::int} a7 : #t19{(core::String) → core::int} in #t18 == null ?{(core::String) →? core::int} a8 : #t18{(core::String) → core::int} in #t17 == null ?{(core::String) →? core::int} a9 : #t17{(core::String) → core::int} in #t16 == null ?{(core::String) →? core::int} a10 : #t16{(core::String) → core::int} in #t15 == null ?{(core::String) →? core::int} a11 : #t15{(core::String) → core::int} in #t14 == null ?{(core::String) →? core::int} a12 : #t14{(core::String) → core::int} in #t13 == null ?{(core::String) →? core::int} a13 : #t13{(core::String) → core::int} in #t12 == null ?{(core::String) →? core::int} a14 : #t12{(core::String) → core::int} in #t11 == null ?{(core::String) →? core::int} a15 : #t11{(core::String) → core::int} in #t10 == null ?{(core::String) →? core::int} a16 : #t10{(core::String) → core::int} in #t9 == null ?{(core::String) →? core::int} a17 : #t9{(core::String) → core::int} in #t8 == null ?{(core::String) →? core::int} a18 : #t8{(core::String) → core::int} in #t7 == null ?{(core::String) →? core::int} a19 : #t7{(core::String) → core::int} in #t6 == null ?{(core::String) →? core::int} a20 : #t6{(core::String) → core::int} in #t5 == null ?{(core::String) →? core::int} a21 : #t5{(core::String) → core::int} in #t4 == null ?{(core::String) →? core::int} a22 : #t4{(core::String) → core::int} in #t3 == null ?{(core::String) →? core::int} a23 : #t3{(core::String) → core::int} in #t2 == null ?{(core::String) →? core::int} a24 : #t2{(core::String) → core::int} in #t1 == null ?{(core::String) → core::int} self::bar : #t1{(core::String) → core::int}, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method bar(core::String o) → core::int
|
||||
;
|
||||
static method main() → void
|
||||
;
|
||||
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated: StaticTearOff @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:55:13 -> StaticTearOffConstant(bar)
|
||||
Extra constant evaluation: evaluated: 145, effectively constant: 1
|
||||
+137
@@ -0,0 +1,137 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Foo extends core::Object /*hasConstConstructor*/ {
|
||||
final field (core::String) → core::int _foo;
|
||||
const constructor •((core::String) →? core::int a1, (core::String) →? core::int a2, (core::String) →? core::int a3, (core::String) →? core::int a4, (core::String) →? core::int a5, (core::String) →? core::int a6, (core::String) →? core::int a7, (core::String) →? core::int a8, (core::String) →? core::int a9, (core::String) →? core::int a10, (core::String) →? core::int a11, (core::String) →? core::int a12, (core::String) →? core::int a13, (core::String) →? core::int a14, (core::String) →? core::int a15, (core::String) →? core::int a16, (core::String) →? core::int a17, (core::String) →? core::int a18, (core::String) →? core::int a19, (core::String) →? core::int a20, (core::String) →? core::int a21, (core::String) →? core::int a22, (core::String) →? core::int a23, (core::String) →? core::int a24) → self::Foo
|
||||
: self::Foo::_foo = let final (core::String) →? core::int #t1 = let final (core::String) →? core::int #t2 = let final (core::String) →? core::int #t3 = let final (core::String) →? core::int #t4 = let final (core::String) →? core::int #t5 = let final (core::String) →? core::int #t6 = let final (core::String) →? core::int #t7 = let final (core::String) →? core::int #t8 = let final (core::String) →? core::int #t9 = let final (core::String) →? core::int #t10 = let final (core::String) →? core::int #t11 = let final (core::String) →? core::int #t12 = let final (core::String) →? core::int #t13 = let final (core::String) →? core::int #t14 = let final (core::String) →? core::int #t15 = let final (core::String) →? core::int #t16 = let final (core::String) →? core::int #t17 = let final (core::String) →? core::int #t18 = let final (core::String) →? core::int #t19 = let final (core::String) →? core::int #t20 = let final (core::String) →? core::int #t21 = let final (core::String) →? core::int #t22 = let final (core::String) →? core::int #t23 = let final (core::String) →? core::int #t24 = a1 in #t24 == null ?{(core::String) →? core::int} a2 : #t24{(core::String) → core::int} in #t23 == null ?{(core::String) →? core::int} a3 : #t23{(core::String) → core::int} in #t22 == null ?{(core::String) →? core::int} a4 : #t22{(core::String) → core::int} in #t21 == null ?{(core::String) →? core::int} a5 : #t21{(core::String) → core::int} in #t20 == null ?{(core::String) →? core::int} a6 : #t20{(core::String) → core::int} in #t19 == null ?{(core::String) →? core::int} a7 : #t19{(core::String) → core::int} in #t18 == null ?{(core::String) →? core::int} a8 : #t18{(core::String) → core::int} in #t17 == null ?{(core::String) →? core::int} a9 : #t17{(core::String) → core::int} in #t16 == null ?{(core::String) →? core::int} a10 : #t16{(core::String) → core::int} in #t15 == null ?{(core::String) →? core::int} a11 : #t15{(core::String) → core::int} in #t14 == null ?{(core::String) →? core::int} a12 : #t14{(core::String) → core::int} in #t13 == null ?{(core::String) →? core::int} a13 : #t13{(core::String) → core::int} in #t12 == null ?{(core::String) →? core::int} a14 : #t12{(core::String) → core::int} in #t11 == null ?{(core::String) →? core::int} a15 : #t11{(core::String) → core::int} in #t10 == null ?{(core::String) →? core::int} a16 : #t10{(core::String) → core::int} in #t9 == null ?{(core::String) →? core::int} a17 : #t9{(core::String) → core::int} in #t8 == null ?{(core::String) →? core::int} a18 : #t8{(core::String) → core::int} in #t7 == null ?{(core::String) →? core::int} a19 : #t7{(core::String) → core::int} in #t6 == null ?{(core::String) →? core::int} a20 : #t6{(core::String) → core::int} in #t5 == null ?{(core::String) →? core::int} a21 : #t5{(core::String) → core::int} in #t4 == null ?{(core::String) →? core::int} a22 : #t4{(core::String) → core::int} in #t3 == null ?{(core::String) →? core::int} a23 : #t3{(core::String) → core::int} in #t2 == null ?{(core::String) →? core::int} a24 : #t2{(core::String) → core::int} in #t1 == null ?{(core::String) → core::int} #C1 : #t1{(core::String) → core::int}, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method bar(core::String o) → core::int
|
||||
return core::int::parse(o);
|
||||
static method main() → void {
|
||||
const self::Foo myValue = #C101;
|
||||
core::print(#C101);
|
||||
core::print(#C101);
|
||||
core::print(#C101);
|
||||
core::print(#C101);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = static-tearoff self::bar
|
||||
#C2 = "baz"
|
||||
#C3 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C4 = static-tearoff core::int::parse
|
||||
#C5 = null
|
||||
#C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C7 = eval #C6 == null
|
||||
#C8 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C9 = eval #C8 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C10 = eval #C7 ?{(core::String) →? core::int} #C9 : #C6
|
||||
#C11 = eval #C10 == null
|
||||
#C12 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C13 = eval #C12 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C14 = eval #C11 ?{(core::String) →? core::int} #C13 : #C10
|
||||
#C15 = eval #C14 == null
|
||||
#C16 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C17 = eval #C16 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C18 = eval #C15 ?{(core::String) →? core::int} #C17 : #C14
|
||||
#C19 = eval #C18 == null
|
||||
#C20 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C21 = eval #C20 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C22 = eval #C19 ?{(core::String) →? core::int} #C21 : #C18
|
||||
#C23 = eval #C22 == null
|
||||
#C24 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C25 = eval #C24 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C26 = eval #C23 ?{(core::String) →? core::int} #C25 : #C22
|
||||
#C27 = eval #C26 == null
|
||||
#C28 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C29 = eval #C28 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C30 = eval #C27 ?{(core::String) →? core::int} #C29 : #C26
|
||||
#C31 = eval #C30 == null
|
||||
#C32 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C33 = eval #C32 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C34 = eval #C31 ?{(core::String) →? core::int} #C33 : #C30
|
||||
#C35 = eval #C34 == null
|
||||
#C36 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C37 = eval #C36 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C38 = eval #C35 ?{(core::String) →? core::int} #C37 : #C34
|
||||
#C39 = eval #C38 == null
|
||||
#C40 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C41 = eval #C40 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C42 = eval #C39 ?{(core::String) →? core::int} #C41 : #C38
|
||||
#C43 = eval #C42 == null
|
||||
#C44 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C45 = eval #C44 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C46 = eval #C43 ?{(core::String) →? core::int} #C45 : #C42
|
||||
#C47 = eval #C46 == null
|
||||
#C48 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C49 = eval #C48 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C50 = eval #C47 ?{(core::String) →? core::int} #C49 : #C46
|
||||
#C51 = eval #C50 == null
|
||||
#C52 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C53 = eval #C52 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C54 = eval #C51 ?{(core::String) →? core::int} #C53 : #C50
|
||||
#C55 = eval #C54 == null
|
||||
#C56 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C57 = eval #C56 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C58 = eval #C55 ?{(core::String) →? core::int} #C57 : #C54
|
||||
#C59 = eval #C58 == null
|
||||
#C60 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C61 = eval #C60 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C62 = eval #C59 ?{(core::String) →? core::int} #C61 : #C58
|
||||
#C63 = eval #C62 == null
|
||||
#C64 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C65 = eval #C64 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C66 = eval #C63 ?{(core::String) →? core::int} #C65 : #C62
|
||||
#C67 = eval #C66 == null
|
||||
#C68 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C69 = eval #C68 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C70 = eval #C67 ?{(core::String) →? core::int} #C69 : #C66
|
||||
#C71 = eval #C70 == null
|
||||
#C72 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C73 = eval #C72 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C74 = eval #C71 ?{(core::String) →? core::int} #C73 : #C70
|
||||
#C75 = eval #C74 == null
|
||||
#C76 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C77 = eval #C76 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C78 = eval #C75 ?{(core::String) →? core::int} #C77 : #C74
|
||||
#C79 = eval #C78 == null
|
||||
#C80 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C81 = eval #C80 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C82 = eval #C79 ?{(core::String) →? core::int} #C81 : #C78
|
||||
#C83 = eval #C82 == null
|
||||
#C84 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C85 = eval #C84 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C86 = eval #C83 ?{(core::String) →? core::int} #C85 : #C82
|
||||
#C87 = eval #C86 == null
|
||||
#C88 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C89 = eval #C88 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C90 = eval #C87 ?{(core::String) →? core::int} #C89 : #C86
|
||||
#C91 = eval #C90 == null
|
||||
#C92 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C93 = eval #C92 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C94 = eval #C91 ?{(core::String) →? core::int} #C93 : #C90
|
||||
#C95 = eval #C94 == null
|
||||
#C96 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C97 = eval #C96 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
|
||||
#C98 = eval #C95 ?{(core::String) →? core::int} #C97 : #C94
|
||||
#C99 = eval #C98 == null
|
||||
#C100 = eval #C99 ?{(core::String) → core::int} #C1 : #C98
|
||||
#C101 = eval self::Foo{_foo:#C100}
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:62:23 -> InstanceConstant(const Foo{Foo._foo: bar})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:89:9 -> InstanceConstant(const Foo{Foo._foo: bar})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:90:9 -> InstanceConstant(const Foo{Foo._foo: bar})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:91:9 -> InstanceConstant(const Foo{Foo._foo: bar})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:92:9 -> InstanceConstant(const Foo{Foo._foo: bar})
|
||||
Extra constant evaluation: evaluated: 155, effectively constant: 5
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:
|
||||
- Foo. (from org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:6:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
|
||||
+59
-57
@@ -2,57 +2,57 @@ library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::List<core::String> original = #C11;
|
||||
static const field core::List<core::String> copy1 = #C11;
|
||||
static const field core::List<core::String> copy2 = #C11;
|
||||
static const field core::List<core::String> copy3 = #C11;
|
||||
static const field core::List<core::String> copy4 = #C11;
|
||||
static const field core::List<core::String> copy5 = #C11;
|
||||
static const field core::List<core::String> copy6 = #C11;
|
||||
static const field core::List<core::String> copy7 = #C11;
|
||||
static const field core::List<core::String> copy8 = #C11;
|
||||
static const field core::List<core::String> copy9 = #C11;
|
||||
static const field core::List<core::String> copy10 = #C11;
|
||||
static const field core::List<core::String> copy11 = #C11;
|
||||
static const field core::List<core::String> copy12 = #C11;
|
||||
static const field core::List<core::String> copy13 = #C11;
|
||||
static const field core::List<core::String> copy14 = #C11;
|
||||
static const field core::List<core::String> copy15 = #C11;
|
||||
static const field core::List<core::String> copy16 = #C11;
|
||||
static const field core::List<core::String> copy17 = #C11;
|
||||
static const field core::List<core::String> copy18 = #C11;
|
||||
static const field core::List<core::String> copy19 = #C11;
|
||||
static const field core::List<core::String> copy20 = #C11;
|
||||
static const field core::List<core::String> copy21 = #C11;
|
||||
static const field core::List<core::String> copy22 = #C11;
|
||||
static const field core::List<core::String> copy23 = #C11;
|
||||
static const field core::List<core::String> copy24 = #C11;
|
||||
static const field core::List<core::String> copy25 = #C11;
|
||||
static const field core::List<core::String> copy26 = #C11;
|
||||
static const field core::List<core::String> copy27 = #C11;
|
||||
static const field core::List<core::String> copy28 = #C11;
|
||||
static const field core::List<core::String> copy29 = #C11;
|
||||
static const field core::List<core::String> copy30 = #C11;
|
||||
static const field core::List<core::String> copy31 = #C11;
|
||||
static const field core::List<core::String> copy32 = #C11;
|
||||
static const field core::List<core::String> copy33 = #C11;
|
||||
static const field core::List<core::String> copy34 = #C11;
|
||||
static const field core::List<core::String> copy35 = #C11;
|
||||
static const field core::List<core::String> copy36 = #C11;
|
||||
static const field core::List<core::String> copy37 = #C11;
|
||||
static const field core::List<core::String> copy38 = #C11;
|
||||
static const field core::List<core::String> copy39 = #C11;
|
||||
static const field core::List<core::String> copy40 = #C11;
|
||||
static const field core::List<core::String> copy41 = #C11;
|
||||
static const field core::List<core::String> copy42 = #C11;
|
||||
static const field core::List<core::String> copy43 = #C11;
|
||||
static const field core::List<core::String> copy44 = #C11;
|
||||
static const field core::List<core::String> copy45 = #C11;
|
||||
static const field core::List<core::String> copy46 = #C11;
|
||||
static const field core::List<core::String> copy47 = #C11;
|
||||
static const field core::List<core::String> copy48 = #C11;
|
||||
static const field core::List<core::String> copy49 = #C11;
|
||||
static const field core::List<core::String> copy50 = #C11;
|
||||
static const field core::List<core::String> original = #C13;
|
||||
static const field core::List<core::String> copy1 = #C13;
|
||||
static const field core::List<core::String> copy2 = #C13;
|
||||
static const field core::List<core::String> copy3 = #C13;
|
||||
static const field core::List<core::String> copy4 = #C13;
|
||||
static const field core::List<core::String> copy5 = #C13;
|
||||
static const field core::List<core::String> copy6 = #C13;
|
||||
static const field core::List<core::String> copy7 = #C13;
|
||||
static const field core::List<core::String> copy8 = #C13;
|
||||
static const field core::List<core::String> copy9 = #C13;
|
||||
static const field core::List<core::String> copy10 = #C13;
|
||||
static const field core::List<core::String> copy11 = #C13;
|
||||
static const field core::List<core::String> copy12 = #C13;
|
||||
static const field core::List<core::String> copy13 = #C13;
|
||||
static const field core::List<core::String> copy14 = #C13;
|
||||
static const field core::List<core::String> copy15 = #C13;
|
||||
static const field core::List<core::String> copy16 = #C13;
|
||||
static const field core::List<core::String> copy17 = #C13;
|
||||
static const field core::List<core::String> copy18 = #C13;
|
||||
static const field core::List<core::String> copy19 = #C13;
|
||||
static const field core::List<core::String> copy20 = #C13;
|
||||
static const field core::List<core::String> copy21 = #C13;
|
||||
static const field core::List<core::String> copy22 = #C13;
|
||||
static const field core::List<core::String> copy23 = #C13;
|
||||
static const field core::List<core::String> copy24 = #C13;
|
||||
static const field core::List<core::String> copy25 = #C13;
|
||||
static const field core::List<core::String> copy26 = #C13;
|
||||
static const field core::List<core::String> copy27 = #C13;
|
||||
static const field core::List<core::String> copy28 = #C13;
|
||||
static const field core::List<core::String> copy29 = #C13;
|
||||
static const field core::List<core::String> copy30 = #C13;
|
||||
static const field core::List<core::String> copy31 = #C13;
|
||||
static const field core::List<core::String> copy32 = #C13;
|
||||
static const field core::List<core::String> copy33 = #C13;
|
||||
static const field core::List<core::String> copy34 = #C13;
|
||||
static const field core::List<core::String> copy35 = #C13;
|
||||
static const field core::List<core::String> copy36 = #C13;
|
||||
static const field core::List<core::String> copy37 = #C13;
|
||||
static const field core::List<core::String> copy38 = #C13;
|
||||
static const field core::List<core::String> copy39 = #C13;
|
||||
static const field core::List<core::String> copy40 = #C13;
|
||||
static const field core::List<core::String> copy41 = #C13;
|
||||
static const field core::List<core::String> copy42 = #C13;
|
||||
static const field core::List<core::String> copy43 = #C13;
|
||||
static const field core::List<core::String> copy44 = #C13;
|
||||
static const field core::List<core::String> copy45 = #C13;
|
||||
static const field core::List<core::String> copy46 = #C13;
|
||||
static const field core::List<core::String> copy47 = #C13;
|
||||
static const field core::List<core::String> copy48 = #C13;
|
||||
static const field core::List<core::String> copy49 = #C13;
|
||||
static const field core::List<core::String> copy50 = #C13;
|
||||
|
||||
constants {
|
||||
#C1 = "lots"
|
||||
@@ -60,10 +60,12 @@ constants {
|
||||
#C3 = "strings"
|
||||
#C4 = <core::String*>[#C1, #C2, #C3]
|
||||
#C5 = "original"
|
||||
#C6 = "that"
|
||||
#C7 = "are"
|
||||
#C8 = "already"
|
||||
#C9 = "constants"
|
||||
#C10 = <core::String*>[#C6, #C7, #C8, #C9]
|
||||
#C11 = eval #C4 + const <dynamic>[const core::String::fromEnvironment(#C5)] + #C10
|
||||
#C6 = eval const core::String::fromEnvironment(#C5)
|
||||
#C7 = eval const <dynamic>[#C6]
|
||||
#C8 = "that"
|
||||
#C9 = "are"
|
||||
#C10 = "already"
|
||||
#C11 = "constants"
|
||||
#C12 = <core::String*>[#C8, #C9, #C10, #C11]
|
||||
#C13 = eval #C4 + #C7 + #C12
|
||||
}
|
||||
|
||||
+59
-57
@@ -2,57 +2,57 @@ library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::List<core::String> original = #C11;
|
||||
static const field core::List<core::String> copy1 = #C11;
|
||||
static const field core::List<core::String> copy2 = #C11;
|
||||
static const field core::List<core::String> copy3 = #C11;
|
||||
static const field core::List<core::String> copy4 = #C11;
|
||||
static const field core::List<core::String> copy5 = #C11;
|
||||
static const field core::List<core::String> copy6 = #C11;
|
||||
static const field core::List<core::String> copy7 = #C11;
|
||||
static const field core::List<core::String> copy8 = #C11;
|
||||
static const field core::List<core::String> copy9 = #C11;
|
||||
static const field core::List<core::String> copy10 = #C11;
|
||||
static const field core::List<core::String> copy11 = #C11;
|
||||
static const field core::List<core::String> copy12 = #C11;
|
||||
static const field core::List<core::String> copy13 = #C11;
|
||||
static const field core::List<core::String> copy14 = #C11;
|
||||
static const field core::List<core::String> copy15 = #C11;
|
||||
static const field core::List<core::String> copy16 = #C11;
|
||||
static const field core::List<core::String> copy17 = #C11;
|
||||
static const field core::List<core::String> copy18 = #C11;
|
||||
static const field core::List<core::String> copy19 = #C11;
|
||||
static const field core::List<core::String> copy20 = #C11;
|
||||
static const field core::List<core::String> copy21 = #C11;
|
||||
static const field core::List<core::String> copy22 = #C11;
|
||||
static const field core::List<core::String> copy23 = #C11;
|
||||
static const field core::List<core::String> copy24 = #C11;
|
||||
static const field core::List<core::String> copy25 = #C11;
|
||||
static const field core::List<core::String> copy26 = #C11;
|
||||
static const field core::List<core::String> copy27 = #C11;
|
||||
static const field core::List<core::String> copy28 = #C11;
|
||||
static const field core::List<core::String> copy29 = #C11;
|
||||
static const field core::List<core::String> copy30 = #C11;
|
||||
static const field core::List<core::String> copy31 = #C11;
|
||||
static const field core::List<core::String> copy32 = #C11;
|
||||
static const field core::List<core::String> copy33 = #C11;
|
||||
static const field core::List<core::String> copy34 = #C11;
|
||||
static const field core::List<core::String> copy35 = #C11;
|
||||
static const field core::List<core::String> copy36 = #C11;
|
||||
static const field core::List<core::String> copy37 = #C11;
|
||||
static const field core::List<core::String> copy38 = #C11;
|
||||
static const field core::List<core::String> copy39 = #C11;
|
||||
static const field core::List<core::String> copy40 = #C11;
|
||||
static const field core::List<core::String> copy41 = #C11;
|
||||
static const field core::List<core::String> copy42 = #C11;
|
||||
static const field core::List<core::String> copy43 = #C11;
|
||||
static const field core::List<core::String> copy44 = #C11;
|
||||
static const field core::List<core::String> copy45 = #C11;
|
||||
static const field core::List<core::String> copy46 = #C11;
|
||||
static const field core::List<core::String> copy47 = #C11;
|
||||
static const field core::List<core::String> copy48 = #C11;
|
||||
static const field core::List<core::String> copy49 = #C11;
|
||||
static const field core::List<core::String> copy50 = #C11;
|
||||
static const field core::List<core::String> original = #C13;
|
||||
static const field core::List<core::String> copy1 = #C13;
|
||||
static const field core::List<core::String> copy2 = #C13;
|
||||
static const field core::List<core::String> copy3 = #C13;
|
||||
static const field core::List<core::String> copy4 = #C13;
|
||||
static const field core::List<core::String> copy5 = #C13;
|
||||
static const field core::List<core::String> copy6 = #C13;
|
||||
static const field core::List<core::String> copy7 = #C13;
|
||||
static const field core::List<core::String> copy8 = #C13;
|
||||
static const field core::List<core::String> copy9 = #C13;
|
||||
static const field core::List<core::String> copy10 = #C13;
|
||||
static const field core::List<core::String> copy11 = #C13;
|
||||
static const field core::List<core::String> copy12 = #C13;
|
||||
static const field core::List<core::String> copy13 = #C13;
|
||||
static const field core::List<core::String> copy14 = #C13;
|
||||
static const field core::List<core::String> copy15 = #C13;
|
||||
static const field core::List<core::String> copy16 = #C13;
|
||||
static const field core::List<core::String> copy17 = #C13;
|
||||
static const field core::List<core::String> copy18 = #C13;
|
||||
static const field core::List<core::String> copy19 = #C13;
|
||||
static const field core::List<core::String> copy20 = #C13;
|
||||
static const field core::List<core::String> copy21 = #C13;
|
||||
static const field core::List<core::String> copy22 = #C13;
|
||||
static const field core::List<core::String> copy23 = #C13;
|
||||
static const field core::List<core::String> copy24 = #C13;
|
||||
static const field core::List<core::String> copy25 = #C13;
|
||||
static const field core::List<core::String> copy26 = #C13;
|
||||
static const field core::List<core::String> copy27 = #C13;
|
||||
static const field core::List<core::String> copy28 = #C13;
|
||||
static const field core::List<core::String> copy29 = #C13;
|
||||
static const field core::List<core::String> copy30 = #C13;
|
||||
static const field core::List<core::String> copy31 = #C13;
|
||||
static const field core::List<core::String> copy32 = #C13;
|
||||
static const field core::List<core::String> copy33 = #C13;
|
||||
static const field core::List<core::String> copy34 = #C13;
|
||||
static const field core::List<core::String> copy35 = #C13;
|
||||
static const field core::List<core::String> copy36 = #C13;
|
||||
static const field core::List<core::String> copy37 = #C13;
|
||||
static const field core::List<core::String> copy38 = #C13;
|
||||
static const field core::List<core::String> copy39 = #C13;
|
||||
static const field core::List<core::String> copy40 = #C13;
|
||||
static const field core::List<core::String> copy41 = #C13;
|
||||
static const field core::List<core::String> copy42 = #C13;
|
||||
static const field core::List<core::String> copy43 = #C13;
|
||||
static const field core::List<core::String> copy44 = #C13;
|
||||
static const field core::List<core::String> copy45 = #C13;
|
||||
static const field core::List<core::String> copy46 = #C13;
|
||||
static const field core::List<core::String> copy47 = #C13;
|
||||
static const field core::List<core::String> copy48 = #C13;
|
||||
static const field core::List<core::String> copy49 = #C13;
|
||||
static const field core::List<core::String> copy50 = #C13;
|
||||
|
||||
constants {
|
||||
#C1 = "lots"
|
||||
@@ -60,10 +60,12 @@ constants {
|
||||
#C3 = "strings"
|
||||
#C4 = <core::String*>[#C1, #C2, #C3]
|
||||
#C5 = "original"
|
||||
#C6 = "that"
|
||||
#C7 = "are"
|
||||
#C8 = "already"
|
||||
#C9 = "constants"
|
||||
#C10 = <core::String*>[#C6, #C7, #C8, #C9]
|
||||
#C11 = eval #C4 + const <dynamic>[const core::String::fromEnvironment(#C5)] + #C10
|
||||
#C6 = eval const core::String::fromEnvironment(#C5)
|
||||
#C7 = eval const <dynamic>[#C6]
|
||||
#C8 = "that"
|
||||
#C9 = "are"
|
||||
#C10 = "already"
|
||||
#C11 = "constants"
|
||||
#C12 = <core::String*>[#C8, #C9, #C10, #C11]
|
||||
#C13 = eval #C4 + #C7 + #C12
|
||||
}
|
||||
|
||||
+59
-57
@@ -2,57 +2,57 @@ library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::List<core::String> original = #C11;
|
||||
static const field core::List<core::String> copy1 = #C11;
|
||||
static const field core::List<core::String> copy2 = #C11;
|
||||
static const field core::List<core::String> copy3 = #C11;
|
||||
static const field core::List<core::String> copy4 = #C11;
|
||||
static const field core::List<core::String> copy5 = #C11;
|
||||
static const field core::List<core::String> copy6 = #C11;
|
||||
static const field core::List<core::String> copy7 = #C11;
|
||||
static const field core::List<core::String> copy8 = #C11;
|
||||
static const field core::List<core::String> copy9 = #C11;
|
||||
static const field core::List<core::String> copy10 = #C11;
|
||||
static const field core::List<core::String> copy11 = #C11;
|
||||
static const field core::List<core::String> copy12 = #C11;
|
||||
static const field core::List<core::String> copy13 = #C11;
|
||||
static const field core::List<core::String> copy14 = #C11;
|
||||
static const field core::List<core::String> copy15 = #C11;
|
||||
static const field core::List<core::String> copy16 = #C11;
|
||||
static const field core::List<core::String> copy17 = #C11;
|
||||
static const field core::List<core::String> copy18 = #C11;
|
||||
static const field core::List<core::String> copy19 = #C11;
|
||||
static const field core::List<core::String> copy20 = #C11;
|
||||
static const field core::List<core::String> copy21 = #C11;
|
||||
static const field core::List<core::String> copy22 = #C11;
|
||||
static const field core::List<core::String> copy23 = #C11;
|
||||
static const field core::List<core::String> copy24 = #C11;
|
||||
static const field core::List<core::String> copy25 = #C11;
|
||||
static const field core::List<core::String> copy26 = #C11;
|
||||
static const field core::List<core::String> copy27 = #C11;
|
||||
static const field core::List<core::String> copy28 = #C11;
|
||||
static const field core::List<core::String> copy29 = #C11;
|
||||
static const field core::List<core::String> copy30 = #C11;
|
||||
static const field core::List<core::String> copy31 = #C11;
|
||||
static const field core::List<core::String> copy32 = #C11;
|
||||
static const field core::List<core::String> copy33 = #C11;
|
||||
static const field core::List<core::String> copy34 = #C11;
|
||||
static const field core::List<core::String> copy35 = #C11;
|
||||
static const field core::List<core::String> copy36 = #C11;
|
||||
static const field core::List<core::String> copy37 = #C11;
|
||||
static const field core::List<core::String> copy38 = #C11;
|
||||
static const field core::List<core::String> copy39 = #C11;
|
||||
static const field core::List<core::String> copy40 = #C11;
|
||||
static const field core::List<core::String> copy41 = #C11;
|
||||
static const field core::List<core::String> copy42 = #C11;
|
||||
static const field core::List<core::String> copy43 = #C11;
|
||||
static const field core::List<core::String> copy44 = #C11;
|
||||
static const field core::List<core::String> copy45 = #C11;
|
||||
static const field core::List<core::String> copy46 = #C11;
|
||||
static const field core::List<core::String> copy47 = #C11;
|
||||
static const field core::List<core::String> copy48 = #C11;
|
||||
static const field core::List<core::String> copy49 = #C11;
|
||||
static const field core::List<core::String> copy50 = #C11;
|
||||
static const field core::List<core::String> original = #C13;
|
||||
static const field core::List<core::String> copy1 = #C13;
|
||||
static const field core::List<core::String> copy2 = #C13;
|
||||
static const field core::List<core::String> copy3 = #C13;
|
||||
static const field core::List<core::String> copy4 = #C13;
|
||||
static const field core::List<core::String> copy5 = #C13;
|
||||
static const field core::List<core::String> copy6 = #C13;
|
||||
static const field core::List<core::String> copy7 = #C13;
|
||||
static const field core::List<core::String> copy8 = #C13;
|
||||
static const field core::List<core::String> copy9 = #C13;
|
||||
static const field core::List<core::String> copy10 = #C13;
|
||||
static const field core::List<core::String> copy11 = #C13;
|
||||
static const field core::List<core::String> copy12 = #C13;
|
||||
static const field core::List<core::String> copy13 = #C13;
|
||||
static const field core::List<core::String> copy14 = #C13;
|
||||
static const field core::List<core::String> copy15 = #C13;
|
||||
static const field core::List<core::String> copy16 = #C13;
|
||||
static const field core::List<core::String> copy17 = #C13;
|
||||
static const field core::List<core::String> copy18 = #C13;
|
||||
static const field core::List<core::String> copy19 = #C13;
|
||||
static const field core::List<core::String> copy20 = #C13;
|
||||
static const field core::List<core::String> copy21 = #C13;
|
||||
static const field core::List<core::String> copy22 = #C13;
|
||||
static const field core::List<core::String> copy23 = #C13;
|
||||
static const field core::List<core::String> copy24 = #C13;
|
||||
static const field core::List<core::String> copy25 = #C13;
|
||||
static const field core::List<core::String> copy26 = #C13;
|
||||
static const field core::List<core::String> copy27 = #C13;
|
||||
static const field core::List<core::String> copy28 = #C13;
|
||||
static const field core::List<core::String> copy29 = #C13;
|
||||
static const field core::List<core::String> copy30 = #C13;
|
||||
static const field core::List<core::String> copy31 = #C13;
|
||||
static const field core::List<core::String> copy32 = #C13;
|
||||
static const field core::List<core::String> copy33 = #C13;
|
||||
static const field core::List<core::String> copy34 = #C13;
|
||||
static const field core::List<core::String> copy35 = #C13;
|
||||
static const field core::List<core::String> copy36 = #C13;
|
||||
static const field core::List<core::String> copy37 = #C13;
|
||||
static const field core::List<core::String> copy38 = #C13;
|
||||
static const field core::List<core::String> copy39 = #C13;
|
||||
static const field core::List<core::String> copy40 = #C13;
|
||||
static const field core::List<core::String> copy41 = #C13;
|
||||
static const field core::List<core::String> copy42 = #C13;
|
||||
static const field core::List<core::String> copy43 = #C13;
|
||||
static const field core::List<core::String> copy44 = #C13;
|
||||
static const field core::List<core::String> copy45 = #C13;
|
||||
static const field core::List<core::String> copy46 = #C13;
|
||||
static const field core::List<core::String> copy47 = #C13;
|
||||
static const field core::List<core::String> copy48 = #C13;
|
||||
static const field core::List<core::String> copy49 = #C13;
|
||||
static const field core::List<core::String> copy50 = #C13;
|
||||
|
||||
constants {
|
||||
#C1 = "lots"
|
||||
@@ -60,12 +60,14 @@ constants {
|
||||
#C3 = "strings"
|
||||
#C4 = <core::String*>[#C1, #C2, #C3]
|
||||
#C5 = "original"
|
||||
#C6 = "that"
|
||||
#C7 = "are"
|
||||
#C8 = "already"
|
||||
#C9 = "constants"
|
||||
#C10 = <core::String*>[#C6, #C7, #C8, #C9]
|
||||
#C11 = eval #C4 + const <dynamic>[const core::String::fromEnvironment(#C5)] + #C10
|
||||
#C6 = eval const core::String::fromEnvironment(#C5)
|
||||
#C7 = eval const <dynamic>[#C6]
|
||||
#C8 = "that"
|
||||
#C9 = "are"
|
||||
#C10 = "already"
|
||||
#C11 = "constants"
|
||||
#C12 = <core::String*>[#C8, #C9, #C10, #C11]
|
||||
#C13 = eval #C4 + #C7 + #C12
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
|
||||
+13
-12
@@ -3,17 +3,17 @@ import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::int foo = #C1;
|
||||
static const field core::String bar = #C6;
|
||||
static const field core::bool baz = #C7;
|
||||
static const field core::Symbol blaSymbol = #C8;
|
||||
static const field core::String bar = #C7;
|
||||
static const field core::bool baz = #C8;
|
||||
static const field core::Symbol blaSymbol = #C9;
|
||||
static method main() → dynamic {
|
||||
self::_x();
|
||||
#C10;
|
||||
core::print(#C6);
|
||||
#C11;
|
||||
core::print(#C7);
|
||||
}
|
||||
static method _x() → void {
|
||||
core::print(#C1);
|
||||
core::print(#C6);
|
||||
core::print(#C7);
|
||||
}
|
||||
|
||||
constants {
|
||||
@@ -21,10 +21,11 @@ constants {
|
||||
#C2 = "hello "
|
||||
#C3 = "baz"
|
||||
#C4 = "world"
|
||||
#C5 = "!"
|
||||
#C6 = eval "${#C2}${const core::String::fromEnvironment(#C3, defaultValue: #C4)}${#C5}"
|
||||
#C7 = true
|
||||
#C8 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
|
||||
#C9 = "foo"
|
||||
#C10 = eval const core::bool::fromEnvironment(#C9)
|
||||
#C5 = eval const core::String::fromEnvironment(#C3, defaultValue: #C4)
|
||||
#C6 = "!"
|
||||
#C7 = eval "${#C2}${#C5}${#C6}"
|
||||
#C8 = true
|
||||
#C9 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
|
||||
#C10 = "foo"
|
||||
#C11 = eval const core::bool::fromEnvironment(#C10)
|
||||
}
|
||||
|
||||
+13
-12
@@ -3,17 +3,17 @@ import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::int foo = #C1;
|
||||
static const field core::String bar = #C6;
|
||||
static const field core::bool baz = #C7;
|
||||
static const field core::Symbol blaSymbol = #C8;
|
||||
static const field core::String bar = #C7;
|
||||
static const field core::bool baz = #C8;
|
||||
static const field core::Symbol blaSymbol = #C9;
|
||||
static method main() → dynamic {
|
||||
self::_x();
|
||||
#C10;
|
||||
core::print(#C6);
|
||||
#C11;
|
||||
core::print(#C7);
|
||||
}
|
||||
static method _x() → void {
|
||||
core::print(#C1);
|
||||
core::print(#C6);
|
||||
core::print(#C7);
|
||||
}
|
||||
|
||||
constants {
|
||||
@@ -21,10 +21,11 @@ constants {
|
||||
#C2 = "hello "
|
||||
#C3 = "baz"
|
||||
#C4 = "world"
|
||||
#C5 = "!"
|
||||
#C6 = eval "${#C2}${const core::String::fromEnvironment(#C3, defaultValue: #C4)}${#C5}"
|
||||
#C7 = true
|
||||
#C8 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
|
||||
#C9 = "foo"
|
||||
#C10 = eval const core::bool::fromEnvironment(#C9)
|
||||
#C5 = eval const core::String::fromEnvironment(#C3, defaultValue: #C4)
|
||||
#C6 = "!"
|
||||
#C7 = eval "${#C2}${#C5}${#C6}"
|
||||
#C8 = true
|
||||
#C9 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
|
||||
#C10 = "foo"
|
||||
#C11 = eval const core::bool::fromEnvironment(#C10)
|
||||
}
|
||||
|
||||
+15
-15
@@ -3,17 +3,17 @@ import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::int foo = #C1;
|
||||
static const field core::String bar = #C6;
|
||||
static const field core::bool baz = #C7;
|
||||
static const field core::Symbol blaSymbol = #C8;
|
||||
static const field core::String bar = #C7;
|
||||
static const field core::bool baz = #C8;
|
||||
static const field core::Symbol blaSymbol = #C9;
|
||||
static method main() → dynamic {
|
||||
self::_x();
|
||||
#C10;
|
||||
core::print(#C11);
|
||||
#C11;
|
||||
core::print(#C7);
|
||||
}
|
||||
static method _x() → void {
|
||||
core::print(#C1);
|
||||
core::print(#C11);
|
||||
core::print(#C7);
|
||||
}
|
||||
|
||||
constants {
|
||||
@@ -21,18 +21,18 @@ constants {
|
||||
#C2 = "hello "
|
||||
#C3 = "baz"
|
||||
#C4 = "world"
|
||||
#C5 = "!"
|
||||
#C6 = eval "${#C2}${const core::String::fromEnvironment(#C3, defaultValue: #C4)}${#C5}"
|
||||
#C7 = true
|
||||
#C8 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
|
||||
#C9 = "foo"
|
||||
#C10 = eval const core::bool::fromEnvironment(#C9)
|
||||
#C11 = eval "${#C2}${const core::String::fromEnvironment(#C3, defaultValue: #C4)}${#C5}"
|
||||
#C5 = eval const core::String::fromEnvironment(#C3, defaultValue: #C4)
|
||||
#C6 = "!"
|
||||
#C7 = eval "${#C2}${#C5}${#C6}"
|
||||
#C8 = true
|
||||
#C9 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
|
||||
#C10 = "foo"
|
||||
#C11 = eval const core::bool::fromEnvironment(#C10)
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:13:9 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:6:18 -> StringConstant("hello world!")
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:6:18 -> StringConstant("hello world!")
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:14:9 -> StringConstant("hello world!")
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:19:9 -> StringConstant("hello world!")
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:6:18 -> StringConstant("hello world!")
|
||||
Extra constant evaluation: evaluated: 8, effectively constant: 4
|
||||
|
||||
+139
-109
@@ -56,9 +56,9 @@ typedef F = (core::int, {named: core::int}) → core::int;
|
||||
class Foo<E extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
final field core::bool saved;
|
||||
final field core::bool saved2;
|
||||
field core::bool initialized = #C3;
|
||||
field core::bool initialized = #C4;
|
||||
final field self::Foo::E% value;
|
||||
const constructor •(self::Foo::E% value, {core::bool saved2 = #C4, core::bool x = #C5}) → self::Foo<self::Foo::E%>
|
||||
const constructor •(self::Foo::E% value, {core::bool saved2 = #C5, core::bool x = #C6}) → self::Foo<self::Foo::E%>
|
||||
: self::Foo::value = value, self::Foo::saved2 = saved2, self::Foo::saved = x, super core::Object::•()
|
||||
;
|
||||
}
|
||||
@@ -108,136 +108,166 @@ class ConstClassWithF extends core::Object /*hasConstConstructor*/ {
|
||||
: self::ConstClassWithF::foo = foo, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static const field core::bool barFromEnv = #C6;
|
||||
static const field core::bool barFromEnv = #C3;
|
||||
static const field core::bool hasBarEnv = #C7;
|
||||
static const field core::bool? barFromEnvOrNull0 = #C10;
|
||||
static const field core::bool barFromEnvOrNull = #C11;
|
||||
static const field core::bool notBarFromEnvOrNull = #C12;
|
||||
static const field core::bool conditionalOnNull = #C14;
|
||||
static const field core::bool nullAwareOnNull = #C15;
|
||||
static const field core::bool andOnNull = #C16;
|
||||
static const field core::bool andOnNull2 = #C11;
|
||||
static const field core::bool orOnNull = #C17;
|
||||
static const field core::bool orOnNull2 = #C18;
|
||||
static const field core::bool orOnNull3 = #C8;
|
||||
static const field core::bool orOnNull4 = #C11;
|
||||
static const field core::bool? barFromEnvOrNull0 = #C11;
|
||||
static const field core::bool barFromEnvOrNull = #C13;
|
||||
static const field core::bool notBarFromEnvOrNull = #C14;
|
||||
static const field core::bool conditionalOnNull = #C16;
|
||||
static const field core::bool nullAwareOnNull = #C18;
|
||||
static const field core::bool andOnNull = #C19;
|
||||
static const field core::bool andOnNull2 = #C13;
|
||||
static const field core::bool orOnNull = #C20;
|
||||
static const field core::bool orOnNull2 = #C21;
|
||||
static const field core::bool orOnNull3 = #C9;
|
||||
static const field core::bool orOnNull4 = #C13;
|
||||
static const field core::int fromDeferredLib = invalid-expression "'lib' can't be used in a constant expression because it's marked as 'deferred' which means it isn't available until loaded.";
|
||||
static const field self::Foo<core::int> x = #C20;
|
||||
static const field core::bool? y = #C8;
|
||||
static const field core::bool z = #C13;
|
||||
static const field core::Object maybeInt = #C21;
|
||||
static const field core::bool isItInt = #C22;
|
||||
static const field core::Object maybeInt2 = #C8;
|
||||
static const field core::bool isItInt2 = #C13;
|
||||
static const field core::int? maybeInt3 = #C9;
|
||||
static const field core::bool isItInt3 = #C13;
|
||||
static const field dynamic listOfNull = #C23;
|
||||
static const field core::bool isListOfNull = #C8;
|
||||
static const field dynamic listOfInt = #C24;
|
||||
static const field core::bool isListOfInt = #C8;
|
||||
static const field core::bool isList = #C8;
|
||||
static const field dynamic setOfInt = #C25;
|
||||
static const field core::bool isSetOfInt = #C8;
|
||||
static const field dynamic mapOfInt = #C26;
|
||||
static const field core::bool isMapOfInt = #C8;
|
||||
static const field dynamic listOfListOfInt = #C27;
|
||||
static const field core::bool isListOfListOfInt = #C8;
|
||||
static const field dynamic setOfSetOfInt = #C28;
|
||||
static const field core::bool isSetOfSetOfInt = #C8;
|
||||
static const field dynamic mapOfMapOfInt1 = #C29;
|
||||
static const field dynamic mapOfMapOfInt2 = #C30;
|
||||
static const field core::bool isMapOfMapOfInt1 = #C8;
|
||||
static const field core::bool isMapOfMapOfInt2 = #C8;
|
||||
static const field core::Symbol symbolWithUnevaluatedParameter = #C31;
|
||||
static const field core::Symbol symbolWithInvalidName = #C32;
|
||||
static const field self::Class<self::B>? c0 = #C34;
|
||||
static const field self::Foo<core::int> x = #C23;
|
||||
static const field core::bool? y = #C9;
|
||||
static const field core::bool z = #C15;
|
||||
static const field core::Object maybeInt = #C25;
|
||||
static const field core::bool isItInt = #C27;
|
||||
static const field core::Object maybeInt2 = #C9;
|
||||
static const field core::bool isItInt2 = #C15;
|
||||
static const field core::int? maybeInt3 = #C10;
|
||||
static const field core::bool isItInt3 = #C15;
|
||||
static const field dynamic listOfNull = #C28;
|
||||
static const field core::bool isListOfNull = #C9;
|
||||
static const field dynamic listOfInt = #C29;
|
||||
static const field core::bool isListOfInt = #C9;
|
||||
static const field core::bool isList = #C9;
|
||||
static const field dynamic setOfInt = #C30;
|
||||
static const field core::bool isSetOfInt = #C9;
|
||||
static const field dynamic mapOfInt = #C31;
|
||||
static const field core::bool isMapOfInt = #C9;
|
||||
static const field dynamic listOfListOfInt = #C32;
|
||||
static const field core::bool isListOfListOfInt = #C9;
|
||||
static const field dynamic setOfSetOfInt = #C33;
|
||||
static const field core::bool isSetOfSetOfInt = #C9;
|
||||
static const field dynamic mapOfMapOfInt1 = #C34;
|
||||
static const field dynamic mapOfMapOfInt2 = #C35;
|
||||
static const field core::bool isMapOfMapOfInt1 = #C9;
|
||||
static const field core::bool isMapOfMapOfInt2 = #C9;
|
||||
static const field core::Symbol symbolWithUnevaluatedParameter = #C37;
|
||||
static const field core::Symbol symbolWithInvalidName = #C38;
|
||||
static const field self::Class<self::B>? c0 = #C44;
|
||||
static const field self::Class<self::A>? c1 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
|
||||
- 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
|
||||
const Class.method(T t) : this(-t);
|
||||
^";
|
||||
static const field self::Subclass<self::B>? c2 = #C35;
|
||||
static const field self::Class<self::A>? c3 = #C36;
|
||||
static const field self::Class<self::B>? c4 = #C37;
|
||||
static const field self::Subclass<self::A>? c5 = #C38;
|
||||
static const field self::Subclass<self::B>? c6 = #C39;
|
||||
static const field core::Type f = #C40;
|
||||
static field self::ConstClassWithF constClassWithF1 = #C42;
|
||||
static const field self::ConstClassWithF constClassWithF2 = #C42;
|
||||
static const field core::bool unevaluatedBool = #C43;
|
||||
static const field core::bool notUnevaluatedBool = #C44;
|
||||
static const field core::bool? unevaluatedBoolOrNull = #C45;
|
||||
static const field core::bool unevaluatedBoolNotNull = #C46;
|
||||
static method procedure(core::int i, {core::int named = #C9}) → core::int
|
||||
static const field self::Subclass<self::B>? c2 = #C49;
|
||||
static const field self::Class<self::A>? c3 = #C53;
|
||||
static const field self::Class<self::B>? c4 = #C58;
|
||||
static const field self::Subclass<self::A>? c5 = #C63;
|
||||
static const field self::Subclass<self::B>? c6 = #C68;
|
||||
static const field core::Type f = #C69;
|
||||
static field self::ConstClassWithF constClassWithF1 = #C71;
|
||||
static const field self::ConstClassWithF constClassWithF2 = #C71;
|
||||
static const field core::bool unevaluatedBool = #C72;
|
||||
static const field core::bool notUnevaluatedBool = #C73;
|
||||
static const field core::bool? unevaluatedBoolOrNull = #C75;
|
||||
static const field core::bool unevaluatedBoolNotNull = #C76;
|
||||
static method procedure(core::int i, {core::int named = #C10}) → core::int
|
||||
return i;
|
||||
static method main() → dynamic {
|
||||
core::print(#C34);
|
||||
core::print(#C44);
|
||||
core::print(invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
|
||||
- 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
|
||||
const Class.method(T t) : this(-t);
|
||||
^");
|
||||
core::print(#C35);
|
||||
core::print(#C36);
|
||||
core::print(#C37);
|
||||
core::print(#C38);
|
||||
core::print(#C39);
|
||||
core::print(#C20);
|
||||
core::print(#C20.{self::Foo::saved}{core::bool});
|
||||
core::print(#C20.{self::Foo::value}{core::int});
|
||||
core::print(#C49);
|
||||
core::print(#C53);
|
||||
core::print(#C58);
|
||||
core::print(#C63);
|
||||
core::print(#C68);
|
||||
core::print(#C23);
|
||||
core::print(#C23.{self::Foo::saved}{core::bool});
|
||||
core::print(#C23.{self::Foo::value}{core::int});
|
||||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::int x = #C19;
|
||||
static const field core::int x = #C22;
|
||||
|
||||
constants {
|
||||
#C1 = "foo"
|
||||
#C2 = "bar"
|
||||
#C3 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
|
||||
#C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
|
||||
#C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
|
||||
#C6 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C3 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
|
||||
#C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
|
||||
#C6 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
|
||||
#C7 = eval const core::bool::hasEnvironment(#C2)
|
||||
#C8 = true
|
||||
#C9 = null
|
||||
#C10 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9
|
||||
#C11 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
|
||||
#C12 = eval !const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
|
||||
#C13 = false
|
||||
#C14 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) ?{core::bool} #C8 : #C13
|
||||
#C15 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) == null ?{core::bool} #C8 : const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
|
||||
#C16 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) && #C8
|
||||
#C17 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C8
|
||||
#C18 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C13
|
||||
#C19 = 42
|
||||
#C20 = eval self::Foo<core::int*>{saved:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), saved2:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), initialized:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), value:#C19}
|
||||
#C21 = eval const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8
|
||||
#C22 = eval (const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8) is{ForNonNullableByDefault} core::int ?{core::bool} #C8 : #C13
|
||||
#C23 = <Null>[#C9]
|
||||
#C24 = <core::int*>[#C19]
|
||||
#C25 = <core::int*>{#C19}
|
||||
#C26 = <core::int*, core::int*>{#C19:#C19)
|
||||
#C27 = <core::List<core::int*>*>[#C24]
|
||||
#C28 = <core::Set<core::int*>*>{#C25}
|
||||
#C29 = <core::Map<core::int*, core::int*>*, core::int*>{#C26:#C19)
|
||||
#C30 = <core::int*, core::Map<core::int*, core::int*>*>{#C19:#C26)
|
||||
#C31 = eval const _in::Symbol::•(const core::String::fromEnvironment(#C1))
|
||||
#C32 = #42
|
||||
#C33 = "x"
|
||||
#C34 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C35 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C36 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::A>?} #C9 : self::Class<self::A*>{self::A{}}
|
||||
#C37 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C38 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::A>?} #C9 : self::Subclass<self::A*>{(self::A{}) as{ForNonNullableByDefault} self::A*}
|
||||
#C39 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C40 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
|
||||
#C41 = static-tearoff self::procedure
|
||||
#C42 = self::ConstClassWithF {foo:#C41}
|
||||
#C43 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C44 = eval !const core::bool::fromEnvironment(#C1)
|
||||
#C45 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9
|
||||
#C46 = eval (const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9)!
|
||||
#C8 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C9 = true
|
||||
#C10 = null
|
||||
#C11 = eval #C8 ?{core::bool?} #C9 : #C10
|
||||
#C12 = eval #C11!
|
||||
#C13 = eval const core::bool::fromEnvironment(#C2, defaultValue: #C12)
|
||||
#C14 = eval !#C13
|
||||
#C15 = false
|
||||
#C16 = eval #C13 ?{core::bool} #C9 : #C15
|
||||
#C17 = eval #C13 == null
|
||||
#C18 = eval #C17 ?{core::bool} #C9 : #C13
|
||||
#C19 = eval #C13 && #C9
|
||||
#C20 = eval #C13 || #C9
|
||||
#C21 = eval #C13 || #C15
|
||||
#C22 = 42
|
||||
#C23 = eval self::Foo<core::int*>{saved:#C6, saved2:#C5, initialized:#C4, value:#C22}
|
||||
#C24 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C25 = eval #C24 ?{core::Object} #C22 : #C9
|
||||
#C26 = eval #C25 is{ForNonNullableByDefault} core::int
|
||||
#C27 = eval #C26 ?{core::bool} #C9 : #C15
|
||||
#C28 = <Null>[#C10]
|
||||
#C29 = <core::int*>[#C22]
|
||||
#C30 = <core::int*>{#C22}
|
||||
#C31 = <core::int*, core::int*>{#C22:#C22)
|
||||
#C32 = <core::List<core::int*>*>[#C29]
|
||||
#C33 = <core::Set<core::int*>*>{#C30}
|
||||
#C34 = <core::Map<core::int*, core::int*>*, core::int*>{#C31:#C22)
|
||||
#C35 = <core::int*, core::Map<core::int*, core::int*>*>{#C22:#C31)
|
||||
#C36 = eval const core::String::fromEnvironment(#C1)
|
||||
#C37 = eval const _in::Symbol::•(#C36)
|
||||
#C38 = #42
|
||||
#C39 = "x"
|
||||
#C40 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C41 = eval self::C{}
|
||||
#C42 = eval #C41 as{ForNonNullableByDefault} self::B*
|
||||
#C43 = eval self::Class<self::B*>{#C42}
|
||||
#C44 = eval #C40 ?{self::Class<self::B>?} #C10 : #C43
|
||||
#C45 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C46 = eval self::C{}
|
||||
#C47 = eval #C46 as{ForNonNullableByDefault} self::B*
|
||||
#C48 = eval self::Subclass<self::B*>{#C47}
|
||||
#C49 = eval #C45 ?{self::Subclass<self::B>?} #C10 : #C48
|
||||
#C50 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C51 = eval self::A{}
|
||||
#C52 = eval self::Class<self::A*>{#C51}
|
||||
#C53 = eval #C50 ?{self::Class<self::A>?} #C10 : #C52
|
||||
#C54 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C55 = eval self::B{}
|
||||
#C56 = eval #C55 as{ForNonNullableByDefault} self::B*
|
||||
#C57 = eval self::Class<self::B*>{#C56}
|
||||
#C58 = eval #C54 ?{self::Class<self::B>?} #C10 : #C57
|
||||
#C59 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C60 = eval self::A{}
|
||||
#C61 = eval #C60 as{ForNonNullableByDefault} self::A*
|
||||
#C62 = eval self::Subclass<self::A*>{#C61}
|
||||
#C63 = eval #C59 ?{self::Subclass<self::A>?} #C10 : #C62
|
||||
#C64 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C65 = eval self::B{}
|
||||
#C66 = eval #C65 as{ForNonNullableByDefault} self::B*
|
||||
#C67 = eval self::Subclass<self::B*>{#C66}
|
||||
#C68 = eval #C64 ?{self::Subclass<self::B>?} #C10 : #C67
|
||||
#C69 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
|
||||
#C70 = static-tearoff self::procedure
|
||||
#C71 = self::ConstClassWithF {foo:#C70}
|
||||
#C72 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C73 = eval !#C72
|
||||
#C74 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C75 = eval #C74 ?{core::bool?} #C72 : #C10
|
||||
#C76 = eval #C75!
|
||||
}
|
||||
|
||||
|
||||
|
||||
+139
-109
@@ -56,9 +56,9 @@ typedef F = (core::int, {named: core::int}) → core::int;
|
||||
class Foo<E extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
final field core::bool saved;
|
||||
final field core::bool saved2;
|
||||
field core::bool initialized = #C3;
|
||||
field core::bool initialized = #C4;
|
||||
final field self::Foo::E% value;
|
||||
const constructor •(self::Foo::E% value, {core::bool saved2 = #C4, core::bool x = #C5}) → self::Foo<self::Foo::E%>
|
||||
const constructor •(self::Foo::E% value, {core::bool saved2 = #C5, core::bool x = #C6}) → self::Foo<self::Foo::E%>
|
||||
: self::Foo::value = value, self::Foo::saved2 = saved2, self::Foo::saved = x, super core::Object::•()
|
||||
;
|
||||
}
|
||||
@@ -108,136 +108,166 @@ class ConstClassWithF extends core::Object /*hasConstConstructor*/ {
|
||||
: self::ConstClassWithF::foo = foo, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static const field core::bool barFromEnv = #C6;
|
||||
static const field core::bool barFromEnv = #C3;
|
||||
static const field core::bool hasBarEnv = #C7;
|
||||
static const field core::bool? barFromEnvOrNull0 = #C10;
|
||||
static const field core::bool barFromEnvOrNull = #C11;
|
||||
static const field core::bool notBarFromEnvOrNull = #C12;
|
||||
static const field core::bool conditionalOnNull = #C14;
|
||||
static const field core::bool nullAwareOnNull = #C15;
|
||||
static const field core::bool andOnNull = #C16;
|
||||
static const field core::bool andOnNull2 = #C11;
|
||||
static const field core::bool orOnNull = #C17;
|
||||
static const field core::bool orOnNull2 = #C18;
|
||||
static const field core::bool orOnNull3 = #C8;
|
||||
static const field core::bool orOnNull4 = #C11;
|
||||
static const field core::bool? barFromEnvOrNull0 = #C11;
|
||||
static const field core::bool barFromEnvOrNull = #C13;
|
||||
static const field core::bool notBarFromEnvOrNull = #C14;
|
||||
static const field core::bool conditionalOnNull = #C16;
|
||||
static const field core::bool nullAwareOnNull = #C18;
|
||||
static const field core::bool andOnNull = #C19;
|
||||
static const field core::bool andOnNull2 = #C13;
|
||||
static const field core::bool orOnNull = #C20;
|
||||
static const field core::bool orOnNull2 = #C21;
|
||||
static const field core::bool orOnNull3 = #C9;
|
||||
static const field core::bool orOnNull4 = #C13;
|
||||
static const field core::int fromDeferredLib = invalid-expression "'lib' can't be used in a constant expression because it's marked as 'deferred' which means it isn't available until loaded.";
|
||||
static const field self::Foo<core::int> x = #C20;
|
||||
static const field core::bool? y = #C8;
|
||||
static const field core::bool z = #C13;
|
||||
static const field core::Object maybeInt = #C21;
|
||||
static const field core::bool isItInt = #C22;
|
||||
static const field core::Object maybeInt2 = #C8;
|
||||
static const field core::bool isItInt2 = #C13;
|
||||
static const field core::int? maybeInt3 = #C9;
|
||||
static const field core::bool isItInt3 = #C13;
|
||||
static const field dynamic listOfNull = #C23;
|
||||
static const field core::bool isListOfNull = #C8;
|
||||
static const field dynamic listOfInt = #C24;
|
||||
static const field core::bool isListOfInt = #C8;
|
||||
static const field core::bool isList = #C8;
|
||||
static const field dynamic setOfInt = #C25;
|
||||
static const field core::bool isSetOfInt = #C8;
|
||||
static const field dynamic mapOfInt = #C26;
|
||||
static const field core::bool isMapOfInt = #C8;
|
||||
static const field dynamic listOfListOfInt = #C27;
|
||||
static const field core::bool isListOfListOfInt = #C8;
|
||||
static const field dynamic setOfSetOfInt = #C28;
|
||||
static const field core::bool isSetOfSetOfInt = #C8;
|
||||
static const field dynamic mapOfMapOfInt1 = #C29;
|
||||
static const field dynamic mapOfMapOfInt2 = #C30;
|
||||
static const field core::bool isMapOfMapOfInt1 = #C8;
|
||||
static const field core::bool isMapOfMapOfInt2 = #C8;
|
||||
static const field core::Symbol symbolWithUnevaluatedParameter = #C31;
|
||||
static const field core::Symbol symbolWithInvalidName = #C32;
|
||||
static const field self::Class<self::B>? c0 = #C34;
|
||||
static const field self::Foo<core::int> x = #C23;
|
||||
static const field core::bool? y = #C9;
|
||||
static const field core::bool z = #C15;
|
||||
static const field core::Object maybeInt = #C25;
|
||||
static const field core::bool isItInt = #C27;
|
||||
static const field core::Object maybeInt2 = #C9;
|
||||
static const field core::bool isItInt2 = #C15;
|
||||
static const field core::int? maybeInt3 = #C10;
|
||||
static const field core::bool isItInt3 = #C15;
|
||||
static const field dynamic listOfNull = #C28;
|
||||
static const field core::bool isListOfNull = #C9;
|
||||
static const field dynamic listOfInt = #C29;
|
||||
static const field core::bool isListOfInt = #C9;
|
||||
static const field core::bool isList = #C9;
|
||||
static const field dynamic setOfInt = #C30;
|
||||
static const field core::bool isSetOfInt = #C9;
|
||||
static const field dynamic mapOfInt = #C31;
|
||||
static const field core::bool isMapOfInt = #C9;
|
||||
static const field dynamic listOfListOfInt = #C32;
|
||||
static const field core::bool isListOfListOfInt = #C9;
|
||||
static const field dynamic setOfSetOfInt = #C33;
|
||||
static const field core::bool isSetOfSetOfInt = #C9;
|
||||
static const field dynamic mapOfMapOfInt1 = #C34;
|
||||
static const field dynamic mapOfMapOfInt2 = #C35;
|
||||
static const field core::bool isMapOfMapOfInt1 = #C9;
|
||||
static const field core::bool isMapOfMapOfInt2 = #C9;
|
||||
static const field core::Symbol symbolWithUnevaluatedParameter = #C37;
|
||||
static const field core::Symbol symbolWithInvalidName = #C38;
|
||||
static const field self::Class<self::B>? c0 = #C44;
|
||||
static const field self::Class<self::A>? c1 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
|
||||
- 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
|
||||
const Class.method(T t) : this(-t);
|
||||
^";
|
||||
static const field self::Subclass<self::B>? c2 = #C35;
|
||||
static const field self::Class<self::A>? c3 = #C36;
|
||||
static const field self::Class<self::B>? c4 = #C37;
|
||||
static const field self::Subclass<self::A>? c5 = #C38;
|
||||
static const field self::Subclass<self::B>? c6 = #C39;
|
||||
static const field core::Type f = #C40;
|
||||
static field self::ConstClassWithF constClassWithF1 = #C42;
|
||||
static const field self::ConstClassWithF constClassWithF2 = #C42;
|
||||
static const field core::bool unevaluatedBool = #C43;
|
||||
static const field core::bool notUnevaluatedBool = #C44;
|
||||
static const field core::bool? unevaluatedBoolOrNull = #C45;
|
||||
static const field core::bool unevaluatedBoolNotNull = #C46;
|
||||
static method procedure(core::int i, {core::int named = #C9}) → core::int
|
||||
static const field self::Subclass<self::B>? c2 = #C49;
|
||||
static const field self::Class<self::A>? c3 = #C53;
|
||||
static const field self::Class<self::B>? c4 = #C58;
|
||||
static const field self::Subclass<self::A>? c5 = #C63;
|
||||
static const field self::Subclass<self::B>? c6 = #C68;
|
||||
static const field core::Type f = #C69;
|
||||
static field self::ConstClassWithF constClassWithF1 = #C71;
|
||||
static const field self::ConstClassWithF constClassWithF2 = #C71;
|
||||
static const field core::bool unevaluatedBool = #C72;
|
||||
static const field core::bool notUnevaluatedBool = #C73;
|
||||
static const field core::bool? unevaluatedBoolOrNull = #C75;
|
||||
static const field core::bool unevaluatedBoolNotNull = #C76;
|
||||
static method procedure(core::int i, {core::int named = #C10}) → core::int
|
||||
return i;
|
||||
static method main() → dynamic {
|
||||
core::print(#C34);
|
||||
core::print(#C44);
|
||||
core::print(invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
|
||||
- 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
|
||||
const Class.method(T t) : this(-t);
|
||||
^");
|
||||
core::print(#C35);
|
||||
core::print(#C36);
|
||||
core::print(#C37);
|
||||
core::print(#C38);
|
||||
core::print(#C39);
|
||||
core::print(#C20);
|
||||
core::print(#C20.{self::Foo::saved}{core::bool});
|
||||
core::print(#C20.{self::Foo::value}{core::int});
|
||||
core::print(#C49);
|
||||
core::print(#C53);
|
||||
core::print(#C58);
|
||||
core::print(#C63);
|
||||
core::print(#C68);
|
||||
core::print(#C23);
|
||||
core::print(#C23.{self::Foo::saved}{core::bool});
|
||||
core::print(#C23.{self::Foo::value}{core::int});
|
||||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::int x = #C19;
|
||||
static const field core::int x = #C22;
|
||||
|
||||
constants {
|
||||
#C1 = "foo"
|
||||
#C2 = "bar"
|
||||
#C3 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
|
||||
#C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
|
||||
#C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
|
||||
#C6 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C3 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
|
||||
#C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
|
||||
#C6 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
|
||||
#C7 = eval const core::bool::hasEnvironment(#C2)
|
||||
#C8 = true
|
||||
#C9 = null
|
||||
#C10 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9
|
||||
#C11 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
|
||||
#C12 = eval !const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
|
||||
#C13 = false
|
||||
#C14 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) ?{core::bool} #C8 : #C13
|
||||
#C15 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) == null ?{core::bool} #C8 : const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
|
||||
#C16 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) && #C8
|
||||
#C17 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C8
|
||||
#C18 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C13
|
||||
#C19 = 42
|
||||
#C20 = eval self::Foo<core::int*>{saved:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), saved2:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), initialized:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), value:#C19}
|
||||
#C21 = eval const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8
|
||||
#C22 = eval (const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8) is{ForNonNullableByDefault} core::int ?{core::bool} #C8 : #C13
|
||||
#C23 = <Null>[#C9]
|
||||
#C24 = <core::int*>[#C19]
|
||||
#C25 = <core::int*>{#C19}
|
||||
#C26 = <core::int*, core::int*>{#C19:#C19)
|
||||
#C27 = <core::List<core::int*>*>[#C24]
|
||||
#C28 = <core::Set<core::int*>*>{#C25}
|
||||
#C29 = <core::Map<core::int*, core::int*>*, core::int*>{#C26:#C19)
|
||||
#C30 = <core::int*, core::Map<core::int*, core::int*>*>{#C19:#C26)
|
||||
#C31 = eval const _in::Symbol::•(const core::String::fromEnvironment(#C1))
|
||||
#C32 = #42
|
||||
#C33 = "x"
|
||||
#C34 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C35 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C36 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::A>?} #C9 : self::Class<self::A*>{self::A{}}
|
||||
#C37 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C38 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::A>?} #C9 : self::Subclass<self::A*>{(self::A{}) as{ForNonNullableByDefault} self::A*}
|
||||
#C39 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C40 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
|
||||
#C41 = static-tearoff self::procedure
|
||||
#C42 = self::ConstClassWithF {foo:#C41}
|
||||
#C43 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C44 = eval !const core::bool::fromEnvironment(#C1)
|
||||
#C45 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9
|
||||
#C46 = eval (const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9)!
|
||||
#C8 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C9 = true
|
||||
#C10 = null
|
||||
#C11 = eval #C8 ?{core::bool?} #C9 : #C10
|
||||
#C12 = eval #C11!
|
||||
#C13 = eval const core::bool::fromEnvironment(#C2, defaultValue: #C12)
|
||||
#C14 = eval !#C13
|
||||
#C15 = false
|
||||
#C16 = eval #C13 ?{core::bool} #C9 : #C15
|
||||
#C17 = eval #C13 == null
|
||||
#C18 = eval #C17 ?{core::bool} #C9 : #C13
|
||||
#C19 = eval #C13 && #C9
|
||||
#C20 = eval #C13 || #C9
|
||||
#C21 = eval #C13 || #C15
|
||||
#C22 = 42
|
||||
#C23 = eval self::Foo<core::int*>{saved:#C6, saved2:#C5, initialized:#C4, value:#C22}
|
||||
#C24 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C25 = eval #C24 ?{core::Object} #C22 : #C9
|
||||
#C26 = eval #C25 is{ForNonNullableByDefault} core::int
|
||||
#C27 = eval #C26 ?{core::bool} #C9 : #C15
|
||||
#C28 = <Null>[#C10]
|
||||
#C29 = <core::int*>[#C22]
|
||||
#C30 = <core::int*>{#C22}
|
||||
#C31 = <core::int*, core::int*>{#C22:#C22)
|
||||
#C32 = <core::List<core::int*>*>[#C29]
|
||||
#C33 = <core::Set<core::int*>*>{#C30}
|
||||
#C34 = <core::Map<core::int*, core::int*>*, core::int*>{#C31:#C22)
|
||||
#C35 = <core::int*, core::Map<core::int*, core::int*>*>{#C22:#C31)
|
||||
#C36 = eval const core::String::fromEnvironment(#C1)
|
||||
#C37 = eval const _in::Symbol::•(#C36)
|
||||
#C38 = #42
|
||||
#C39 = "x"
|
||||
#C40 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C41 = eval self::C{}
|
||||
#C42 = eval #C41 as{ForNonNullableByDefault} self::B*
|
||||
#C43 = eval self::Class<self::B*>{#C42}
|
||||
#C44 = eval #C40 ?{self::Class<self::B>?} #C10 : #C43
|
||||
#C45 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C46 = eval self::C{}
|
||||
#C47 = eval #C46 as{ForNonNullableByDefault} self::B*
|
||||
#C48 = eval self::Subclass<self::B*>{#C47}
|
||||
#C49 = eval #C45 ?{self::Subclass<self::B>?} #C10 : #C48
|
||||
#C50 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C51 = eval self::A{}
|
||||
#C52 = eval self::Class<self::A*>{#C51}
|
||||
#C53 = eval #C50 ?{self::Class<self::A>?} #C10 : #C52
|
||||
#C54 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C55 = eval self::B{}
|
||||
#C56 = eval #C55 as{ForNonNullableByDefault} self::B*
|
||||
#C57 = eval self::Class<self::B*>{#C56}
|
||||
#C58 = eval #C54 ?{self::Class<self::B>?} #C10 : #C57
|
||||
#C59 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C60 = eval self::A{}
|
||||
#C61 = eval #C60 as{ForNonNullableByDefault} self::A*
|
||||
#C62 = eval self::Subclass<self::A*>{#C61}
|
||||
#C63 = eval #C59 ?{self::Subclass<self::A>?} #C10 : #C62
|
||||
#C64 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C65 = eval self::B{}
|
||||
#C66 = eval #C65 as{ForNonNullableByDefault} self::B*
|
||||
#C67 = eval self::Subclass<self::B*>{#C66}
|
||||
#C68 = eval #C64 ?{self::Subclass<self::B>?} #C10 : #C67
|
||||
#C69 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
|
||||
#C70 = static-tearoff self::procedure
|
||||
#C71 = self::ConstClassWithF {foo:#C70}
|
||||
#C72 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C73 = eval !#C72
|
||||
#C74 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C75 = eval #C74 ?{core::bool?} #C72 : #C10
|
||||
#C76 = eval #C75!
|
||||
}
|
||||
|
||||
|
||||
|
||||
+144
-121
@@ -56,9 +56,9 @@ typedef F = (core::int, {named: core::int}) → core::int;
|
||||
class Foo<E extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
|
||||
final field core::bool saved;
|
||||
final field core::bool saved2;
|
||||
field core::bool initialized = #C3;
|
||||
field core::bool initialized = #C4;
|
||||
final field self::Foo::E% value;
|
||||
const constructor •(self::Foo::E% value, {core::bool saved2 = #C4, core::bool x = #C5}) → self::Foo<self::Foo::E%>
|
||||
const constructor •(self::Foo::E% value, {core::bool saved2 = #C5, core::bool x = #C6}) → self::Foo<self::Foo::E%>
|
||||
: self::Foo::value = value, self::Foo::saved2 = saved2, self::Foo::saved = x, super core::Object::•()
|
||||
;
|
||||
}
|
||||
@@ -108,156 +108,179 @@ class ConstClassWithF extends core::Object /*hasConstConstructor*/ {
|
||||
: self::ConstClassWithF::foo = foo, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static const field core::bool barFromEnv = #C6;
|
||||
static const field core::bool barFromEnv = #C3;
|
||||
static const field core::bool hasBarEnv = #C7;
|
||||
static const field core::bool? barFromEnvOrNull0 = #C10;
|
||||
static const field core::bool barFromEnvOrNull = #C11;
|
||||
static const field core::bool notBarFromEnvOrNull = #C12;
|
||||
static const field core::bool conditionalOnNull = #C14;
|
||||
static const field core::bool nullAwareOnNull = #C15;
|
||||
static const field core::bool andOnNull = #C16;
|
||||
static const field core::bool andOnNull2 = #C11;
|
||||
static const field core::bool orOnNull = #C17;
|
||||
static const field core::bool orOnNull2 = #C18;
|
||||
static const field core::bool orOnNull3 = #C8;
|
||||
static const field core::bool orOnNull4 = #C11;
|
||||
static const field core::bool? barFromEnvOrNull0 = #C11;
|
||||
static const field core::bool barFromEnvOrNull = #C13;
|
||||
static const field core::bool notBarFromEnvOrNull = #C14;
|
||||
static const field core::bool conditionalOnNull = #C16;
|
||||
static const field core::bool nullAwareOnNull = #C18;
|
||||
static const field core::bool andOnNull = #C19;
|
||||
static const field core::bool andOnNull2 = #C13;
|
||||
static const field core::bool orOnNull = #C20;
|
||||
static const field core::bool orOnNull2 = #C21;
|
||||
static const field core::bool orOnNull3 = #C9;
|
||||
static const field core::bool orOnNull4 = #C13;
|
||||
static const field core::int fromDeferredLib = invalid-expression "'lib' can't be used in a constant expression because it's marked as 'deferred' which means it isn't available until loaded.";
|
||||
static const field self::Foo<core::int> x = #C20;
|
||||
static const field core::bool? y = #C8;
|
||||
static const field core::bool z = #C13;
|
||||
static const field core::Object maybeInt = #C21;
|
||||
static const field core::bool isItInt = #C22;
|
||||
static const field core::Object maybeInt2 = #C8;
|
||||
static const field core::bool isItInt2 = #C13;
|
||||
static const field core::int? maybeInt3 = #C9;
|
||||
static const field core::bool isItInt3 = #C13;
|
||||
static const field dynamic listOfNull = #C23;
|
||||
static const field core::bool isListOfNull = #C8;
|
||||
static const field dynamic listOfInt = #C24;
|
||||
static const field core::bool isListOfInt = #C8;
|
||||
static const field core::bool isList = #C8;
|
||||
static const field dynamic setOfInt = #C25;
|
||||
static const field core::bool isSetOfInt = #C8;
|
||||
static const field dynamic mapOfInt = #C26;
|
||||
static const field core::bool isMapOfInt = #C8;
|
||||
static const field dynamic listOfListOfInt = #C27;
|
||||
static const field core::bool isListOfListOfInt = #C8;
|
||||
static const field dynamic setOfSetOfInt = #C28;
|
||||
static const field core::bool isSetOfSetOfInt = #C8;
|
||||
static const field dynamic mapOfMapOfInt1 = #C29;
|
||||
static const field dynamic mapOfMapOfInt2 = #C30;
|
||||
static const field core::bool isMapOfMapOfInt1 = #C8;
|
||||
static const field core::bool isMapOfMapOfInt2 = #C8;
|
||||
static const field core::Symbol symbolWithUnevaluatedParameter = #C31;
|
||||
static const field core::Symbol symbolWithInvalidName = #C32;
|
||||
static const field self::Class<self::B>? c0 = #C34;
|
||||
static const field self::Foo<core::int> x = #C23;
|
||||
static const field core::bool? y = #C9;
|
||||
static const field core::bool z = #C15;
|
||||
static const field core::Object maybeInt = #C25;
|
||||
static const field core::bool isItInt = #C27;
|
||||
static const field core::Object maybeInt2 = #C9;
|
||||
static const field core::bool isItInt2 = #C15;
|
||||
static const field core::int? maybeInt3 = #C10;
|
||||
static const field core::bool isItInt3 = #C15;
|
||||
static const field dynamic listOfNull = #C28;
|
||||
static const field core::bool isListOfNull = #C9;
|
||||
static const field dynamic listOfInt = #C29;
|
||||
static const field core::bool isListOfInt = #C9;
|
||||
static const field core::bool isList = #C9;
|
||||
static const field dynamic setOfInt = #C30;
|
||||
static const field core::bool isSetOfInt = #C9;
|
||||
static const field dynamic mapOfInt = #C31;
|
||||
static const field core::bool isMapOfInt = #C9;
|
||||
static const field dynamic listOfListOfInt = #C32;
|
||||
static const field core::bool isListOfListOfInt = #C9;
|
||||
static const field dynamic setOfSetOfInt = #C33;
|
||||
static const field core::bool isSetOfSetOfInt = #C9;
|
||||
static const field dynamic mapOfMapOfInt1 = #C34;
|
||||
static const field dynamic mapOfMapOfInt2 = #C35;
|
||||
static const field core::bool isMapOfMapOfInt1 = #C9;
|
||||
static const field core::bool isMapOfMapOfInt2 = #C9;
|
||||
static const field core::Symbol symbolWithUnevaluatedParameter = #C37;
|
||||
static const field core::Symbol symbolWithInvalidName = #C38;
|
||||
static const field self::Class<self::B>? c0 = #C44;
|
||||
static const field self::Class<self::A>? c1 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
|
||||
- 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
|
||||
const Class.method(T t) : this(-t);
|
||||
^";
|
||||
static const field self::Subclass<self::B>? c2 = #C35;
|
||||
static const field self::Class<self::A>? c3 = #C36;
|
||||
static const field self::Class<self::B>? c4 = #C37;
|
||||
static const field self::Subclass<self::A>? c5 = #C38;
|
||||
static const field self::Subclass<self::B>? c6 = #C39;
|
||||
static const field core::Type f = #C40;
|
||||
static field self::ConstClassWithF constClassWithF1 = #C42;
|
||||
static const field self::ConstClassWithF constClassWithF2 = #C42;
|
||||
static const field core::bool unevaluatedBool = #C43;
|
||||
static const field core::bool notUnevaluatedBool = #C44;
|
||||
static const field core::bool? unevaluatedBoolOrNull = #C45;
|
||||
static const field core::bool unevaluatedBoolNotNull = #C46;
|
||||
static method procedure(core::int i, {core::int named = #C9}) → core::int
|
||||
static const field self::Subclass<self::B>? c2 = #C49;
|
||||
static const field self::Class<self::A>? c3 = #C53;
|
||||
static const field self::Class<self::B>? c4 = #C58;
|
||||
static const field self::Subclass<self::A>? c5 = #C63;
|
||||
static const field self::Subclass<self::B>? c6 = #C68;
|
||||
static const field core::Type f = #C69;
|
||||
static field self::ConstClassWithF constClassWithF1 = #C71;
|
||||
static const field self::ConstClassWithF constClassWithF2 = #C71;
|
||||
static const field core::bool unevaluatedBool = #C72;
|
||||
static const field core::bool notUnevaluatedBool = #C73;
|
||||
static const field core::bool? unevaluatedBoolOrNull = #C75;
|
||||
static const field core::bool unevaluatedBoolNotNull = #C76;
|
||||
static method procedure(core::int i, {core::int named = #C10}) → core::int
|
||||
return i;
|
||||
static method main() → dynamic {
|
||||
core::print(#C47);
|
||||
core::print(#C44);
|
||||
core::print(invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
|
||||
- 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
|
||||
const Class.method(T t) : this(-t);
|
||||
^");
|
||||
core::print(#C48);
|
||||
core::print(#C49);
|
||||
core::print(#C50);
|
||||
core::print(#C51);
|
||||
core::print(#C52);
|
||||
core::print(#C53);
|
||||
core::print(#C53.{self::Foo::saved}{core::bool});
|
||||
core::print(#C53.{self::Foo::value}{core::int});
|
||||
core::print(#C58);
|
||||
core::print(#C63);
|
||||
core::print(#C68);
|
||||
core::print(#C23);
|
||||
core::print(#C23.{self::Foo::saved}{core::bool});
|
||||
core::print(#C23.{self::Foo::value}{core::int});
|
||||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import "dart:core" as core;
|
||||
|
||||
static const field core::int x = #C19;
|
||||
static const field core::int x = #C22;
|
||||
|
||||
constants {
|
||||
#C1 = "foo"
|
||||
#C2 = "bar"
|
||||
#C3 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
|
||||
#C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
|
||||
#C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
|
||||
#C6 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C3 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
|
||||
#C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
|
||||
#C6 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
|
||||
#C7 = eval const core::bool::hasEnvironment(#C2)
|
||||
#C8 = true
|
||||
#C9 = null
|
||||
#C10 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9
|
||||
#C11 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
|
||||
#C12 = eval !const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
|
||||
#C13 = false
|
||||
#C14 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) ?{core::bool} #C8 : #C13
|
||||
#C15 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) == null ?{core::bool} #C8 : const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
|
||||
#C16 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) && #C8
|
||||
#C17 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C8
|
||||
#C18 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C13
|
||||
#C19 = 42
|
||||
#C20 = eval self::Foo<core::int*>{saved:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), saved2:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), initialized:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), value:#C19}
|
||||
#C21 = eval const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8
|
||||
#C22 = eval (const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8) is{ForNonNullableByDefault} core::int ?{core::bool} #C8 : #C13
|
||||
#C23 = <Null>[#C9]
|
||||
#C24 = <core::int*>[#C19]
|
||||
#C25 = <core::int*>{#C19}
|
||||
#C26 = <core::int*, core::int*>{#C19:#C19)
|
||||
#C27 = <core::List<core::int*>*>[#C24]
|
||||
#C28 = <core::Set<core::int*>*>{#C25}
|
||||
#C29 = <core::Map<core::int*, core::int*>*, core::int*>{#C26:#C19)
|
||||
#C30 = <core::int*, core::Map<core::int*, core::int*>*>{#C19:#C26)
|
||||
#C31 = eval const _in::Symbol::•(const core::String::fromEnvironment(#C1))
|
||||
#C32 = #42
|
||||
#C33 = "x"
|
||||
#C34 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C35 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C36 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::A>?} #C9 : self::Class<self::A*>{self::A{}}
|
||||
#C37 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C38 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::A>?} #C9 : self::Subclass<self::A*>{(self::A{}) as{ForNonNullableByDefault} self::A*}
|
||||
#C39 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C40 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
|
||||
#C41 = static-tearoff self::procedure
|
||||
#C42 = self::ConstClassWithF {foo:#C41}
|
||||
#C43 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C44 = eval !const core::bool::fromEnvironment(#C1)
|
||||
#C45 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9
|
||||
#C46 = eval (const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9)!
|
||||
#C47 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C48 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C49 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::A>?} #C9 : self::Class<self::A*>{self::A{}}
|
||||
#C50 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C51 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::A>?} #C9 : self::Subclass<self::A*>{(self::A{}) as{ForNonNullableByDefault} self::A*}
|
||||
#C52 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
|
||||
#C53 = eval self::Foo<core::int*>{saved:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), saved2:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), initialized:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), value:#C19}
|
||||
#C8 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C9 = true
|
||||
#C10 = null
|
||||
#C11 = eval #C8 ?{core::bool?} #C9 : #C10
|
||||
#C12 = eval #C11!
|
||||
#C13 = eval const core::bool::fromEnvironment(#C2, defaultValue: #C12)
|
||||
#C14 = eval !#C13
|
||||
#C15 = false
|
||||
#C16 = eval #C13 ?{core::bool} #C9 : #C15
|
||||
#C17 = eval #C13 == null
|
||||
#C18 = eval #C17 ?{core::bool} #C9 : #C13
|
||||
#C19 = eval #C13 && #C9
|
||||
#C20 = eval #C13 || #C9
|
||||
#C21 = eval #C13 || #C15
|
||||
#C22 = 42
|
||||
#C23 = eval self::Foo<core::int*>{saved:#C6, saved2:#C5, initialized:#C4, value:#C22}
|
||||
#C24 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C25 = eval #C24 ?{core::Object} #C22 : #C9
|
||||
#C26 = eval #C25 is{ForNonNullableByDefault} core::int
|
||||
#C27 = eval #C26 ?{core::bool} #C9 : #C15
|
||||
#C28 = <Null>[#C10]
|
||||
#C29 = <core::int*>[#C22]
|
||||
#C30 = <core::int*>{#C22}
|
||||
#C31 = <core::int*, core::int*>{#C22:#C22)
|
||||
#C32 = <core::List<core::int*>*>[#C29]
|
||||
#C33 = <core::Set<core::int*>*>{#C30}
|
||||
#C34 = <core::Map<core::int*, core::int*>*, core::int*>{#C31:#C22)
|
||||
#C35 = <core::int*, core::Map<core::int*, core::int*>*>{#C22:#C31)
|
||||
#C36 = eval const core::String::fromEnvironment(#C1)
|
||||
#C37 = eval const _in::Symbol::•(#C36)
|
||||
#C38 = #42
|
||||
#C39 = "x"
|
||||
#C40 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C41 = eval self::C{}
|
||||
#C42 = eval #C41 as{ForNonNullableByDefault} self::B*
|
||||
#C43 = eval self::Class<self::B*>{#C42}
|
||||
#C44 = eval #C40 ?{self::Class<self::B>?} #C10 : #C43
|
||||
#C45 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C46 = eval self::C{}
|
||||
#C47 = eval #C46 as{ForNonNullableByDefault} self::B*
|
||||
#C48 = eval self::Subclass<self::B*>{#C47}
|
||||
#C49 = eval #C45 ?{self::Subclass<self::B>?} #C10 : #C48
|
||||
#C50 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C51 = eval self::A{}
|
||||
#C52 = eval self::Class<self::A*>{#C51}
|
||||
#C53 = eval #C50 ?{self::Class<self::A>?} #C10 : #C52
|
||||
#C54 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C55 = eval self::B{}
|
||||
#C56 = eval #C55 as{ForNonNullableByDefault} self::B*
|
||||
#C57 = eval self::Class<self::B*>{#C56}
|
||||
#C58 = eval #C54 ?{self::Class<self::B>?} #C10 : #C57
|
||||
#C59 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C60 = eval self::A{}
|
||||
#C61 = eval #C60 as{ForNonNullableByDefault} self::A*
|
||||
#C62 = eval self::Subclass<self::A*>{#C61}
|
||||
#C63 = eval #C59 ?{self::Subclass<self::A>?} #C10 : #C62
|
||||
#C64 = eval const core::bool::fromEnvironment(#C39)
|
||||
#C65 = eval self::B{}
|
||||
#C66 = eval #C65 as{ForNonNullableByDefault} self::B*
|
||||
#C67 = eval self::Subclass<self::B*>{#C66}
|
||||
#C68 = eval #C64 ?{self::Subclass<self::B>?} #C10 : #C67
|
||||
#C69 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
|
||||
#C70 = static-tearoff self::procedure
|
||||
#C71 = self::ConstClassWithF {foo:#C70}
|
||||
#C72 = eval const core::bool::fromEnvironment(#C1)
|
||||
#C73 = eval !#C72
|
||||
#C74 = eval const core::bool::fromEnvironment(#C2)
|
||||
#C75 = eval #C74 ?{core::bool?} #C72 : #C10
|
||||
#C76 = eval #C75!
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:32:27 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:33:21 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:28:13 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:110:38 -> InstanceConstant(const Class<A*>{})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:111:38 -> InstanceConstant(const Class<B*>{})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:112:38 -> InstanceConstant(const Subclass<A*>{})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:113:38 -> InstanceConstant(const Subclass<B*>{})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:37:17 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:37:17 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:37:17 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:137:9 -> InstanceConstant(const Class<A*>{})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:138:9 -> InstanceConstant(const Class<B*>{})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:139:9 -> InstanceConstant(const Subclass<A*>{})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:140:9 -> InstanceConstant(const Subclass<B*>{})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:141:9 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:142:9 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:143:9 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:7:31 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:8:30 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:9:67 -> NullConstant(null)
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ static const field core::List<core::int> listConcatenation = #C11;
|
||||
static const field core::Set<core::int> setConcatenation = #C13;
|
||||
static const field core::Map<core::int, core::String> mapConcatenation = #C16;
|
||||
static const field core::bool objectTypeLiteralIdentical = #C19;
|
||||
static const field core::bool partialInstantiationIdentical = #C21;
|
||||
static const field core::bool partialInstantiationIdentical = #C25;
|
||||
static const field core::bool instanceIdentical = #C19;
|
||||
static const field core::bool instance2Identical = #C19;
|
||||
static const field core::bool functionTypeLiteralIdentical = #C19;
|
||||
@@ -39,7 +39,7 @@ static const field core::bool setConcatenationIdentical = #C19;
|
||||
static const field core::bool mapConcatenationIdentical = #C19;
|
||||
static method main() → dynamic {
|
||||
self::test(#C1, #C1);
|
||||
self::test(#C3, #C22);
|
||||
self::test(#C3, #C24);
|
||||
self::test(#C5, #C5);
|
||||
self::test(#C9, #C9);
|
||||
self::test(#C10, #C10);
|
||||
@@ -50,7 +50,7 @@ static method main() → dynamic {
|
||||
self::test(#C13, #C13);
|
||||
self::test(#C16, #C16);
|
||||
self::test(true, #C19);
|
||||
self::test(true, #C21);
|
||||
self::test(true, #C25);
|
||||
self::test(true, #C19);
|
||||
self::test(true, #C19);
|
||||
self::test(true, #C19);
|
||||
@@ -81,8 +81,8 @@ class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstCo
|
||||
;
|
||||
}
|
||||
static const field core::Type objectTypeLiteral = #C1;
|
||||
static const field (core::Object?, core::Object?) → core::bool c2 = #C23;
|
||||
static const field (core::int) → core::int partialInstantiation = #C22;
|
||||
static const field (core::Object?, core::Object?) → core::bool c2 = #C26;
|
||||
static const field (core::int) → core::int partialInstantiation = #C24;
|
||||
static const field var::Class<core::int> instance = #C5;
|
||||
static const field var::Class<dynamic> instance2 = #C8;
|
||||
static const field core::Type functionTypeLiteral = #C9;
|
||||
@@ -121,10 +121,13 @@ constants {
|
||||
#C17 = null
|
||||
#C18 = <dynamic, dynamic>{#C7:#C15, #C17:#C7)
|
||||
#C19 = true
|
||||
#C20 = static-tearoff var::id2
|
||||
#C21 = eval const core::identical(#C3, const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>)
|
||||
#C22 = eval const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>
|
||||
#C23 = static-tearoff core::identical
|
||||
#C20 = eval const core::bool::fromEnvironment(#C15)
|
||||
#C21 = eval #C2<core::int>
|
||||
#C22 = static-tearoff var::id2
|
||||
#C23 = eval #C22<core::int>
|
||||
#C24 = eval #C20 ?{(core::int) → core::int} #C21 : #C23
|
||||
#C25 = eval const core::identical(#C3, #C24)
|
||||
#C26 = static-tearoff core::identical
|
||||
}
|
||||
|
||||
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ static const field core::List<core::int> listConcatenation = #C11;
|
||||
static const field core::Set<core::int> setConcatenation = #C13;
|
||||
static const field core::Map<core::int, core::String> mapConcatenation = #C16;
|
||||
static const field core::bool objectTypeLiteralIdentical = #C19;
|
||||
static const field core::bool partialInstantiationIdentical = #C21;
|
||||
static const field core::bool partialInstantiationIdentical = #C25;
|
||||
static const field core::bool instanceIdentical = #C19;
|
||||
static const field core::bool instance2Identical = #C19;
|
||||
static const field core::bool functionTypeLiteralIdentical = #C19;
|
||||
@@ -39,7 +39,7 @@ static const field core::bool setConcatenationIdentical = #C19;
|
||||
static const field core::bool mapConcatenationIdentical = #C19;
|
||||
static method main() → dynamic {
|
||||
self::test(#C1, #C1);
|
||||
self::test(#C3, #C22);
|
||||
self::test(#C3, #C24);
|
||||
self::test(#C5, #C5);
|
||||
self::test(#C9, #C9);
|
||||
self::test(#C10, #C10);
|
||||
@@ -50,7 +50,7 @@ static method main() → dynamic {
|
||||
self::test(#C13, #C13);
|
||||
self::test(#C16, #C16);
|
||||
self::test(true, #C19);
|
||||
self::test(true, #C21);
|
||||
self::test(true, #C25);
|
||||
self::test(true, #C19);
|
||||
self::test(true, #C19);
|
||||
self::test(true, #C19);
|
||||
@@ -81,8 +81,8 @@ class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstCo
|
||||
;
|
||||
}
|
||||
static const field core::Type objectTypeLiteral = #C1;
|
||||
static const field (core::Object?, core::Object?) → core::bool c2 = #C23;
|
||||
static const field (core::int) → core::int partialInstantiation = #C22;
|
||||
static const field (core::Object?, core::Object?) → core::bool c2 = #C26;
|
||||
static const field (core::int) → core::int partialInstantiation = #C24;
|
||||
static const field var::Class<core::int> instance = #C5;
|
||||
static const field var::Class<dynamic> instance2 = #C8;
|
||||
static const field core::Type functionTypeLiteral = #C9;
|
||||
@@ -121,10 +121,13 @@ constants {
|
||||
#C17 = null
|
||||
#C18 = <dynamic, dynamic>{#C7:#C15, #C17:#C7)
|
||||
#C19 = true
|
||||
#C20 = static-tearoff var::id2
|
||||
#C21 = eval const core::identical(#C3, const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>)
|
||||
#C22 = eval const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>
|
||||
#C23 = static-tearoff core::identical
|
||||
#C20 = eval const core::bool::fromEnvironment(#C15)
|
||||
#C21 = eval #C2<core::int>
|
||||
#C22 = static-tearoff var::id2
|
||||
#C23 = eval #C22<core::int>
|
||||
#C24 = eval #C20 ?{(core::int) → core::int} #C21 : #C23
|
||||
#C25 = eval const core::identical(#C3, #C24)
|
||||
#C26 = static-tearoff core::identical
|
||||
}
|
||||
|
||||
|
||||
|
||||
+14
-13
@@ -23,7 +23,7 @@ static const field core::List<core::int> listConcatenation = #C11;
|
||||
static const field core::Set<core::int> setConcatenation = #C13;
|
||||
static const field core::Map<core::int, core::String> mapConcatenation = #C16;
|
||||
static const field core::bool objectTypeLiteralIdentical = #C19;
|
||||
static const field core::bool partialInstantiationIdentical = #C21;
|
||||
static const field core::bool partialInstantiationIdentical = #C25;
|
||||
static const field core::bool instanceIdentical = #C19;
|
||||
static const field core::bool instance2Identical = #C19;
|
||||
static const field core::bool functionTypeLiteralIdentical = #C19;
|
||||
@@ -39,7 +39,7 @@ static const field core::bool setConcatenationIdentical = #C19;
|
||||
static const field core::bool mapConcatenationIdentical = #C19;
|
||||
static method main() → dynamic {
|
||||
self::test(#C1, #C1);
|
||||
self::test(#C3, #C22);
|
||||
self::test(#C3, #C24);
|
||||
self::test(#C5, #C5);
|
||||
self::test(#C9, #C9);
|
||||
self::test(#C10, #C10);
|
||||
@@ -50,7 +50,7 @@ static method main() → dynamic {
|
||||
self::test(#C13, #C13);
|
||||
self::test(#C16, #C16);
|
||||
self::test(true, #C19);
|
||||
self::test(true, #C23);
|
||||
self::test(true, #C25);
|
||||
self::test(true, #C19);
|
||||
self::test(true, #C19);
|
||||
self::test(true, #C19);
|
||||
@@ -81,8 +81,8 @@ class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstCo
|
||||
;
|
||||
}
|
||||
static const field core::Type objectTypeLiteral = #C1;
|
||||
static const field (core::Object?, core::Object?) → core::bool c2 = #C24;
|
||||
static const field (core::int) → core::int partialInstantiation = #C25;
|
||||
static const field (core::Object?, core::Object?) → core::bool c2 = #C26;
|
||||
static const field (core::int) → core::int partialInstantiation = #C24;
|
||||
static const field var::Class<core::int> instance = #C5;
|
||||
static const field var::Class<dynamic> instance2 = #C8;
|
||||
static const field core::Type functionTypeLiteral = #C9;
|
||||
@@ -121,17 +121,18 @@ constants {
|
||||
#C17 = null
|
||||
#C18 = <dynamic, dynamic>{#C7:#C15, #C17:#C7)
|
||||
#C19 = true
|
||||
#C20 = static-tearoff var::id2
|
||||
#C21 = eval const core::identical(#C3, const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>)
|
||||
#C22 = eval const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>
|
||||
#C23 = eval const core::identical(#C3, const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>)
|
||||
#C24 = static-tearoff core::identical
|
||||
#C25 = eval const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>
|
||||
#C20 = eval const core::bool::fromEnvironment(#C15)
|
||||
#C21 = eval #C2<core::int>
|
||||
#C22 = static-tearoff var::id2
|
||||
#C23 = eval #C22<core::int>
|
||||
#C24 = eval #C20 ?{(core::int) → core::int} #C21 : #C23
|
||||
#C25 = eval const core::identical(#C3, #C24)
|
||||
#C26 = static-tearoff core::identical
|
||||
}
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:15:28 -> InstantiationConstant(id2<int*>)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:37:5 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:59:34 -> InstantiationConstant(id2<int*>)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:71:14 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:37:5 -> BoolConstant(false)
|
||||
Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2_lib.dart:20:39 -> InstantiationConstant(id2<int*>)
|
||||
Extra constant evaluation: evaluated: 41, effectively constant: 4
|
||||
|
||||
@@ -12939,10 +12939,6 @@ abstract class Constant extends Node {
|
||||
|
||||
/// Gets the type of this constant.
|
||||
DartType getType(StaticTypeContext context);
|
||||
|
||||
Expression asExpression() {
|
||||
return new ConstantExpression(this);
|
||||
}
|
||||
}
|
||||
|
||||
abstract class PrimitiveConstant<T> extends Constant {
|
||||
@@ -13886,9 +13882,6 @@ class UnevaluatedConstant extends Constant {
|
||||
DartType getType(StaticTypeContext context) =>
|
||||
expression.getStaticType(context);
|
||||
|
||||
@override
|
||||
Expression asExpression() => expression;
|
||||
|
||||
@override
|
||||
void toTextInternal(AstPrinter printer) {
|
||||
printer.write('unevaluated{');
|
||||
|
||||
@@ -834,9 +834,6 @@ class VerifyingVisitor extends RecursiveResultVisitor<void> {
|
||||
|
||||
@override
|
||||
void visitUnevaluatedConstant(UnevaluatedConstant constant) {
|
||||
if (inUnevaluatedConstant) {
|
||||
problem(currentParent, "UnevaluatedConstant in UnevaluatedConstant.");
|
||||
}
|
||||
bool savedInUnevaluatedConstant = inUnevaluatedConstant;
|
||||
inUnevaluatedConstant = true;
|
||||
TreeNode? oldParent = currentParent;
|
||||
|
||||
@@ -25,7 +25,7 @@ import 'log.dart' show Logger, StdoutLogger, splitLines;
|
||||
|
||||
import 'multitest.dart' show MultitestTransformer, isError;
|
||||
|
||||
import 'expectation.dart' show Expectation, ExpectationSet;
|
||||
import 'expectation.dart' show Expectation, ExpectationGroup, ExpectationSet;
|
||||
|
||||
typedef Future<ChainContext> CreateContext(
|
||||
Chain suite, Map<String, String> environment);
|
||||
@@ -148,6 +148,14 @@ abstract class ChainContext {
|
||||
}
|
||||
final Set<Expectation> expectedOutcomes = processExpectedOutcomes(
|
||||
expectations.expectations(description.shortName), description);
|
||||
bool shouldSkip = false;
|
||||
for (Expectation expectation in expectedOutcomes) {
|
||||
if (expectation.group == ExpectationGroup.Skip) {
|
||||
shouldSkip = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (shouldSkip) continue;
|
||||
final StringBuffer sb = new StringBuffer();
|
||||
final Step? lastStep = steps.isNotEmpty ? steps.last : null;
|
||||
final Iterator<Step> iterator = steps.iterator;
|
||||
|
||||
Reference in New Issue
Block a user