Version 2.15.0-254.0.dev
Merge commit '25ef052cfcff4bf67d878b85df9852bcf04f8df5' into 'dev'
diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart
index 6e68327..ed6fa697 100644
--- a/pkg/dev_compiler/lib/src/kernel/compiler.dart
+++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart
@@ -8,8 +8,7 @@
import 'dart:convert';
import 'dart:math' show max, min;
-import 'package:front_end/src/fasta/kernel/constructor_tearoff_lowering.dart'
- show isTearOffLowering;
+import 'package:front_end/src/api_unstable/ddc.dart';
import 'package:kernel/class_hierarchy.dart';
import 'package:kernel/core_types.dart';
import 'package:kernel/kernel.dart';
@@ -1319,7 +1318,7 @@
/// otherwise define them as lazy properties.
void _emitStaticFields(Class c, List<js_ast.Statement> body) {
var fields = c.fields
- .where((f) => f.isStatic && getRedirectingFactories(f) == null)
+ .where((f) => f.isStatic && !isRedirectingFactoryField(f))
.toList();
if (c.isEnum) {
// We know enum fields can be safely emitted as const fields, as long
@@ -1853,7 +1852,9 @@
Set<Member> redirectingFactories;
for (var m in c.fields) {
if (m.isStatic) {
- redirectingFactories ??= getRedirectingFactories(m)?.toSet();
+ if (isRedirectingFactoryField(m)) {
+ redirectingFactories = getRedirectingFactories(m).toSet();
+ }
} else if (_extensionTypes.isNativeClass(c)) {
jsMethods.addAll(_emitNativeFieldAccessors(m));
} else if (virtualFields.containsKey(m)) {
diff --git a/pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart b/pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart
index 958e4af..44fe33a 100644
--- a/pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart
+++ b/pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart
@@ -4,7 +4,6 @@
import 'dart:collection';
import 'package:collection/collection.dart';
-import 'package:front_end/src/api_unstable/ddc.dart';
import 'package:kernel/core_types.dart';
import 'package:kernel/kernel.dart';
@@ -246,18 +245,6 @@
return false;
}
-/// Returns the redirecting factory constructors for the enclosing class,
-/// if the field [f] is storing that information, otherwise returns `null`.
-Iterable<Member>? getRedirectingFactories(Field f) {
- // TODO(jmesserly): this relies on implementation details in Kernel
- if (isRedirectingFactoryField(f)) {
- assert(f.isStatic);
- var list = f.initializer as ListLiteral;
- return list.expressions.map((e) => (e as StaticGet).target);
- }
- return null;
-}
-
/// Gets the real supertype of [c] and the list of [mixins] in reverse
/// application order (mixins will appear before ones they override).
///
diff --git a/pkg/front_end/lib/src/api_unstable/ddc.dart b/pkg/front_end/lib/src/api_unstable/ddc.dart
index 23e1784..0d7c334 100644
--- a/pkg/front_end/lib/src/api_unstable/ddc.dart
+++ b/pkg/front_end/lib/src/api_unstable/ddc.dart
@@ -64,8 +64,15 @@
export '../fasta/incremental_compiler.dart' show IncrementalCompiler;
+export '../fasta/kernel/constructor_tearoff_lowering.dart'
+ show isTearOffLowering;
+
export '../fasta/kernel/redirecting_factory_body.dart'
- show RedirectingFactoryBody, isRedirectingFactoryField, redirectingName;
+ show
+ getRedirectingFactories,
+ RedirectingFactoryBody,
+ isRedirectingFactoryField,
+ redirectingName;
export '../fasta/type_inference/type_schema_environment.dart'
show TypeSchemaEnvironment;
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
index edf5ede..b367503 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
@@ -29,7 +29,10 @@
import '../kernel/constructor_tearoff_lowering.dart';
import '../kernel/redirecting_factory_body.dart'
- show RedirectingFactoryBody, isRedirectingFactoryField;
+ show
+ RedirectingFactoryBody,
+ getRedirectingFactories,
+ isRedirectingFactoryField;
import '../problems.dart' show internalProblem, unhandled, unimplemented;
@@ -190,10 +193,8 @@
}
for (Field field in cls.fields) {
if (isRedirectingFactoryField(field)) {
- ListLiteral initializer = field.initializer as ListLiteral;
- for (Expression expression in initializer.expressions) {
- StaticGet get = expression as StaticGet;
- RedirectingFactoryBody.restoreFromDill(get.target as Procedure);
+ for (Procedure target in getRedirectingFactories(field)) {
+ RedirectingFactoryBody.restoreFromDill(target);
}
} else {
classBuilder.addField(field);
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index af63914..4b2244d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -7092,11 +7092,6 @@
}
@override
- StaticGet makeStaticGet(Member readTarget, Token token) {
- return new StaticGet(readTarget)..fileOffset = offsetForToken(token);
- }
-
- @override
Expression wrapInDeferredCheck(
Expression expression, PrefixBuilder prefix, int charOffset) {
VariableDeclaration check = new VariableDeclaration.forValue(
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index 90961d6..bc2af8b 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -35,7 +35,6 @@
import '../fasta_codes.dart';
import 'constant_int_folder.dart';
-import 'constructor_tearoff_lowering.dart';
part 'constant_collection_builders.dart';
@@ -701,34 +700,6 @@
if (expression is ConstantExpression) {
if (result.typeArguments.every(isInstantiated)) {
return evaluateAndTransformWithContext(node, result);
- } else if (enableConstructorTearOff) {
- Constant constant = expression.constant;
- if (constant is TypedefTearOffConstant) {
- Substitution substitution =
- Substitution.fromPairs(constant.parameters, node.typeArguments);
- return new Instantiation(
- new ConstantExpression(constant.tearOffConstant,
- constant.tearOffConstant.getType(_staticTypeContext!))
- ..fileOffset = expression.fileOffset,
- constant.types.map(substitution.substituteType).toList());
- } else {
- LoweredTypedefTearOff? loweredTypedefTearOff =
- LoweredTypedefTearOff.fromConstant(constant);
- if (loweredTypedefTearOff != null) {
- Constant tearOffConstant = constantEvaluator
- .canonicalize(loweredTypedefTearOff.targetTearOffConstant);
- Substitution substitution = Substitution.fromPairs(
- loweredTypedefTearOff.typedefTearOff.function.typeParameters,
- node.typeArguments);
- return new Instantiation(
- new ConstantExpression(tearOffConstant,
- tearOffConstant.getType(_staticTypeContext!))
- ..fileOffset = expression.fileOffset,
- loweredTypedefTearOff.typeArguments
- .map(substitution.substituteType)
- .toList());
- }
- }
}
}
return node;
@@ -3364,29 +3335,8 @@
// ignore: unnecessary_null_comparison
assert(types != null);
- List<DartType> typeArguments = types;
- if (constant is TypedefTearOffConstant) {
- Substitution substitution =
- Substitution.fromPairs(constant.parameters, typeArguments);
- typeArguments =
- constant.types.map(substitution.substituteType).toList();
- constant = constant.tearOffConstant;
- } else {
- LoweredTypedefTearOff? loweredTypedefTearOff =
- LoweredTypedefTearOff.fromConstant(constant);
- if (loweredTypedefTearOff != null) {
- constant =
- canonicalize(loweredTypedefTearOff.targetTearOffConstant);
- Substitution substitution = Substitution.fromPairs(
- loweredTypedefTearOff.typedefTearOff.function.typeParameters,
- node.typeArguments);
- typeArguments = loweredTypedefTearOff.typeArguments
- .map(substitution.substituteType)
- .toList();
- }
- }
return canonicalize(
- new InstantiationConstant(constant, convertTypes(typeArguments)));
+ new InstantiationConstant(constant, convertTypes(types)));
} else {
// Probably unreachable.
return createEvaluationErrorConstant(
diff --git a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
index e3dd8b1..244a71d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
@@ -428,19 +428,18 @@
/// Reverse engineered typedef tear off information.
class LoweredTypedefTearOff {
Procedure typedefTearOff;
- Constant targetTearOffConstant;
+ Expression targetTearOff;
List<DartType> typeArguments;
LoweredTypedefTearOff(
- this.typedefTearOff, this.targetTearOffConstant, this.typeArguments);
+ this.typedefTearOff, this.targetTearOff, this.typeArguments);
- /// Reverse engineers [constant] to a [LoweredTypedefTearOff] if [constant] is
- /// the encoding of a lowered typedef tear off.
- // TODO(johnniwinther): Check that this works with outlines.
- static LoweredTypedefTearOff? fromConstant(Constant constant) {
- if (constant is StaticTearOffConstant &&
- isTypedefTearOffLowering(constant.target)) {
- Procedure typedefTearOff = constant.target;
+ /// Reverse engineers [expression] to a [LoweredTypedefTearOff] if
+ /// [expression] is the encoding of a lowered typedef tear off.
+ static LoweredTypedefTearOff? fromExpression(Expression expression) {
+ if (expression is StaticTearOff &&
+ isTypedefTearOffLowering(expression.target)) {
+ Procedure typedefTearOff = expression.target;
Statement? body = typedefTearOff.function.body;
if (body is ReturnStatement) {
Expression? constructorInvocation = body.expression;
@@ -463,15 +462,15 @@
break;
}
}
- Constant tearOffConstant;
+ Expression targetTearOff;
if (target is Constructor ||
target is Procedure && target.isFactory) {
- tearOffConstant = new ConstructorTearOffConstant(target!);
+ targetTearOff = new ConstructorTearOff(target!);
} else {
- tearOffConstant = new StaticTearOffConstant(target as Procedure);
+ targetTearOff = new StaticTearOff(target as Procedure);
}
return new LoweredTypedefTearOff(
- typedefTearOff, tearOffConstant, typeArguments!);
+ typedefTearOff, targetTearOff, typeArguments!);
}
}
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
index b5acdef..9347efa 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -1438,11 +1438,16 @@
Expression _createRead() {
Expression read;
+ Member? readTarget = this.readTarget;
if (readTarget == null) {
read = _makeInvalidRead(UnresolvedKind.Getter);
} else {
_reportNonNullableInNullAwareWarningIfNeeded();
- read = _helper.makeStaticGet(readTarget!, token);
+ if (readTarget is Procedure && readTarget.kind == ProcedureKind.Method) {
+ read = _helper.forest.createStaticTearOff(fileOffset, readTarget);
+ } else {
+ read = _helper.forest.createStaticGet(fileOffset, readTarget);
+ }
}
return read;
}
@@ -3221,6 +3226,9 @@
if (tearOff.isRedirectingFactory) {
tearOffExpression = _helper.forest
.createRedirectingFactoryTearOff(token.charOffset, tearOff);
+ } else if (tearOff.isFactory) {
+ tearOffExpression = _helper.forest
+ .createConstructorTearOff(token.charOffset, tearOff);
} else {
tearOffExpression = _helper.forest
.createStaticTearOff(token.charOffset, tearOff);
@@ -3264,8 +3272,13 @@
aliasBuilder.findConstructorOrFactory(
name.text, nameOffset, _uri, _helper.libraryBuilder);
if (tearOffLowering != null) {
- return _helper.forest
- .createStaticTearOff(token.charOffset, tearOffLowering);
+ if (tearOffLowering.isFactory) {
+ return _helper.forest.createConstructorTearOff(
+ token.charOffset, tearOffLowering);
+ } else {
+ return _helper.forest
+ .createStaticTearOff(token.charOffset, tearOffLowering);
+ }
}
FreshTypeParameters freshTypeParameters =
getFreshTypeParameters(aliasBuilder.typedef.typeParameters);
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
index 0bd29ce..3d52030 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
@@ -107,8 +107,6 @@
LocatedMessage? checkArgumentsForFunction(FunctionNode function,
Arguments arguments, int offset, List<TypeParameter> typeParameters);
- StaticGet makeStaticGet(Member readTarget, Token token);
-
Expression wrapInDeferredCheck(
Expression expression, PrefixBuilder prefix, int charOffset);
diff --git a/pkg/front_end/lib/src/fasta/kernel/forest.dart b/pkg/front_end/lib/src/fasta/kernel/forest.dart
index 8e7b3b9..9ce125d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/forest.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/forest.dart
@@ -833,24 +833,36 @@
return new ParenthesizedExpression(expression)..fileOffset = fileOffset;
}
- ConstructorTearOff createConstructorTearOff(
- int fileOffset, Constructor constructor) {
+ ConstructorTearOff createConstructorTearOff(int fileOffset, Member target) {
// ignore: unnecessary_null_comparison
assert(fileOffset != null);
- return new ConstructorTearOff(constructor)..fileOffset = fileOffset;
+ assert(target is Constructor || (target is Procedure && target.isFactory),
+ "Unexpected constructor tear off target: $target");
+ return new ConstructorTearOff(target)..fileOffset = fileOffset;
}
StaticTearOff createStaticTearOff(int fileOffset, Procedure procedure) {
// ignore: unnecessary_null_comparison
assert(fileOffset != null);
- assert(!procedure.isRedirectingFactory);
+ assert(procedure.kind == ProcedureKind.Method,
+ "Unexpected static tear off target: $procedure");
+ assert(!procedure.isRedirectingFactory,
+ "Unexpected static tear off target: $procedure");
return new StaticTearOff(procedure)..fileOffset = fileOffset;
}
+ StaticGet createStaticGet(int fileOffset, Member target) {
+ // ignore: unnecessary_null_comparison
+ assert(fileOffset != null);
+ assert(target is Field || (target is Procedure && target.isGetter));
+ return new StaticGet(target)..fileOffset = fileOffset;
+ }
+
RedirectingFactoryTearOff createRedirectingFactoryTearOff(
int fileOffset, Procedure procedure) {
// ignore: unnecessary_null_comparison
assert(fileOffset != null);
+ assert(procedure.isRedirectingFactory);
return new RedirectingFactoryTearOff(procedure)..fileOffset = fileOffset;
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
index 4e18e23..57f6519 100644
--- a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -6851,7 +6851,7 @@
inferrer.typeSchemaEnvironment
.futureType(const DynamicType(), inferrer.library.nonNullable),
inferrer.library.nonNullable);
- Expression replacement = new StaticGet(node.target)
+ Expression replacement = new StaticTearOff(node.target)
..fileOffset = node.fileOffset;
return new ExpressionInferenceResult(inferredType, replacement);
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/redirecting_factory_body.dart b/pkg/front_end/lib/src/fasta/kernel/redirecting_factory_body.dart
index 3697827..c363409 100644
--- a/pkg/front_end/lib/src/fasta/kernel/redirecting_factory_body.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/redirecting_factory_body.dart
@@ -23,6 +23,29 @@
member.name.text == redirectingName;
}
+/// Returns the redirecting factory constructors for the enclosing class from
+/// [field].
+///
+/// `isRedirectingFactoryField(field)` is assumed to be true.
+Iterable<Procedure> getRedirectingFactories(Field field) {
+ assert(isRedirectingFactoryField(field));
+ List<Procedure> redirectingFactories = [];
+ ListLiteral initializer = field.initializer as ListLiteral;
+ for (Expression expression in initializer.expressions) {
+ Procedure target;
+ if (expression is ConstantExpression) {
+ ConstructorTearOffConstant constant =
+ expression.constant as ConstructorTearOffConstant;
+ target = constant.target as Procedure;
+ } else {
+ ConstructorTearOff get = expression as ConstructorTearOff;
+ target = get.target as Procedure;
+ }
+ redirectingFactories.add(target);
+ }
+ return redirectingFactories;
+}
+
/// Name used for a synthesized let variable used to encode redirecting factory
/// information in a factory method body.
const String letName = "#redirecting_factory";
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index 91fa5d8..a7d6ce8 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -908,8 +908,8 @@
}
Field field = constructorsField.field;
ListLiteral literal = field.initializer as ListLiteral;
- literal.expressions
- .add(new StaticGet(constructorBuilder.member)..parent = literal);
+ literal.expressions.add(
+ new ConstructorTearOff(constructorBuilder.member)..parent = literal);
}
@override
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index 3fcba19..7e9d30a 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -36,6 +36,7 @@
import '../fasta_codes.dart';
import '../kernel/class_hierarchy_builder.dart' show ClassMember;
+import '../kernel/constructor_tearoff_lowering.dart';
import '../kernel/kernel_helper.dart';
import '../kernel/inference_visitor.dart';
import '../kernel/internal_ast.dart';
@@ -4065,14 +4066,33 @@
DartType tearOffType,
Expression expression) {
if (implicitInstantiation != null) {
+ List<DartType> typeArguments = implicitInstantiation.typeArguments;
if (!isTopLevel) {
checkBoundsInInstantiation(implicitInstantiation.functionType,
- implicitInstantiation.typeArguments, expression.fileOffset,
+ typeArguments, expression.fileOffset,
inferred: true);
}
- expression =
- new Instantiation(expression, implicitInstantiation.typeArguments)
- ..fileOffset = expression.fileOffset;
+ if (expression is TypedefTearOff) {
+ Substitution substitution =
+ Substitution.fromPairs(expression.typeParameters, typeArguments);
+ typeArguments =
+ expression.typeArguments.map(substitution.substituteType).toList();
+ expression = expression.expression;
+ } else {
+ LoweredTypedefTearOff? loweredTypedefTearOff =
+ LoweredTypedefTearOff.fromExpression(expression);
+ if (loweredTypedefTearOff != null) {
+ Substitution substitution = Substitution.fromPairs(
+ loweredTypedefTearOff.typedefTearOff.function.typeParameters,
+ typeArguments);
+ typeArguments = loweredTypedefTearOff.typeArguments
+ .map(substitution.substituteType)
+ .toList();
+ expression = loweredTypedefTearOff.targetTearOff;
+ }
+ }
+ expression = new Instantiation(expression, typeArguments)
+ ..fileOffset = expression.fileOffset;
tearOffType = implicitInstantiation.instantiatedType;
}
return new ExpressionInferenceResult(tearOffType, expression);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.strong.expect
index 107b186..ace8876 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.strong.expect
@@ -5,7 +5,7 @@
typedef B<T extends core::Object? = dynamic> = self::A<T%>;
typedef C<unrelated T extends core::Object? = dynamic> = self::A<core::int>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -14,54 +14,55 @@
static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
return new self::A::•<self::A::redirect::T%>();
}
-static const field <T extends core::Object? = dynamic>() → self::A<T%> a = #C1;
-static const field () → self::A<core::int> b = #C2;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> c = #C3;
-static const field () → self::A<core::int> d = #C4;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> e = #C5;
-static const field () → self::A<core::int> f = #C6;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> g = #C1;
-static const field () → self::A<core::int> h = #C2;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> i = #C3;
-static const field () → self::A<core::int> j = #C4;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> k = #C5;
-static const field () → self::A<core::int> l = #C6;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C7;
-static const field () → self::A<core::int> n = #C2;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C8;
-static const field () → self::A<core::int> p = #C4;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C9;
-static const field () → self::A<core::int> r = #C6;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> a = #C2;
+static const field () → self::A<core::int> b = #C3;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> c = #C4;
+static const field () → self::A<core::int> d = #C5;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> e = #C6;
+static const field () → self::A<core::int> f = #C7;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> g = #C2;
+static const field () → self::A<core::int> h = #C3;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> i = #C4;
+static const field () → self::A<core::int> j = #C5;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> k = #C6;
+static const field () → self::A<core::int> l = #C7;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C8;
+static const field () → self::A<core::int> n = #C3;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C9;
+static const field () → self::A<core::int> p = #C5;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C10;
+static const field () → self::A<core::int> r = #C7;
static method test() → dynamic {
- <T extends core::Object? = dynamic>() → self::A<T%> a = #C1;
- () → self::A<core::int> b = #C2;
- <T extends core::Object? = dynamic>() → self::A<T%> c = #C3;
- () → self::A<core::int> d = #C4;
- <T extends core::Object? = dynamic>() → self::A<T%> e = #C5;
- () → self::A<core::int> f = #C6;
- <T extends core::Object? = dynamic>() → self::A<T%> g = #C1;
- () → self::A<core::int> h = #C2;
- <T extends core::Object? = dynamic>() → self::A<T%> i = #C3;
- () → self::A<core::int> j = #C4;
- <T extends core::Object? = dynamic>() → self::A<T%> k = #C5;
- () → self::A<core::int> l = #C6;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C7;
- () → self::A<core::int> n = #C2;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C8;
- () → self::A<core::int> p = #C4;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C9;
- () → self::A<core::int> r = #C6;
+ <T extends core::Object? = dynamic>() → self::A<T%> a = #C2;
+ () → self::A<core::int> b = #C3;
+ <T extends core::Object? = dynamic>() → self::A<T%> c = #C4;
+ () → self::A<core::int> d = #C5;
+ <T extends core::Object? = dynamic>() → self::A<T%> e = #C6;
+ () → self::A<core::int> f = #C7;
+ <T extends core::Object? = dynamic>() → self::A<T%> g = #C2;
+ () → self::A<core::int> h = #C3;
+ <T extends core::Object? = dynamic>() → self::A<T%> i = #C4;
+ () → self::A<core::int> j = #C5;
+ <T extends core::Object? = dynamic>() → self::A<T%> k = #C6;
+ () → self::A<core::int> l = #C7;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C8;
+ () → self::A<core::int> n = #C3;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C9;
+ () → self::A<core::int> p = #C5;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C10;
+ () → self::A<core::int> r = #C7;
}
static method main() → dynamic {}
constants {
- #C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <core::int>
- #C3 = static-tearoff self::A::fact
- #C4 = instantiation self::A::fact <core::int>
- #C5 = redirecting-factory-tearoff self::A::redirect
- #C6 = instantiation self::A::redirect <core::int>
- #C7 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C1<core::int>)
- #C8 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C3<core::int>)
- #C9 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C5<core::int>)
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = constructor-tearoff self::A::•
+ #C3 = instantiation #C2 <core::int>
+ #C4 = constructor-tearoff self::A::fact
+ #C5 = instantiation #C4 <core::int>
+ #C6 = redirecting-factory-tearoff self::A::redirect
+ #C7 = instantiation #C6 <core::int>
+ #C8 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C2<core::int>)
+ #C9 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C4<core::int>)
+ #C10 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C6<core::int>)
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.strong.transformed.expect
index 107b186..ace8876 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.strong.transformed.expect
@@ -5,7 +5,7 @@
typedef B<T extends core::Object? = dynamic> = self::A<T%>;
typedef C<unrelated T extends core::Object? = dynamic> = self::A<core::int>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -14,54 +14,55 @@
static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
return new self::A::•<self::A::redirect::T%>();
}
-static const field <T extends core::Object? = dynamic>() → self::A<T%> a = #C1;
-static const field () → self::A<core::int> b = #C2;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> c = #C3;
-static const field () → self::A<core::int> d = #C4;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> e = #C5;
-static const field () → self::A<core::int> f = #C6;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> g = #C1;
-static const field () → self::A<core::int> h = #C2;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> i = #C3;
-static const field () → self::A<core::int> j = #C4;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> k = #C5;
-static const field () → self::A<core::int> l = #C6;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C7;
-static const field () → self::A<core::int> n = #C2;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C8;
-static const field () → self::A<core::int> p = #C4;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C9;
-static const field () → self::A<core::int> r = #C6;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> a = #C2;
+static const field () → self::A<core::int> b = #C3;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> c = #C4;
+static const field () → self::A<core::int> d = #C5;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> e = #C6;
+static const field () → self::A<core::int> f = #C7;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> g = #C2;
+static const field () → self::A<core::int> h = #C3;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> i = #C4;
+static const field () → self::A<core::int> j = #C5;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> k = #C6;
+static const field () → self::A<core::int> l = #C7;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C8;
+static const field () → self::A<core::int> n = #C3;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C9;
+static const field () → self::A<core::int> p = #C5;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C10;
+static const field () → self::A<core::int> r = #C7;
static method test() → dynamic {
- <T extends core::Object? = dynamic>() → self::A<T%> a = #C1;
- () → self::A<core::int> b = #C2;
- <T extends core::Object? = dynamic>() → self::A<T%> c = #C3;
- () → self::A<core::int> d = #C4;
- <T extends core::Object? = dynamic>() → self::A<T%> e = #C5;
- () → self::A<core::int> f = #C6;
- <T extends core::Object? = dynamic>() → self::A<T%> g = #C1;
- () → self::A<core::int> h = #C2;
- <T extends core::Object? = dynamic>() → self::A<T%> i = #C3;
- () → self::A<core::int> j = #C4;
- <T extends core::Object? = dynamic>() → self::A<T%> k = #C5;
- () → self::A<core::int> l = #C6;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C7;
- () → self::A<core::int> n = #C2;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C8;
- () → self::A<core::int> p = #C4;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C9;
- () → self::A<core::int> r = #C6;
+ <T extends core::Object? = dynamic>() → self::A<T%> a = #C2;
+ () → self::A<core::int> b = #C3;
+ <T extends core::Object? = dynamic>() → self::A<T%> c = #C4;
+ () → self::A<core::int> d = #C5;
+ <T extends core::Object? = dynamic>() → self::A<T%> e = #C6;
+ () → self::A<core::int> f = #C7;
+ <T extends core::Object? = dynamic>() → self::A<T%> g = #C2;
+ () → self::A<core::int> h = #C3;
+ <T extends core::Object? = dynamic>() → self::A<T%> i = #C4;
+ () → self::A<core::int> j = #C5;
+ <T extends core::Object? = dynamic>() → self::A<T%> k = #C6;
+ () → self::A<core::int> l = #C7;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C8;
+ () → self::A<core::int> n = #C3;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C9;
+ () → self::A<core::int> p = #C5;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C10;
+ () → self::A<core::int> r = #C7;
}
static method main() → dynamic {}
constants {
- #C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <core::int>
- #C3 = static-tearoff self::A::fact
- #C4 = instantiation self::A::fact <core::int>
- #C5 = redirecting-factory-tearoff self::A::redirect
- #C6 = instantiation self::A::redirect <core::int>
- #C7 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C1<core::int>)
- #C8 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C3<core::int>)
- #C9 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C5<core::int>)
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = constructor-tearoff self::A::•
+ #C3 = instantiation #C2 <core::int>
+ #C4 = constructor-tearoff self::A::fact
+ #C5 = instantiation #C4 <core::int>
+ #C6 = redirecting-factory-tearoff self::A::redirect
+ #C7 = instantiation #C6 <core::int>
+ #C8 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C2<core::int>)
+ #C9 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C4<core::int>)
+ #C10 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C6<core::int>)
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.expect
index fad0d55..fc95e6e 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.expect
@@ -5,7 +5,7 @@
typedef B<T extends core::Object? = dynamic> = self::A<T%>;
typedef C<unrelated T extends core::Object? = dynamic> = self::A<core::int>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -14,54 +14,55 @@
static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
return new self::A::•<self::A::redirect::T%>();
}
-static const field <T extends core::Object? = dynamic>() → self::A<T%> a = #C1;
-static const field () → self::A<core::int> b = #C2;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> c = #C3;
-static const field () → self::A<core::int> d = #C4;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> e = #C5;
-static const field () → self::A<core::int> f = #C6;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> g = #C1;
-static const field () → self::A<core::int> h = #C2;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> i = #C3;
-static const field () → self::A<core::int> j = #C4;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> k = #C5;
-static const field () → self::A<core::int> l = #C6;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C7;
-static const field () → self::A<core::int> n = #C2;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C8;
-static const field () → self::A<core::int> p = #C4;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C9;
-static const field () → self::A<core::int> r = #C6;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> a = #C2;
+static const field () → self::A<core::int> b = #C3;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> c = #C4;
+static const field () → self::A<core::int> d = #C5;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> e = #C6;
+static const field () → self::A<core::int> f = #C7;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> g = #C2;
+static const field () → self::A<core::int> h = #C3;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> i = #C4;
+static const field () → self::A<core::int> j = #C5;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> k = #C6;
+static const field () → self::A<core::int> l = #C7;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C8;
+static const field () → self::A<core::int> n = #C3;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C9;
+static const field () → self::A<core::int> p = #C5;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C10;
+static const field () → self::A<core::int> r = #C7;
static method test() → dynamic {
- <T extends core::Object? = dynamic>() → self::A<T%> a = #C1;
- () → self::A<core::int> b = #C2;
- <T extends core::Object? = dynamic>() → self::A<T%> c = #C3;
- () → self::A<core::int> d = #C4;
- <T extends core::Object? = dynamic>() → self::A<T%> e = #C5;
- () → self::A<core::int> f = #C6;
- <T extends core::Object? = dynamic>() → self::A<T%> g = #C1;
- () → self::A<core::int> h = #C2;
- <T extends core::Object? = dynamic>() → self::A<T%> i = #C3;
- () → self::A<core::int> j = #C4;
- <T extends core::Object? = dynamic>() → self::A<T%> k = #C5;
- () → self::A<core::int> l = #C6;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C7;
- () → self::A<core::int> n = #C2;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C8;
- () → self::A<core::int> p = #C4;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C9;
- () → self::A<core::int> r = #C6;
+ <T extends core::Object? = dynamic>() → self::A<T%> a = #C2;
+ () → self::A<core::int> b = #C3;
+ <T extends core::Object? = dynamic>() → self::A<T%> c = #C4;
+ () → self::A<core::int> d = #C5;
+ <T extends core::Object? = dynamic>() → self::A<T%> e = #C6;
+ () → self::A<core::int> f = #C7;
+ <T extends core::Object? = dynamic>() → self::A<T%> g = #C2;
+ () → self::A<core::int> h = #C3;
+ <T extends core::Object? = dynamic>() → self::A<T%> i = #C4;
+ () → self::A<core::int> j = #C5;
+ <T extends core::Object? = dynamic>() → self::A<T%> k = #C6;
+ () → self::A<core::int> l = #C7;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C8;
+ () → self::A<core::int> n = #C3;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C9;
+ () → self::A<core::int> p = #C5;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C10;
+ () → self::A<core::int> r = #C7;
}
static method main() → dynamic {}
constants {
- #C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <core::int*>
- #C3 = static-tearoff self::A::fact
- #C4 = instantiation self::A::fact <core::int*>
- #C5 = redirecting-factory-tearoff self::A::redirect
- #C6 = instantiation self::A::redirect <core::int*>
- #C7 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C1<core::int>)
- #C8 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C3<core::int>)
- #C9 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C5<core::int>)
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = constructor-tearoff self::A::•
+ #C3 = instantiation #C2 <core::int*>
+ #C4 = constructor-tearoff self::A::fact
+ #C5 = instantiation #C4 <core::int*>
+ #C6 = redirecting-factory-tearoff self::A::redirect
+ #C7 = instantiation #C6 <core::int*>
+ #C8 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C2<core::int>)
+ #C9 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C4<core::int>)
+ #C10 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C6<core::int>)
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.outline.expect
index 2e30650..a68155b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.outline.expect
@@ -38,15 +38,16 @@
Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///const_tear_off.dart:5:7 -> ConstructorTearOffConstant(A.redirect)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///const_tear_off.dart:14:11 -> ConstructorTearOffConstant(A.)
Evaluated: Instantiation @ org-dartlang-testcase:///const_tear_off.dart:15:11 -> InstantiationConstant(A.<int*>)
-Evaluated: StaticTearOff @ org-dartlang-testcase:///const_tear_off.dart:16:11 -> StaticTearOffConstant(A.fact)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///const_tear_off.dart:16:11 -> ConstructorTearOffConstant(A.fact)
Evaluated: Instantiation @ org-dartlang-testcase:///const_tear_off.dart:17:11 -> InstantiationConstant(A.fact<int*>)
Evaluated: RedirectingFactoryTearOff @ org-dartlang-testcase:///const_tear_off.dart:18:11 -> RedirectingFactoryTearOffConstant(A.redirect)
Evaluated: Instantiation @ org-dartlang-testcase:///const_tear_off.dart:19:11 -> InstantiationConstant(A.redirect<int*>)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///const_tear_off.dart:20:11 -> ConstructorTearOffConstant(A.)
Evaluated: Instantiation @ org-dartlang-testcase:///const_tear_off.dart:21:11 -> InstantiationConstant(A.<int*>)
-Evaluated: StaticTearOff @ org-dartlang-testcase:///const_tear_off.dart:22:11 -> StaticTearOffConstant(A.fact)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///const_tear_off.dart:22:11 -> ConstructorTearOffConstant(A.fact)
Evaluated: Instantiation @ org-dartlang-testcase:///const_tear_off.dart:23:11 -> InstantiationConstant(A.fact<int*>)
Evaluated: RedirectingFactoryTearOff @ org-dartlang-testcase:///const_tear_off.dart:24:11 -> RedirectingFactoryTearOffConstant(A.redirect)
Evaluated: Instantiation @ org-dartlang-testcase:///const_tear_off.dart:25:11 -> InstantiationConstant(A.redirect<int*>)
@@ -56,4 +57,4 @@
Evaluated: Instantiation @ org-dartlang-testcase:///const_tear_off.dart:29:11 -> InstantiationConstant(A.fact<int*>)
Evaluated: TypedefTearOff @ org-dartlang-testcase:///const_tear_off.dart:30:11 -> TypedefTearOffConstant(<T>A.redirect<int>)
Evaluated: Instantiation @ org-dartlang-testcase:///const_tear_off.dart:31:11 -> InstantiationConstant(A.redirect<int*>)
-Extra constant evaluation: evaluated: 21, effectively constant: 18
+Extra constant evaluation: evaluated: 21, effectively constant: 19
diff --git a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.transformed.expect
index fad0d55..fc95e6e 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/const_tear_off.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
typedef B<T extends core::Object? = dynamic> = self::A<T%>;
typedef C<unrelated T extends core::Object? = dynamic> = self::A<core::int>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -14,54 +14,55 @@
static factory redirect<T extends core::Object? = dynamic>() → self::A<self::A::redirect::T%>
return new self::A::•<self::A::redirect::T%>();
}
-static const field <T extends core::Object? = dynamic>() → self::A<T%> a = #C1;
-static const field () → self::A<core::int> b = #C2;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> c = #C3;
-static const field () → self::A<core::int> d = #C4;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> e = #C5;
-static const field () → self::A<core::int> f = #C6;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> g = #C1;
-static const field () → self::A<core::int> h = #C2;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> i = #C3;
-static const field () → self::A<core::int> j = #C4;
-static const field <T extends core::Object? = dynamic>() → self::A<T%> k = #C5;
-static const field () → self::A<core::int> l = #C6;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C7;
-static const field () → self::A<core::int> n = #C2;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C8;
-static const field () → self::A<core::int> p = #C4;
-static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C9;
-static const field () → self::A<core::int> r = #C6;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> a = #C2;
+static const field () → self::A<core::int> b = #C3;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> c = #C4;
+static const field () → self::A<core::int> d = #C5;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> e = #C6;
+static const field () → self::A<core::int> f = #C7;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> g = #C2;
+static const field () → self::A<core::int> h = #C3;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> i = #C4;
+static const field () → self::A<core::int> j = #C5;
+static const field <T extends core::Object? = dynamic>() → self::A<T%> k = #C6;
+static const field () → self::A<core::int> l = #C7;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C8;
+static const field () → self::A<core::int> n = #C3;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C9;
+static const field () → self::A<core::int> p = #C5;
+static const field <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C10;
+static const field () → self::A<core::int> r = #C7;
static method test() → dynamic {
- <T extends core::Object? = dynamic>() → self::A<T%> a = #C1;
- () → self::A<core::int> b = #C2;
- <T extends core::Object? = dynamic>() → self::A<T%> c = #C3;
- () → self::A<core::int> d = #C4;
- <T extends core::Object? = dynamic>() → self::A<T%> e = #C5;
- () → self::A<core::int> f = #C6;
- <T extends core::Object? = dynamic>() → self::A<T%> g = #C1;
- () → self::A<core::int> h = #C2;
- <T extends core::Object? = dynamic>() → self::A<T%> i = #C3;
- () → self::A<core::int> j = #C4;
- <T extends core::Object? = dynamic>() → self::A<T%> k = #C5;
- () → self::A<core::int> l = #C6;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C7;
- () → self::A<core::int> n = #C2;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C8;
- () → self::A<core::int> p = #C4;
- <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C9;
- () → self::A<core::int> r = #C6;
+ <T extends core::Object? = dynamic>() → self::A<T%> a = #C2;
+ () → self::A<core::int> b = #C3;
+ <T extends core::Object? = dynamic>() → self::A<T%> c = #C4;
+ () → self::A<core::int> d = #C5;
+ <T extends core::Object? = dynamic>() → self::A<T%> e = #C6;
+ () → self::A<core::int> f = #C7;
+ <T extends core::Object? = dynamic>() → self::A<T%> g = #C2;
+ () → self::A<core::int> h = #C3;
+ <T extends core::Object? = dynamic>() → self::A<T%> i = #C4;
+ () → self::A<core::int> j = #C5;
+ <T extends core::Object? = dynamic>() → self::A<T%> k = #C6;
+ () → self::A<core::int> l = #C7;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> m = #C8;
+ () → self::A<core::int> n = #C3;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> o = #C9;
+ () → self::A<core::int> p = #C5;
+ <unrelated T extends core::Object? = dynamic>() → self::A<core::int> q = #C10;
+ () → self::A<core::int> r = #C7;
}
static method main() → dynamic {}
constants {
- #C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <core::int*>
- #C3 = static-tearoff self::A::fact
- #C4 = instantiation self::A::fact <core::int*>
- #C5 = redirecting-factory-tearoff self::A::redirect
- #C6 = instantiation self::A::redirect <core::int*>
- #C7 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C1<core::int>)
- #C8 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C3<core::int>)
- #C9 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C5<core::int>)
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = constructor-tearoff self::A::•
+ #C3 = instantiation #C2 <core::int*>
+ #C4 = constructor-tearoff self::A::fact
+ #C5 = instantiation #C4 <core::int*>
+ #C6 = redirecting-factory-tearoff self::A::redirect
+ #C7 = instantiation #C6 <core::int*>
+ #C8 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C2<core::int>)
+ #C9 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C4<core::int>)
+ #C10 = typedef-tearoff <unrelated T extends core::Object? = dynamic>.(#C6<core::int>)
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.strong.expect
index eb48965..a949112 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.strong.expect
@@ -317,5 +317,5 @@
#C2 = TypeLiteralConstant(self::Class<dynamic>)
#C3 = TypeLiteralConstant(core::int)
#C4 = constructor-tearoff self::Class::named
- #C5 = instantiation self::Class::named <core::int>
+ #C5 = instantiation #C4 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.strong.transformed.expect
index de6a5ab..1f927ba 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.strong.transformed.expect
@@ -317,5 +317,5 @@
#C2 = TypeLiteralConstant(self::Class<dynamic>)
#C3 = TypeLiteralConstant(core::int)
#C4 = constructor-tearoff self::Class::named
- #C5 = instantiation self::Class::named <core::int>
+ #C5 = instantiation #C4 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.weak.expect
index 117593c..25718f4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.weak.expect
@@ -317,5 +317,5 @@
#C2 = TypeLiteralConstant(self::Class<dynamic>*)
#C3 = TypeLiteralConstant(core::int*)
#C4 = constructor-tearoff self::Class::named
- #C5 = instantiation self::Class::named <core::int*>
+ #C5 = instantiation #C4 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.weak.transformed.expect
index 0f1d41c..682fc04 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/duplicate_instantiation.dart.weak.transformed.expect
@@ -317,5 +317,5 @@
#C2 = TypeLiteralConstant(self::Class<dynamic>*)
#C3 = TypeLiteralConstant(core::int*)
#C4 = constructor-tearoff self::Class::named
- #C5 = instantiation self::Class::named <core::int*>
+ #C5 = instantiation #C4 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.strong.expect
index 03be5de..ab94d94 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.strong.expect
@@ -93,11 +93,11 @@
constants {
#C1 = static-tearoff self::C::stat
- #C2 = instantiation self::C::stat <core::int>
+ #C2 = instantiation #C1 <core::int>
#C3 = static-tearoff self::M::mstat
- #C4 = instantiation self::M::mstat <core::int>
+ #C4 = instantiation #C3 <core::int>
#C5 = static-tearoff self::Ext|estat
- #C6 = instantiation self::Ext|estat <core::int>
+ #C6 = instantiation #C5 <core::int>
#C7 = TypeLiteralConstant(core::List<core::int>)
#C8 = TypeLiteralConstant(core::List<core::List<core::int>>)
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.strong.transformed.expect
index 5b832f3..55e49d3 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.strong.transformed.expect
@@ -101,11 +101,11 @@
constants {
#C1 = static-tearoff self::C::stat
- #C2 = instantiation self::C::stat <core::int>
+ #C2 = instantiation #C1 <core::int>
#C3 = static-tearoff self::M::mstat
- #C4 = instantiation self::M::mstat <core::int>
+ #C4 = instantiation #C3 <core::int>
#C5 = static-tearoff self::Ext|estat
- #C6 = instantiation self::Ext|estat <core::int>
+ #C6 = instantiation #C5 <core::int>
#C7 = TypeLiteralConstant(core::List<core::int>)
#C8 = TypeLiteralConstant(core::List<core::List<core::int>>)
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.weak.expect
index f9f2d98..63427ae 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.weak.expect
@@ -93,11 +93,11 @@
constants {
#C1 = static-tearoff self::C::stat
- #C2 = instantiation self::C::stat <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = static-tearoff self::M::mstat
- #C4 = instantiation self::M::mstat <core::int*>
+ #C4 = instantiation #C3 <core::int*>
#C5 = static-tearoff self::Ext|estat
- #C6 = instantiation self::Ext|estat <core::int*>
+ #C6 = instantiation #C5 <core::int*>
#C7 = TypeLiteralConstant(core::List<core::int*>*)
#C8 = TypeLiteralConstant(core::List<core::List<core::int*>*>*)
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.weak.transformed.expect
index c8aedc8..7ee3322 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation.dart.weak.transformed.expect
@@ -101,11 +101,11 @@
constants {
#C1 = static-tearoff self::C::stat
- #C2 = instantiation self::C::stat <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = static-tearoff self::M::mstat
- #C4 = instantiation self::M::mstat <core::int*>
+ #C4 = instantiation #C3 <core::int*>
#C5 = static-tearoff self::Ext|estat
- #C6 = instantiation self::Ext|estat <core::int*>
+ #C6 = instantiation #C5 <core::int*>
#C7 = TypeLiteralConstant(core::List<core::int*>*)
#C8 = TypeLiteralConstant(core::List<core::List<core::int*>*>*)
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.strong.expect
index 630fe40..1622d94 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.strong.expect
@@ -106,7 +106,7 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int>
+ #C2 = instantiation #C1 <core::int>
#C3 = static-tearoff self::boundedMethod
- #C4 = instantiation self::boundedMethod <core::String>
+ #C4 = instantiation #C3 <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.strong.transformed.expect
index 630fe40..1622d94 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.strong.transformed.expect
@@ -106,7 +106,7 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int>
+ #C2 = instantiation #C1 <core::int>
#C3 = static-tearoff self::boundedMethod
- #C4 = instantiation self::boundedMethod <core::String>
+ #C4 = instantiation #C3 <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.weak.expect
index 2e9d2db..8ed55ac 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.weak.expect
@@ -106,7 +106,7 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = static-tearoff self::boundedMethod
- #C4 = instantiation self::boundedMethod <core::String*>
+ #C4 = instantiation #C3 <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.weak.transformed.expect
index 2e9d2db..8ed55ac 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_instantiation_errors.dart.weak.transformed.expect
@@ -106,7 +106,7 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = static-tearoff self::boundedMethod
- #C4 = instantiation self::boundedMethod <core::String*>
+ #C4 = instantiation #C3 <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.strong.expect
index 8954e19..13d3f0b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.strong.expect
@@ -91,7 +91,7 @@
;
}
class E4 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::E4::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::E4
: super core::Object::•()
;
@@ -99,3 +99,7 @@
return new self::E4::_();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::E4::•
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.strong.transformed.expect
index 8954e19..13d3f0b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.strong.transformed.expect
@@ -91,7 +91,7 @@
;
}
class E4 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::E4::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::E4
: super core::Object::•()
;
@@ -99,3 +99,7 @@
return new self::E4::_();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::E4::•
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.expect
index 8954e19..13d3f0b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.expect
@@ -91,7 +91,7 @@
;
}
class E4 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::E4::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::E4
: super core::Object::•()
;
@@ -99,3 +99,7 @@
return new self::E4::_();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::E4::•
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.outline.expect
index d7f841c..969f9d2 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.outline.expect
@@ -90,3 +90,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///explicit_new_as_unnamed.dart:41:7 -> ConstructorTearOffConstant(E4.)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.transformed.expect
index 8954e19..13d3f0b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/explicit_new_as_unnamed.dart.weak.transformed.expect
@@ -91,7 +91,7 @@
;
}
class E4 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::E4::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::E4
: super core::Object::•()
;
@@ -99,3 +99,7 @@
return new self::E4::_();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::E4::•
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.strong.expect
index cd74ac1..eb866ee 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.strong.expect
@@ -132,9 +132,9 @@
#C1 = constructor-tearoff self::A::foo1
#C2 = constructor-tearoff self::A::foo2
#C3 = constructor-tearoff self::A::•
- #C4 = instantiation self::A::• <core::int>
- #C5 = instantiation self::A::foo1 <core::int>
- #C6 = instantiation self::A::foo2 <core::int>
- #C7 = static-tearoff self::A::bar1
- #C8 = instantiation self::A::bar1 <core::int>
+ #C4 = instantiation #C3 <core::int>
+ #C5 = instantiation #C1 <core::int>
+ #C6 = instantiation #C2 <core::int>
+ #C7 = constructor-tearoff self::A::bar1
+ #C8 = instantiation #C7 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.strong.transformed.expect
index cd74ac1..eb866ee 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.strong.transformed.expect
@@ -132,9 +132,9 @@
#C1 = constructor-tearoff self::A::foo1
#C2 = constructor-tearoff self::A::foo2
#C3 = constructor-tearoff self::A::•
- #C4 = instantiation self::A::• <core::int>
- #C5 = instantiation self::A::foo1 <core::int>
- #C6 = instantiation self::A::foo2 <core::int>
- #C7 = static-tearoff self::A::bar1
- #C8 = instantiation self::A::bar1 <core::int>
+ #C4 = instantiation #C3 <core::int>
+ #C5 = instantiation #C1 <core::int>
+ #C6 = instantiation #C2 <core::int>
+ #C7 = constructor-tearoff self::A::bar1
+ #C8 = instantiation #C7 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.weak.expect
index 40ac9f8..d91a515 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.weak.expect
@@ -132,9 +132,9 @@
#C1 = constructor-tearoff self::A::foo1
#C2 = constructor-tearoff self::A::foo2
#C3 = constructor-tearoff self::A::•
- #C4 = instantiation self::A::• <core::int*>
- #C5 = instantiation self::A::foo1 <core::int*>
- #C6 = instantiation self::A::foo2 <core::int*>
- #C7 = static-tearoff self::A::bar1
- #C8 = instantiation self::A::bar1 <core::int*>
+ #C4 = instantiation #C3 <core::int*>
+ #C5 = instantiation #C1 <core::int*>
+ #C6 = instantiation #C2 <core::int*>
+ #C7 = constructor-tearoff self::A::bar1
+ #C8 = instantiation #C7 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.weak.transformed.expect
index 40ac9f8..d91a515 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_with_context.dart.weak.transformed.expect
@@ -132,9 +132,9 @@
#C1 = constructor-tearoff self::A::foo1
#C2 = constructor-tearoff self::A::foo2
#C3 = constructor-tearoff self::A::•
- #C4 = instantiation self::A::• <core::int*>
- #C5 = instantiation self::A::foo1 <core::int*>
- #C6 = instantiation self::A::foo2 <core::int*>
- #C7 = static-tearoff self::A::bar1
- #C8 = instantiation self::A::bar1 <core::int*>
+ #C4 = instantiation #C3 <core::int*>
+ #C5 = instantiation #C1 <core::int*>
+ #C6 = instantiation #C2 <core::int*>
+ #C7 = constructor-tearoff self::A::bar1
+ #C8 = instantiation #C7 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.strong.expect
index 8aa8628..3b2be98 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.strong.expect
@@ -94,9 +94,9 @@
constants {
#C1 = constructor-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::int>
+ #C2 = instantiation #C1 <core::int>
#C3 = constructor-tearoff self::A::•
- #C4 = instantiation self::A::• <core::int>
- #C5 = static-tearoff self::A::bar
- #C6 = instantiation self::A::bar <core::int>
+ #C4 = instantiation #C3 <core::int>
+ #C5 = constructor-tearoff self::A::bar
+ #C6 = instantiation #C5 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.strong.transformed.expect
index 8aa8628..3b2be98 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.strong.transformed.expect
@@ -94,9 +94,9 @@
constants {
#C1 = constructor-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::int>
+ #C2 = instantiation #C1 <core::int>
#C3 = constructor-tearoff self::A::•
- #C4 = instantiation self::A::• <core::int>
- #C5 = static-tearoff self::A::bar
- #C6 = instantiation self::A::bar <core::int>
+ #C4 = instantiation #C3 <core::int>
+ #C5 = constructor-tearoff self::A::bar
+ #C6 = instantiation #C5 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.weak.expect
index c49c929..a5cdb82 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.weak.expect
@@ -94,9 +94,9 @@
constants {
#C1 = constructor-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = constructor-tearoff self::A::•
- #C4 = instantiation self::A::• <core::int*>
- #C5 = static-tearoff self::A::bar
- #C6 = instantiation self::A::bar <core::int*>
+ #C4 = instantiation #C3 <core::int*>
+ #C5 = constructor-tearoff self::A::bar
+ #C6 = instantiation #C5 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.weak.transformed.expect
index c49c929..a5cdb82 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/generic_tearoff_without_context.dart.weak.transformed.expect
@@ -94,9 +94,9 @@
constants {
#C1 = constructor-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = constructor-tearoff self::A::•
- #C4 = instantiation self::A::• <core::int*>
- #C5 = static-tearoff self::A::bar
- #C6 = instantiation self::A::bar <core::int*>
+ #C4 = instantiation #C3 <core::int*>
+ #C5 = constructor-tearoff self::A::bar
+ #C6 = instantiation #C5 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.strong.expect
index 5edad1d..9d3de3b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.strong.expect
@@ -47,6 +47,6 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int>
- #C3 = instantiation self::id <core::String>
+ #C2 = instantiation #C1 <core::int>
+ #C3 = instantiation #C1 <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.strong.transformed.expect
index f2e9fea..6058516 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.strong.transformed.expect
@@ -47,8 +47,8 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int>
- #C3 = instantiation self::id <core::String>
+ #C2 = instantiation #C1 <core::int>
+ #C3 = instantiation #C1 <core::String>
}
Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.weak.expect
index 7061d34..5abed3e 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.weak.expect
@@ -47,6 +47,6 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int*>
- #C3 = instantiation self::id <core::String*>
+ #C2 = instantiation #C1 <core::int*>
+ #C3 = instantiation #C1 <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.weak.transformed.expect
index 8923c73..f62d68a 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/identical_instantiated_function_tearoffs.dart.weak.transformed.expect
@@ -47,8 +47,8 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int*>
- #C3 = instantiation self::id <core::String*>
+ #C2 = instantiation #C1 <core::int*>
+ #C3 = instantiation #C1 <core::String*>
}
Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.strong.expect
index ce055a4..8fa4479 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.strong.expect
@@ -52,5 +52,5 @@
constants {
#C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <core::int>
+ #C2 = instantiation #C1 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.strong.transformed.expect
index 0f0953f..ca0ea1f 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.strong.transformed.expect
@@ -52,7 +52,7 @@
constants {
#C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <core::int>
+ #C2 = instantiation #C1 <core::int>
}
Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.expect
index 1121885..5827e2a 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.expect
@@ -52,5 +52,5 @@
constants {
#C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <core::int*>
+ #C2 = instantiation #C1 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.outline.expect
index ab09476..8f1f43b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.outline.expect
@@ -12,13 +12,13 @@
static final field core::bool inSoundMode;
static const field () → self::A<core::int> f1a = self::A::•<core::int>;
static const field () → self::A<core::int> f1b = self::A::•<core::int>;
-static const field () → self::A<core::int> f1c = (<X extends core::num>.(self::A::•<X>))<core::int>;
+static const field () → self::A<core::int> f1c = self::A::•<core::int>;
static const field () → self::A<core::int> g1a = self::A::•<core::int>;
static const field () → self::A<core::int> g1b = self::A::•<core::int>;
-static const field () → self::A<core::int> g1c = (<unrelated Y extends core::Object? = dynamic>.(self::A::•<core::int>))<dynamic>;
+static const field () → self::A<core::int> g1c = self::A::•<core::int>;
static const field () → self::A<core::int> h1a = self::A::•<core::int>;
static const field () → self::A<core::int> h1b = self::A::•<core::int>;
-static const field () → self::A<core::int> h1c = (<X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic>.(self::A::•<X%>))<core::int, dynamic>;
+static const field () → self::A<core::int> h1c = self::A::•<core::int>;
static method main() → dynamic
;
static method test<T extends core::num>() → dynamic
diff --git a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.transformed.expect
index 74079d8..e64d4e2 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart.weak.transformed.expect
@@ -52,7 +52,7 @@
constants {
#C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <core::int*>
+ #C2 = instantiation #C1 <core::int*>
}
Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.strong.expect
index 547e506..0d61208 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.strong.expect
@@ -59,15 +59,15 @@
constants {
#C1 = constructor-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::num>
- #C3 = instantiation self::A::foo <core::int>
+ #C2 = instantiation #C1 <core::num>
+ #C3 = instantiation #C1 <core::int>
#C4 = constructor-tearoff self::A::•
- #C5 = instantiation self::A::• <core::num>
- #C6 = instantiation self::A::• <core::int>
- #C7 = instantiation self::A::foo <core::String>
- #C8 = instantiation self::A::• <core::String>
- #C9 = static-tearoff self::A::bar
- #C10 = instantiation self::A::bar <core::num>
- #C11 = instantiation self::A::bar <core::int>
- #C12 = instantiation self::A::bar <core::String>
+ #C5 = instantiation #C4 <core::num>
+ #C6 = instantiation #C4 <core::int>
+ #C7 = instantiation #C1 <core::String>
+ #C8 = instantiation #C4 <core::String>
+ #C9 = constructor-tearoff self::A::bar
+ #C10 = instantiation #C9 <core::num>
+ #C11 = instantiation #C9 <core::int>
+ #C12 = instantiation #C9 <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.strong.transformed.expect
index 547e506..0d61208 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.strong.transformed.expect
@@ -59,15 +59,15 @@
constants {
#C1 = constructor-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::num>
- #C3 = instantiation self::A::foo <core::int>
+ #C2 = instantiation #C1 <core::num>
+ #C3 = instantiation #C1 <core::int>
#C4 = constructor-tearoff self::A::•
- #C5 = instantiation self::A::• <core::num>
- #C6 = instantiation self::A::• <core::int>
- #C7 = instantiation self::A::foo <core::String>
- #C8 = instantiation self::A::• <core::String>
- #C9 = static-tearoff self::A::bar
- #C10 = instantiation self::A::bar <core::num>
- #C11 = instantiation self::A::bar <core::int>
- #C12 = instantiation self::A::bar <core::String>
+ #C5 = instantiation #C4 <core::num>
+ #C6 = instantiation #C4 <core::int>
+ #C7 = instantiation #C1 <core::String>
+ #C8 = instantiation #C4 <core::String>
+ #C9 = constructor-tearoff self::A::bar
+ #C10 = instantiation #C9 <core::num>
+ #C11 = instantiation #C9 <core::int>
+ #C12 = instantiation #C9 <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.weak.expect
index 8f0ed57..ba34a7a 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.weak.expect
@@ -59,15 +59,15 @@
constants {
#C1 = constructor-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::num*>
- #C3 = instantiation self::A::foo <core::int*>
+ #C2 = instantiation #C1 <core::num*>
+ #C3 = instantiation #C1 <core::int*>
#C4 = constructor-tearoff self::A::•
- #C5 = instantiation self::A::• <core::num*>
- #C6 = instantiation self::A::• <core::int*>
- #C7 = instantiation self::A::foo <core::String*>
- #C8 = instantiation self::A::• <core::String*>
- #C9 = static-tearoff self::A::bar
- #C10 = instantiation self::A::bar <core::num*>
- #C11 = instantiation self::A::bar <core::int*>
- #C12 = instantiation self::A::bar <core::String*>
+ #C5 = instantiation #C4 <core::num*>
+ #C6 = instantiation #C4 <core::int*>
+ #C7 = instantiation #C1 <core::String*>
+ #C8 = instantiation #C4 <core::String*>
+ #C9 = constructor-tearoff self::A::bar
+ #C10 = instantiation #C9 <core::num*>
+ #C11 = instantiation #C9 <core::int*>
+ #C12 = instantiation #C9 <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.weak.transformed.expect
index 8f0ed57..ba34a7a 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/instantiation.dart.weak.transformed.expect
@@ -59,15 +59,15 @@
constants {
#C1 = constructor-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::num*>
- #C3 = instantiation self::A::foo <core::int*>
+ #C2 = instantiation #C1 <core::num*>
+ #C3 = instantiation #C1 <core::int*>
#C4 = constructor-tearoff self::A::•
- #C5 = instantiation self::A::• <core::num*>
- #C6 = instantiation self::A::• <core::int*>
- #C7 = instantiation self::A::foo <core::String*>
- #C8 = instantiation self::A::• <core::String*>
- #C9 = static-tearoff self::A::bar
- #C10 = instantiation self::A::bar <core::num*>
- #C11 = instantiation self::A::bar <core::int*>
- #C12 = instantiation self::A::bar <core::String*>
+ #C5 = instantiation #C4 <core::num*>
+ #C6 = instantiation #C4 <core::int*>
+ #C7 = instantiation #C1 <core::String*>
+ #C8 = instantiation #C4 <core::String*>
+ #C9 = constructor-tearoff self::A::bar
+ #C10 = instantiation #C9 <core::num*>
+ #C11 = instantiation #C9 <core::int*>
+ #C12 = instantiation #C9 <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
index 980e111..99500cc 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
@@ -46,11 +46,11 @@
constants {
#C1 = <core::Symbol, dynamic>{)
#C2 = constructor-tearoff self::A::named
- #C3 = instantiation self::A::named <core::int>
+ #C3 = instantiation #C2 <core::int>
#C4 = static-tearoff self::A::n
- #C5 = instantiation self::A::n <core::int>
- #C6 = instantiation self::A::n <core::String>
+ #C5 = instantiation #C4 <core::int>
+ #C6 = instantiation #C4 <core::String>
#C7 = static-tearoff self::m
- #C8 = instantiation self::m <core::int>
- #C9 = instantiation self::m <core::String>
+ #C8 = instantiation #C7 <core::int>
+ #C9 = instantiation #C7 <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
index ae6ee29..4e41cb6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
@@ -46,11 +46,11 @@
constants {
#C1 = <core::Symbol, dynamic>{)
#C2 = constructor-tearoff self::A::named
- #C3 = instantiation self::A::named <core::int>
+ #C3 = instantiation #C2 <core::int>
#C4 = static-tearoff self::A::n
- #C5 = instantiation self::A::n <core::int>
- #C6 = instantiation self::A::n <core::String>
+ #C5 = instantiation #C4 <core::int>
+ #C6 = instantiation #C4 <core::String>
#C7 = static-tearoff self::m
- #C8 = instantiation self::m <core::int>
- #C9 = instantiation self::m <core::String>
+ #C8 = instantiation #C7 <core::int>
+ #C9 = instantiation #C7 <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
index 4ad97c0..ce83852 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
@@ -46,11 +46,11 @@
constants {
#C1 = <core::Symbol*, dynamic>{)
#C2 = constructor-tearoff self::A::named
- #C3 = instantiation self::A::named <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = static-tearoff self::A::n
- #C5 = instantiation self::A::n <core::int*>
- #C6 = instantiation self::A::n <core::String*>
+ #C5 = instantiation #C4 <core::int*>
+ #C6 = instantiation #C4 <core::String*>
#C7 = static-tearoff self::m
- #C8 = instantiation self::m <core::int*>
- #C9 = instantiation self::m <core::String*>
+ #C8 = instantiation #C7 <core::int*>
+ #C9 = instantiation #C7 <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
index 516e952..cd0afe2 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
@@ -46,11 +46,11 @@
constants {
#C1 = <core::Symbol*, dynamic>{)
#C2 = constructor-tearoff self::A::named
- #C3 = instantiation self::A::named <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = static-tearoff self::A::n
- #C5 = instantiation self::A::n <core::int*>
- #C6 = instantiation self::A::n <core::String*>
+ #C5 = instantiation #C4 <core::int*>
+ #C6 = instantiation #C4 <core::String*>
#C7 = static-tearoff self::m
- #C8 = instantiation self::m <core::int*>
- #C9 = instantiation self::m <core::String*>
+ #C8 = instantiation #C7 <core::int*>
+ #C9 = instantiation #C7 <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
index 1d51613..db96e49 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.expect
@@ -20,5 +20,5 @@
constants {
#C1 = null
#C2 = static-tearoff self::a
- #C3 = instantiation self::a <core::int, core::String>
+ #C3 = instantiation #C2 <core::int, core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
index 1d51613..db96e49 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.strong.transformed.expect
@@ -20,5 +20,5 @@
constants {
#C1 = null
#C2 = static-tearoff self::a
- #C3 = instantiation self::a <core::int, core::String>
+ #C3 = instantiation #C2 <core::int, core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
index b1a240e..b032165 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.expect
@@ -20,5 +20,5 @@
constants {
#C1 = null
#C2 = static-tearoff self::a
- #C3 = instantiation self::a <core::int*, core::String*>
+ #C3 = instantiation #C2 <core::int*, core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
index b1a240e..b032165 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46887.dart.weak.transformed.expect
@@ -20,5 +20,5 @@
constants {
#C1 = null
#C2 = static-tearoff self::a
- #C3 = instantiation self::a <core::int*, core::String*>
+ #C3 = instantiation #C2 <core::int*, core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.strong.expect
index 837ac1a..b2c2a5b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.strong.expect
@@ -26,7 +26,7 @@
import "dart:core" as core;
class A<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::baz]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor foo() → self::A<self::A::X%>
: super core::Object::•() {}
static factory bar<X extends core::Object? = dynamic>() → self::A<self::A::bar::X%>
@@ -35,7 +35,6 @@
return self::A::bar<self::A::baz::X%>();
}
static method test() → dynamic {
- #C1;
#C2;
#C3;
#C4;
@@ -43,6 +42,7 @@
#C6;
#C7;
#C8;
+ #C9;
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46890.dart:22:14: Error: A constructor tear-off can't have type arguments after the constructor name.
Try removing the type arguments or placing them after the class name.
List.filled<int>; // Error.
@@ -63,12 +63,13 @@
static method main() → dynamic {}
constants {
- #C1 = static-tearoff core::List::filled
- #C2 = constructor-tearoff self::A::foo
- #C3 = static-tearoff self::A::bar
- #C4 = redirecting-factory-tearoff self::A::baz
- #C5 = instantiation core::List::filled <core::int>
- #C6 = instantiation self::A::foo <core::int>
- #C7 = instantiation self::A::bar <core::int>
- #C8 = instantiation self::A::baz <core::int>
+ #C1 = constructor-tearoff self::A::baz
+ #C2 = constructor-tearoff core::List::filled
+ #C3 = constructor-tearoff self::A::foo
+ #C4 = constructor-tearoff self::A::bar
+ #C5 = redirecting-factory-tearoff self::A::baz
+ #C6 = instantiation #C2 <core::int>
+ #C7 = instantiation #C3 <core::int>
+ #C8 = instantiation #C4 <core::int>
+ #C9 = instantiation #C5 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.strong.transformed.expect
index 837ac1a..b2c2a5b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.strong.transformed.expect
@@ -26,7 +26,7 @@
import "dart:core" as core;
class A<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::baz]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor foo() → self::A<self::A::X%>
: super core::Object::•() {}
static factory bar<X extends core::Object? = dynamic>() → self::A<self::A::bar::X%>
@@ -35,7 +35,6 @@
return self::A::bar<self::A::baz::X%>();
}
static method test() → dynamic {
- #C1;
#C2;
#C3;
#C4;
@@ -43,6 +42,7 @@
#C6;
#C7;
#C8;
+ #C9;
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46890.dart:22:14: Error: A constructor tear-off can't have type arguments after the constructor name.
Try removing the type arguments or placing them after the class name.
List.filled<int>; // Error.
@@ -63,12 +63,13 @@
static method main() → dynamic {}
constants {
- #C1 = static-tearoff core::List::filled
- #C2 = constructor-tearoff self::A::foo
- #C3 = static-tearoff self::A::bar
- #C4 = redirecting-factory-tearoff self::A::baz
- #C5 = instantiation core::List::filled <core::int>
- #C6 = instantiation self::A::foo <core::int>
- #C7 = instantiation self::A::bar <core::int>
- #C8 = instantiation self::A::baz <core::int>
+ #C1 = constructor-tearoff self::A::baz
+ #C2 = constructor-tearoff core::List::filled
+ #C3 = constructor-tearoff self::A::foo
+ #C4 = constructor-tearoff self::A::bar
+ #C5 = redirecting-factory-tearoff self::A::baz
+ #C6 = instantiation #C2 <core::int>
+ #C7 = instantiation #C3 <core::int>
+ #C8 = instantiation #C4 <core::int>
+ #C9 = instantiation #C5 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.expect
index 1d39c74..9459fcb 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.expect
@@ -26,7 +26,7 @@
import "dart:core" as core;
class A<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::baz]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor foo() → self::A<self::A::X%>
: super core::Object::•() {}
static factory bar<X extends core::Object? = dynamic>() → self::A<self::A::bar::X%>
@@ -35,7 +35,6 @@
return self::A::bar<self::A::baz::X%>();
}
static method test() → dynamic {
- #C1;
#C2;
#C3;
#C4;
@@ -43,6 +42,7 @@
#C6;
#C7;
#C8;
+ #C9;
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46890.dart:22:14: Error: A constructor tear-off can't have type arguments after the constructor name.
Try removing the type arguments or placing them after the class name.
List.filled<int>; // Error.
@@ -63,12 +63,13 @@
static method main() → dynamic {}
constants {
- #C1 = static-tearoff core::List::filled
- #C2 = constructor-tearoff self::A::foo
- #C3 = static-tearoff self::A::bar
- #C4 = redirecting-factory-tearoff self::A::baz
- #C5 = instantiation core::List::filled <core::int*>
- #C6 = instantiation self::A::foo <core::int*>
- #C7 = instantiation self::A::bar <core::int*>
- #C8 = instantiation self::A::baz <core::int*>
+ #C1 = constructor-tearoff self::A::baz
+ #C2 = constructor-tearoff core::List::filled
+ #C3 = constructor-tearoff self::A::foo
+ #C4 = constructor-tearoff self::A::bar
+ #C5 = redirecting-factory-tearoff self::A::baz
+ #C6 = instantiation #C2 <core::int*>
+ #C7 = instantiation #C3 <core::int*>
+ #C8 = instantiation #C4 <core::int*>
+ #C9 = instantiation #C5 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.outline.expect
index e724719..9042de9e 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.outline.expect
@@ -15,3 +15,8 @@
;
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue46890.dart:5:7 -> ConstructorTearOffConstant(A.baz)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.transformed.expect
index 1d39c74..9459fcb 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46890.dart.weak.transformed.expect
@@ -26,7 +26,7 @@
import "dart:core" as core;
class A<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::baz]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor foo() → self::A<self::A::X%>
: super core::Object::•() {}
static factory bar<X extends core::Object? = dynamic>() → self::A<self::A::bar::X%>
@@ -35,7 +35,6 @@
return self::A::bar<self::A::baz::X%>();
}
static method test() → dynamic {
- #C1;
#C2;
#C3;
#C4;
@@ -43,6 +42,7 @@
#C6;
#C7;
#C8;
+ #C9;
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46890.dart:22:14: Error: A constructor tear-off can't have type arguments after the constructor name.
Try removing the type arguments or placing them after the class name.
List.filled<int>; // Error.
@@ -63,12 +63,13 @@
static method main() → dynamic {}
constants {
- #C1 = static-tearoff core::List::filled
- #C2 = constructor-tearoff self::A::foo
- #C3 = static-tearoff self::A::bar
- #C4 = redirecting-factory-tearoff self::A::baz
- #C5 = instantiation core::List::filled <core::int*>
- #C6 = instantiation self::A::foo <core::int*>
- #C7 = instantiation self::A::bar <core::int*>
- #C8 = instantiation self::A::baz <core::int*>
+ #C1 = constructor-tearoff self::A::baz
+ #C2 = constructor-tearoff core::List::filled
+ #C3 = constructor-tearoff self::A::foo
+ #C4 = constructor-tearoff self::A::bar
+ #C5 = redirecting-factory-tearoff self::A::baz
+ #C6 = instantiation #C2 <core::int*>
+ #C7 = instantiation #C3 <core::int*>
+ #C8 = instantiation #C4 <core::int*>
+ #C9 = instantiation #C5 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.strong.expect
index a23b6b4..6057dae 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.strong.expect
@@ -19,7 +19,7 @@
constants {
#C1 = static-tearoff self::id
#C2 = static-tearoff self::other
- #C3 = instantiation self::id <core::int>
+ #C3 = instantiation #C1 <core::int>
#C4 = self::A {x:#C3}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.strong.transformed.expect
index a23b6b4..6057dae 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.strong.transformed.expect
@@ -19,7 +19,7 @@
constants {
#C1 = static-tearoff self::id
#C2 = static-tearoff self::other
- #C3 = instantiation self::id <core::int>
+ #C3 = instantiation #C1 <core::int>
#C4 = self::A {x:#C3}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.weak.expect
index 55aaf0f..9af80b0 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.weak.expect
@@ -19,7 +19,7 @@
constants {
#C1 = static-tearoff self::id
#C2 = static-tearoff self::other
- #C3 = instantiation self::id <core::int*>
+ #C3 = instantiation #C1 <core::int*>
#C4 = self::A {x:#C3}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.weak.transformed.expect
index 55aaf0f..9af80b0 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154a.dart.weak.transformed.expect
@@ -19,7 +19,7 @@
constants {
#C1 = static-tearoff self::id
#C2 = static-tearoff self::other
- #C3 = instantiation self::id <core::int*>
+ #C3 = instantiation #C1 <core::int*>
#C4 = self::A {x:#C3}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.strong.expect
index 41ae260..03e2e51 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.strong.expect
@@ -18,9 +18,9 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int>
+ #C2 = instantiation #C1 <core::int>
#C3 = static-tearoff self::other
- #C4 = instantiation self::other <core::int>
+ #C4 = instantiation #C3 <core::int>
#C5 = self::A {x:#C2}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.strong.transformed.expect
index 41ae260..03e2e51 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.strong.transformed.expect
@@ -18,9 +18,9 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int>
+ #C2 = instantiation #C1 <core::int>
#C3 = static-tearoff self::other
- #C4 = instantiation self::other <core::int>
+ #C4 = instantiation #C3 <core::int>
#C5 = self::A {x:#C2}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.weak.expect
index 535ad97..a593732 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.weak.expect
@@ -18,9 +18,9 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = static-tearoff self::other
- #C4 = instantiation self::other <core::int*>
+ #C4 = instantiation #C3 <core::int*>
#C5 = self::A {x:#C2}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.weak.transformed.expect
index 535ad97..a593732 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154b.dart.weak.transformed.expect
@@ -18,9 +18,9 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = static-tearoff self::other
- #C4 = instantiation self::other <core::int*>
+ #C4 = instantiation #C3 <core::int*>
#C5 = self::A {x:#C2}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.strong.expect
index f4cf0df..0c4cff4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.strong.expect
@@ -32,7 +32,7 @@
#C2 = 1
#C3 = <core::int>[#C2]
#C4 = self::A<core::int> {x:#C3}
- #C5 = instantiation self::m <core::String>
+ #C5 = instantiation #C1 <core::String>
#C6 = self::B<core::String> {f:#C5}
#C7 = self::C<core::String> {f:#C5}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.strong.transformed.expect
index f4cf0df..0c4cff4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.strong.transformed.expect
@@ -32,7 +32,7 @@
#C2 = 1
#C3 = <core::int>[#C2]
#C4 = self::A<core::int> {x:#C3}
- #C5 = instantiation self::m <core::String>
+ #C5 = instantiation #C1 <core::String>
#C6 = self::B<core::String> {f:#C5}
#C7 = self::C<core::String> {f:#C5}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.weak.expect
index 78d6475..691f3a6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.weak.expect
@@ -32,7 +32,7 @@
#C2 = 1
#C3 = <core::int*>[#C2]
#C4 = self::A<core::int*> {x:#C3}
- #C5 = instantiation self::m <core::String*>
+ #C5 = instantiation #C1 <core::String*>
#C6 = self::B<core::String*> {f:#C5}
#C7 = self::C<core::String*> {f:#C5}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.weak.transformed.expect
index 78d6475..691f3a6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47154c.dart.weak.transformed.expect
@@ -32,7 +32,7 @@
#C2 = 1
#C3 = <core::int*>[#C2]
#C4 = self::A<core::int*> {x:#C3}
- #C5 = instantiation self::m <core::String*>
+ #C5 = instantiation #C1 <core::String*>
#C6 = self::B<core::String*> {f:#C5}
#C7 = self::C<core::String*> {f:#C5}
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart
new file mode 100644
index 0000000..91be77e
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2021, 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.
+
+typedef MyList<T extends num> = List<T>;
+
+main() {}
+
+test() {
+ const c1 = MyList<num>.filled;
+ const c2 = MyList<num>.filled;
+ const c3 = (MyList.filled)<num>;
+
+ const c4 = identical(c1, c2);
+ const c5 = identical(c1, c3);
+
+ expect(true, c4);
+ expect(false, c5);
+
+ expect(true, identical(c1, c2));
+ expect(false, identical(c1, c3));
+
+ var v1 = MyList<num>.filled;
+ var v2 = MyList<num>.filled;
+ var v3 = (MyList.filled)<num>;
+
+ var v4 = identical(v1, v2);
+ var v5 = identical(v1, v3);
+
+ expect(true, v4);
+ expect(false, v5);
+
+ expect(true, identical(v1, v2));
+ expect(false, identical(v1, v3));
+}
+
+expect(expected, actual) {
+ if (expected != actual) throw 'Expected $expected, actual $actual';
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.strong.expect
new file mode 100644
index 0000000..313acc1
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.strong.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {}
+static method test() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num>
+ #C5 = typedef-tearoff <T extends core::num>.(#C3<T>)
+ #C6 = instantiation #C5 <core::num>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.strong.transformed.expect
new file mode 100644
index 0000000..b1acc2d
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.strong.transformed.expect
@@ -0,0 +1,39 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {}
+static method test() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num>
+ #C5 = typedef-tearoff <T extends core::num>.(#C3<T>)
+ #C6 = instantiation #C5 <core::num>
+}
+
+Extra constant evaluation status:
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:20:16 -> BoolConstant(true)
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:21:17 -> BoolConstant(false)
+Extra constant evaluation: evaluated: 32, effectively constant: 2
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.textual_outline.expect
new file mode 100644
index 0000000..3730164
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.textual_outline.expect
@@ -0,0 +1,4 @@
+typedef MyList<T extends num> = List<T>;
+main() {}
+test() {}
+expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..10f9adf
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.textual_outline_modelled.expect
@@ -0,0 +1,4 @@
+expect(expected, actual) {}
+main() {}
+test() {}
+typedef MyList<T extends num> = List<T>;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.weak.expect
new file mode 100644
index 0000000..ff4b5b0
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.weak.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {}
+static method test() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num*>
+ #C5 = typedef-tearoff <T extends core::num>.(#C3<T>)
+ #C6 = instantiation #C5 <core::num*>
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.weak.outline.expect
new file mode 100644
index 0000000..88959f9
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.weak.outline.expect
@@ -0,0 +1,11 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic
+ ;
+static method test() → dynamic
+ ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+ ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.weak.transformed.expect
new file mode 100644
index 0000000..285da40f
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47462.dart.weak.transformed.expect
@@ -0,0 +1,39 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {}
+static method test() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num*>
+ #C5 = typedef-tearoff <T extends core::num>.(#C3<T>)
+ #C6 = instantiation #C5 <core::num*>
+}
+
+Extra constant evaluation status:
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:20:16 -> BoolConstant(true)
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:21:17 -> BoolConstant(false)
+Extra constant evaluation: evaluated: 32, effectively constant: 2
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect
index c0c195f..df41444 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.expect
@@ -24,7 +24,7 @@
return new self::Class::•(constants: constants);
}
abstract class Const extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
static factory impl() → self::Const
return new self::_ConstImpl::•<dynamic>();
static method _#impl#tearOff() → self::Const
@@ -45,6 +45,7 @@
#C1 = self::_ConstImpl<dynamic> {}
#C2 = self::_ConstImpl<core::String> {}
#C3 = <self::Const>[#C1, #C1, #C2]
+ #C4 = constructor-tearoff self::Const::impl
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect
index c0c195f..df41444 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.strong.transformed.expect
@@ -24,7 +24,7 @@
return new self::Class::•(constants: constants);
}
abstract class Const extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
static factory impl() → self::Const
return new self::_ConstImpl::•<dynamic>();
static method _#impl#tearOff() → self::Const
@@ -45,6 +45,7 @@
#C1 = self::_ConstImpl<dynamic> {}
#C2 = self::_ConstImpl<core::String> {}
#C3 = <self::Const>[#C1, #C1, #C2]
+ #C4 = constructor-tearoff self::Const::impl
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect
index 94ca00a..38c6a94 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.expect
@@ -24,7 +24,7 @@
return new self::Class::•(constants: constants);
}
abstract class Const extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
static factory impl() → self::Const
return new self::_ConstImpl::•<dynamic>();
static method _#impl#tearOff() → self::Const
@@ -45,6 +45,7 @@
#C1 = self::_ConstImpl<dynamic> {}
#C2 = self::_ConstImpl<core::String*> {}
#C3 = <self::Const*>[#C1, #C1, #C2]
+ #C4 = constructor-tearoff self::Const::impl
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect
index f2eca4d..7fffaa8 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.outline.expect
@@ -29,3 +29,8 @@
;
static method _#ImplAlias#new#tearOff<T extends core::num>() → self::_ConstImpl<self::_#ImplAlias#new#tearOff::T>
return new self::_ConstImpl::•<self::_#ImplAlias#new#tearOff::T>();
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///const_redirect.dart:21:16 -> ConstructorTearOffConstant(Const.impl)
+Extra constant evaluation: evaluated: 8, effectively constant: 1
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect
index 94ca00a..38c6a94 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/const_redirect.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
return new self::Class::•(constants: constants);
}
abstract class Const extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Const::impl]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
static factory impl() → self::Const
return new self::_ConstImpl::•<dynamic>();
static method _#impl#tearOff() → self::Const
@@ -45,6 +45,7 @@
#C1 = self::_ConstImpl<dynamic> {}
#C2 = self::_ConstImpl<core::String*> {}
#C3 = <self::Const*>[#C1, #C1, #C2]
+ #C4 = constructor-tearoff self::Const::impl
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.strong.expect
index 287832b..992d24b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.strong.expect
@@ -187,7 +187,7 @@
return new mai::Class1::•();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::Class2::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9]/*isLegacy*/;
constructor named() → mai::Class2
: super core::Object::•()
;
@@ -207,7 +207,7 @@
return new mai::Class3::•(field);
}
class Class4<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::Class4::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C10]/*isLegacy*/;
constructor _() → mai::Class4<mai::Class4::T%>
: super core::Object::•()
;
@@ -243,4 +243,6 @@
#C6 = static-tearoff mai::Class4::_#redirect#tearOff
#C7 = static-tearoff mai::Class5::_#new#tearOff
#C8 = false
+ #C9 = constructor-tearoff mai::Class2::redirect
+ #C10 = constructor-tearoff mai::Class4::redirect
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.strong.transformed.expect
index bcf1164..4920c00 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.strong.transformed.expect
@@ -187,7 +187,7 @@
return new mai::Class1::•();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::Class2::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9]/*isLegacy*/;
constructor named() → mai::Class2
: super core::Object::•()
;
@@ -207,7 +207,7 @@
return new mai::Class3::•(field);
}
class Class4<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::Class4::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C10]/*isLegacy*/;
constructor _() → mai::Class4<mai::Class4::T%>
: super core::Object::•()
;
@@ -243,4 +243,6 @@
#C6 = static-tearoff mai::Class4::_#redirect#tearOff
#C7 = static-tearoff mai::Class5::_#new#tearOff
#C8 = false
+ #C9 = constructor-tearoff mai::Class2::redirect
+ #C10 = constructor-tearoff mai::Class4::redirect
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.expect
index 287832b..992d24b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.expect
@@ -187,7 +187,7 @@
return new mai::Class1::•();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::Class2::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9]/*isLegacy*/;
constructor named() → mai::Class2
: super core::Object::•()
;
@@ -207,7 +207,7 @@
return new mai::Class3::•(field);
}
class Class4<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::Class4::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C10]/*isLegacy*/;
constructor _() → mai::Class4<mai::Class4::T%>
: super core::Object::•()
;
@@ -243,4 +243,6 @@
#C6 = static-tearoff mai::Class4::_#redirect#tearOff
#C7 = static-tearoff mai::Class5::_#new#tearOff
#C8 = false
+ #C9 = constructor-tearoff mai::Class2::redirect
+ #C10 = constructor-tearoff mai::Class4::redirect
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.outline.expect
index f714802..e737b01 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.outline.expect
@@ -23,7 +23,7 @@
return new self2::Class1::•();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self2::Class2::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor named() → self2::Class2
;
static method _#named#tearOff() → self2::Class2
@@ -41,7 +41,7 @@
return new self2::Class3::•(field);
}
class Class4<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self2::Class4::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor _() → self2::Class4<self2::Class4::T%>
;
static method _#_#tearOff<T extends core::Object? = dynamic>() → self2::Class4<self2::Class4::_#_#tearOff::T%>
@@ -65,3 +65,8 @@
static method _#new#tearOff<T extends core::num>() → self2::Class5<self2::Class5::_#new#tearOff::T>
return self2::Class5::•<self2::Class5::_#new#tearOff::T>();
}
+
+constants {
+ #C1 = constructor-tearoff self2::Class2::redirect
+ #C2 = constructor-tearoff self2::Class4::redirect
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.transformed.expect
index bcf1164..4920c00 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart.weak.transformed.expect
@@ -187,7 +187,7 @@
return new mai::Class1::•();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::Class2::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9]/*isLegacy*/;
constructor named() → mai::Class2
: super core::Object::•()
;
@@ -207,7 +207,7 @@
return new mai::Class3::•(field);
}
class Class4<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::Class4::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C10]/*isLegacy*/;
constructor _() → mai::Class4<mai::Class4::T%>
: super core::Object::•()
;
@@ -243,4 +243,6 @@
#C6 = static-tearoff mai::Class4::_#redirect#tearOff
#C7 = static-tearoff mai::Class5::_#new#tearOff
#C8 = false
+ #C9 = constructor-tearoff mai::Class2::redirect
+ #C10 = constructor-tearoff mai::Class4::redirect
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.strong.expect
index 31fe515..81c7cd2 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.strong.expect
@@ -35,7 +35,7 @@
import "dart:core" as core;
class Class1<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1<self::Class1::T%>
: super core::Object::•()
;
@@ -47,7 +47,7 @@
return new self::Class1::_<self::Class1::_#new#tearOff::T%>();
}
class Class2<T extends core::num> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor _() → self::Class2<self::Class2::T>
: super core::Object::•()
;
@@ -59,7 +59,7 @@
return new self::Class2::_<self::Class2::_#new#tearOff::T>();
}
class Class3<T extends self::Class3::S% = dynamic, S extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _() → self::Class3<self::Class3::T%, self::Class3::S%>
: super core::Object::•()
;
@@ -71,7 +71,7 @@
return new self::Class3::_<self::Class3::_#new#tearOff::T%, self::Class3::_#new#tearOff::S%>();
}
class Class4<T extends self::Class4<self::Class4::T> = self::Class4<dynamic>> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
constructor _() → self::Class4<self::Class4::T>
: super core::Object::•()
;
@@ -83,7 +83,7 @@
return new self::Class4::_<self::Class4::_#new#tearOff::T>();
}
class Class4int extends self::Class4<self::Class4int> {
- static final field dynamic _redirecting# = <dynamic>[self::Class4int::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C5]/*isLegacy*/;
constructor _() → self::Class4int
: super self::Class4::_()
;
@@ -101,7 +101,7 @@
self::testBounded();
}
static method testGeneric() → dynamic {
- <T extends core::Object? = dynamic>() → self::Class1<T%> f1a = #C1;
+ <T extends core::Object? = dynamic>() → self::Class1<T%> f1a = #C6;
self::Class1<dynamic> c1a = f1a<dynamic>(){() → self::Class1<dynamic>};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1<dynamic>);
self::expect(false, c1a is{ForNonNullableByDefault} self::Class1<core::int>);
@@ -122,14 +122,14 @@
f1b<int>(); // error
^" in f1b{<inapplicable>}.<core::int>();
};
- dynamic f1c = #C1;
+ dynamic f1c = #C6;
dynamic c1d = f1c{dynamic}.call();
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1<dynamic>);
self::expect(false, c1a is{ForNonNullableByDefault} self::Class1<core::int>);
self::throws(() → dynamic => f1c{dynamic}.call<core::int, core::String>());
}
static method testBounded() → dynamic {
- <T extends core::num>() → self::Class2<T> f2a = #C2;
+ <T extends core::num>() → self::Class2<T> f2a = #C7;
self::Class2<core::num> c2a = f2a<core::num>(){() → self::Class2<core::num>};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2<core::num>);
self::expect(false, c2a is{ForNonNullableByDefault} self::Class2<core::int>);
@@ -142,7 +142,7 @@
f2a<int, String>(); // error
^" in f2a{<inapplicable>}.<core::int, core::String>();
};
- dynamic f2b = #C2;
+ dynamic f2b = #C7;
dynamic c2c = f2b{dynamic}.call();
self::expect(true, c2c is{ForNonNullableByDefault} self::Class2<core::num>);
self::expect(false, c2c is{ForNonNullableByDefault} self::Class2<core::int>);
@@ -151,7 +151,7 @@
self::expect(false, c2d is{ForNonNullableByDefault} self::Class2<core::double>);
self::throws(() → dynamic => f2b{dynamic}.call<core::String>());
self::throws(() → dynamic => f2b{dynamic}.call<core::int, core::String>());
- <T extends S% = dynamic, S extends core::Object? = dynamic>() → self::Class3<T%, S%> f3a = #C3;
+ <T extends S% = dynamic, S extends core::Object? = dynamic>() → self::Class3<T%, S%> f3a = #C8;
self::Class3<dynamic, dynamic> c3a = f3a<dynamic, dynamic>(){() → self::Class3<dynamic, dynamic>};
self::expect(true, c3a is{ForNonNullableByDefault} self::Class3<dynamic, dynamic>);
self::expect(false, c3a is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
@@ -161,7 +161,7 @@
() → Null {
f3a<core::num, core::int>(){() → self::Class3<core::num, core::int>};
};
- dynamic f3b = #C3;
+ dynamic f3b = #C8;
dynamic c3c = f3b{dynamic}.call();
self::expect(true, c3c is{ForNonNullableByDefault} self::Class3<dynamic, dynamic>);
self::expect(false, c3c is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
@@ -169,11 +169,11 @@
self::expect(true, c3d is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
self::expect(false, c3d is{ForNonNullableByDefault} self::Class3<core::double, core::num>);
self::throws(() → dynamic => f3b{dynamic}.call<core::num, core::int>());
- <T extends self::Class4<T> = self::Class4<dynamic>>() → self::Class4<T> f4a = #C4;
+ <T extends self::Class4<T> = self::Class4<dynamic>>() → self::Class4<T> f4a = #C9;
() → Null {
self::Class4<self::Class4<core::Object?>> c4a = f4a<self::Class4<core::Object?>>(){() → self::Class4<self::Class4<core::Object?>>};
};
- dynamic f4b = #C4;
+ dynamic f4b = #C9;
self::throws(() → dynamic => f4b{dynamic}.call());
dynamic c4b = f4b{dynamic}.call<self::Class4int>();
self::expect(true, c4b is{ForNonNullableByDefault} self::Class4<self::Class4int>);
@@ -182,7 +182,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C5}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C10}) → dynamic {
try {
f(){() → dynamic};
}
@@ -197,9 +197,14 @@
}
constants {
- #C1 = static-tearoff self::Class1::_#new#tearOff
- #C2 = static-tearoff self::Class2::_#new#tearOff
- #C3 = static-tearoff self::Class3::_#new#tearOff
- #C4 = static-tearoff self::Class4::_#new#tearOff
- #C5 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::•
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = constructor-tearoff self::Class4int::•
+ #C6 = static-tearoff self::Class1::_#new#tearOff
+ #C7 = static-tearoff self::Class2::_#new#tearOff
+ #C8 = static-tearoff self::Class3::_#new#tearOff
+ #C9 = static-tearoff self::Class4::_#new#tearOff
+ #C10 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.strong.transformed.expect
index 2b61e14..2a37cef 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.strong.transformed.expect
@@ -35,7 +35,7 @@
import "dart:core" as core;
class Class1<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1<self::Class1::T%>
: super core::Object::•()
;
@@ -47,7 +47,7 @@
return new self::Class1::_<self::Class1::_#new#tearOff::T%>();
}
class Class2<T extends core::num> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor _() → self::Class2<self::Class2::T>
: super core::Object::•()
;
@@ -59,7 +59,7 @@
return new self::Class2::_<self::Class2::_#new#tearOff::T>();
}
class Class3<T extends self::Class3::S% = dynamic, S extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _() → self::Class3<self::Class3::T%, self::Class3::S%>
: super core::Object::•()
;
@@ -71,7 +71,7 @@
return new self::Class3::_<self::Class3::_#new#tearOff::T%, self::Class3::_#new#tearOff::S%>();
}
class Class4<T extends self::Class4<self::Class4::T> = self::Class4<dynamic>> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
constructor _() → self::Class4<self::Class4::T>
: super core::Object::•()
;
@@ -83,7 +83,7 @@
return new self::Class4::_<self::Class4::_#new#tearOff::T>();
}
class Class4int extends self::Class4<self::Class4int> {
- static final field dynamic _redirecting# = <dynamic>[self::Class4int::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C5]/*isLegacy*/;
constructor _() → self::Class4int
: super self::Class4::_()
;
@@ -101,7 +101,7 @@
self::testBounded();
}
static method testGeneric() → dynamic {
- <T extends core::Object? = dynamic>() → self::Class1<T%> f1a = #C1;
+ <T extends core::Object? = dynamic>() → self::Class1<T%> f1a = #C6;
self::Class1<dynamic> c1a = f1a<dynamic>(){() → self::Class1<dynamic>};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1<dynamic>);
self::expect(false, c1a is{ForNonNullableByDefault} self::Class1<core::int>);
@@ -122,14 +122,14 @@
f1b<int>(); // error
^" in f1b{<inapplicable>}.<core::int>();
};
- dynamic f1c = #C1;
+ dynamic f1c = #C6;
dynamic c1d = f1c{dynamic}.call();
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1<dynamic>);
self::expect(false, c1a is{ForNonNullableByDefault} self::Class1<core::int>);
self::throws(() → dynamic => f1c{dynamic}.call<core::int, core::String>());
}
static method testBounded() → dynamic {
- <T extends core::num>() → self::Class2<T> f2a = #C2;
+ <T extends core::num>() → self::Class2<T> f2a = #C7;
self::Class2<core::num> c2a = f2a<core::num>(){() → self::Class2<core::num>};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2<core::num>);
self::expect(false, c2a is{ForNonNullableByDefault} self::Class2<core::int>);
@@ -142,7 +142,7 @@
f2a<int, String>(); // error
^" in f2a{<inapplicable>}.<core::int, core::String>();
};
- dynamic f2b = #C2;
+ dynamic f2b = #C7;
dynamic c2c = f2b{dynamic}.call();
self::expect(true, c2c is{ForNonNullableByDefault} self::Class2<core::num>);
self::expect(false, c2c is{ForNonNullableByDefault} self::Class2<core::int>);
@@ -151,7 +151,7 @@
self::expect(false, c2d is{ForNonNullableByDefault} self::Class2<core::double>);
self::throws(() → dynamic => f2b{dynamic}.call<core::String>());
self::throws(() → dynamic => f2b{dynamic}.call<core::int, core::String>());
- <T extends S% = dynamic, S extends core::Object? = dynamic>() → self::Class3<T%, S%> f3a = #C3;
+ <T extends S% = dynamic, S extends core::Object? = dynamic>() → self::Class3<T%, S%> f3a = #C8;
self::Class3<dynamic, dynamic> c3a = f3a<dynamic, dynamic>(){() → self::Class3<dynamic, dynamic>};
self::expect(true, c3a is{ForNonNullableByDefault} self::Class3<dynamic, dynamic>);
self::expect(false, c3a is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
@@ -161,7 +161,7 @@
() → Null {
f3a<core::num, core::int>(){() → self::Class3<core::num, core::int>};
};
- dynamic f3b = #C3;
+ dynamic f3b = #C8;
dynamic c3c = f3b{dynamic}.call();
self::expect(true, c3c is{ForNonNullableByDefault} self::Class3<dynamic, dynamic>);
self::expect(false, c3c is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
@@ -169,11 +169,11 @@
self::expect(true, c3d is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
self::expect(false, c3d is{ForNonNullableByDefault} self::Class3<core::double, core::num>);
self::throws(() → dynamic => f3b{dynamic}.call<core::num, core::int>());
- <T extends self::Class4<T> = self::Class4<dynamic>>() → self::Class4<T> f4a = #C4;
+ <T extends self::Class4<T> = self::Class4<dynamic>>() → self::Class4<T> f4a = #C9;
() → Null {
self::Class4<self::Class4<core::Object?>> c4a = f4a<self::Class4<core::Object?>>(){() → self::Class4<self::Class4<core::Object?>>};
};
- dynamic f4b = #C4;
+ dynamic f4b = #C9;
self::throws(() → dynamic => f4b{dynamic}.call());
dynamic c4b = f4b{dynamic}.call<self::Class4int>();
self::expect(true, c4b is{ForNonNullableByDefault} self::Class4<self::Class4int>);
@@ -182,7 +182,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C5}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C10}) → dynamic {
try {
f(){() → dynamic};
}
@@ -197,9 +197,14 @@
}
constants {
- #C1 = static-tearoff self::Class1::_#new#tearOff
- #C2 = static-tearoff self::Class2::_#new#tearOff
- #C3 = static-tearoff self::Class3::_#new#tearOff
- #C4 = static-tearoff self::Class4::_#new#tearOff
- #C5 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::•
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = constructor-tearoff self::Class4int::•
+ #C6 = static-tearoff self::Class1::_#new#tearOff
+ #C7 = static-tearoff self::Class2::_#new#tearOff
+ #C8 = static-tearoff self::Class3::_#new#tearOff
+ #C9 = static-tearoff self::Class4::_#new#tearOff
+ #C10 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.expect
index 31fe515..81c7cd2 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.expect
@@ -35,7 +35,7 @@
import "dart:core" as core;
class Class1<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1<self::Class1::T%>
: super core::Object::•()
;
@@ -47,7 +47,7 @@
return new self::Class1::_<self::Class1::_#new#tearOff::T%>();
}
class Class2<T extends core::num> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor _() → self::Class2<self::Class2::T>
: super core::Object::•()
;
@@ -59,7 +59,7 @@
return new self::Class2::_<self::Class2::_#new#tearOff::T>();
}
class Class3<T extends self::Class3::S% = dynamic, S extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _() → self::Class3<self::Class3::T%, self::Class3::S%>
: super core::Object::•()
;
@@ -71,7 +71,7 @@
return new self::Class3::_<self::Class3::_#new#tearOff::T%, self::Class3::_#new#tearOff::S%>();
}
class Class4<T extends self::Class4<self::Class4::T> = self::Class4<dynamic>> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
constructor _() → self::Class4<self::Class4::T>
: super core::Object::•()
;
@@ -83,7 +83,7 @@
return new self::Class4::_<self::Class4::_#new#tearOff::T>();
}
class Class4int extends self::Class4<self::Class4int> {
- static final field dynamic _redirecting# = <dynamic>[self::Class4int::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C5]/*isLegacy*/;
constructor _() → self::Class4int
: super self::Class4::_()
;
@@ -101,7 +101,7 @@
self::testBounded();
}
static method testGeneric() → dynamic {
- <T extends core::Object? = dynamic>() → self::Class1<T%> f1a = #C1;
+ <T extends core::Object? = dynamic>() → self::Class1<T%> f1a = #C6;
self::Class1<dynamic> c1a = f1a<dynamic>(){() → self::Class1<dynamic>};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1<dynamic>);
self::expect(false, c1a is{ForNonNullableByDefault} self::Class1<core::int>);
@@ -122,14 +122,14 @@
f1b<int>(); // error
^" in f1b{<inapplicable>}.<core::int>();
};
- dynamic f1c = #C1;
+ dynamic f1c = #C6;
dynamic c1d = f1c{dynamic}.call();
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1<dynamic>);
self::expect(false, c1a is{ForNonNullableByDefault} self::Class1<core::int>);
self::throws(() → dynamic => f1c{dynamic}.call<core::int, core::String>());
}
static method testBounded() → dynamic {
- <T extends core::num>() → self::Class2<T> f2a = #C2;
+ <T extends core::num>() → self::Class2<T> f2a = #C7;
self::Class2<core::num> c2a = f2a<core::num>(){() → self::Class2<core::num>};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2<core::num>);
self::expect(false, c2a is{ForNonNullableByDefault} self::Class2<core::int>);
@@ -142,7 +142,7 @@
f2a<int, String>(); // error
^" in f2a{<inapplicable>}.<core::int, core::String>();
};
- dynamic f2b = #C2;
+ dynamic f2b = #C7;
dynamic c2c = f2b{dynamic}.call();
self::expect(true, c2c is{ForNonNullableByDefault} self::Class2<core::num>);
self::expect(false, c2c is{ForNonNullableByDefault} self::Class2<core::int>);
@@ -151,7 +151,7 @@
self::expect(false, c2d is{ForNonNullableByDefault} self::Class2<core::double>);
self::throws(() → dynamic => f2b{dynamic}.call<core::String>());
self::throws(() → dynamic => f2b{dynamic}.call<core::int, core::String>());
- <T extends S% = dynamic, S extends core::Object? = dynamic>() → self::Class3<T%, S%> f3a = #C3;
+ <T extends S% = dynamic, S extends core::Object? = dynamic>() → self::Class3<T%, S%> f3a = #C8;
self::Class3<dynamic, dynamic> c3a = f3a<dynamic, dynamic>(){() → self::Class3<dynamic, dynamic>};
self::expect(true, c3a is{ForNonNullableByDefault} self::Class3<dynamic, dynamic>);
self::expect(false, c3a is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
@@ -161,7 +161,7 @@
() → Null {
f3a<core::num, core::int>(){() → self::Class3<core::num, core::int>};
};
- dynamic f3b = #C3;
+ dynamic f3b = #C8;
dynamic c3c = f3b{dynamic}.call();
self::expect(true, c3c is{ForNonNullableByDefault} self::Class3<dynamic, dynamic>);
self::expect(false, c3c is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
@@ -169,11 +169,11 @@
self::expect(true, c3d is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
self::expect(false, c3d is{ForNonNullableByDefault} self::Class3<core::double, core::num>);
self::throws(() → dynamic => f3b{dynamic}.call<core::num, core::int>());
- <T extends self::Class4<T> = self::Class4<dynamic>>() → self::Class4<T> f4a = #C4;
+ <T extends self::Class4<T> = self::Class4<dynamic>>() → self::Class4<T> f4a = #C9;
() → Null {
self::Class4<self::Class4<core::Object?>> c4a = f4a<self::Class4<core::Object?>>(){() → self::Class4<self::Class4<core::Object?>>};
};
- dynamic f4b = #C4;
+ dynamic f4b = #C9;
self::throws(() → dynamic => f4b{dynamic}.call());
dynamic c4b = f4b{dynamic}.call<self::Class4int>();
self::expect(true, c4b is{ForNonNullableByDefault} self::Class4<self::Class4int>);
@@ -182,7 +182,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C5}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C10}) → dynamic {
try {
f(){() → dynamic};
}
@@ -197,9 +197,14 @@
}
constants {
- #C1 = static-tearoff self::Class1::_#new#tearOff
- #C2 = static-tearoff self::Class2::_#new#tearOff
- #C3 = static-tearoff self::Class3::_#new#tearOff
- #C4 = static-tearoff self::Class4::_#new#tearOff
- #C5 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::•
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = constructor-tearoff self::Class4int::•
+ #C6 = static-tearoff self::Class1::_#new#tearOff
+ #C7 = static-tearoff self::Class2::_#new#tearOff
+ #C8 = static-tearoff self::Class3::_#new#tearOff
+ #C9 = static-tearoff self::Class4::_#new#tearOff
+ #C10 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.outline.expect
index f1a60c8..eaa086d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.outline.expect
@@ -68,3 +68,12 @@
;
static method throws(() → dynamic f, {core::bool inSoundModeOnly}) → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_redirecting_factory_tear_off.dart:13:7 -> ConstructorTearOffConstant(Class1.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_redirecting_factory_tear_off.dart:45:7 -> ConstructorTearOffConstant(Class2.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_redirecting_factory_tear_off.dart:50:7 -> ConstructorTearOffConstant(Class3.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_redirecting_factory_tear_off.dart:55:7 -> ConstructorTearOffConstant(Class4.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_redirecting_factory_tear_off.dart:60:7 -> ConstructorTearOffConstant(Class4int.)
+Extra constant evaluation: evaluated: 25, effectively constant: 5
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.transformed.expect
index 2b61e14..2a37cef 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/generic_redirecting_factory_tear_off.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
import "dart:core" as core;
class Class1<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1<self::Class1::T%>
: super core::Object::•()
;
@@ -47,7 +47,7 @@
return new self::Class1::_<self::Class1::_#new#tearOff::T%>();
}
class Class2<T extends core::num> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor _() → self::Class2<self::Class2::T>
: super core::Object::•()
;
@@ -59,7 +59,7 @@
return new self::Class2::_<self::Class2::_#new#tearOff::T>();
}
class Class3<T extends self::Class3::S% = dynamic, S extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _() → self::Class3<self::Class3::T%, self::Class3::S%>
: super core::Object::•()
;
@@ -71,7 +71,7 @@
return new self::Class3::_<self::Class3::_#new#tearOff::T%, self::Class3::_#new#tearOff::S%>();
}
class Class4<T extends self::Class4<self::Class4::T> = self::Class4<dynamic>> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
constructor _() → self::Class4<self::Class4::T>
: super core::Object::•()
;
@@ -83,7 +83,7 @@
return new self::Class4::_<self::Class4::_#new#tearOff::T>();
}
class Class4int extends self::Class4<self::Class4int> {
- static final field dynamic _redirecting# = <dynamic>[self::Class4int::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C5]/*isLegacy*/;
constructor _() → self::Class4int
: super self::Class4::_()
;
@@ -101,7 +101,7 @@
self::testBounded();
}
static method testGeneric() → dynamic {
- <T extends core::Object? = dynamic>() → self::Class1<T%> f1a = #C1;
+ <T extends core::Object? = dynamic>() → self::Class1<T%> f1a = #C6;
self::Class1<dynamic> c1a = f1a<dynamic>(){() → self::Class1<dynamic>};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1<dynamic>);
self::expect(false, c1a is{ForNonNullableByDefault} self::Class1<core::int>);
@@ -122,14 +122,14 @@
f1b<int>(); // error
^" in f1b{<inapplicable>}.<core::int>();
};
- dynamic f1c = #C1;
+ dynamic f1c = #C6;
dynamic c1d = f1c{dynamic}.call();
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1<dynamic>);
self::expect(false, c1a is{ForNonNullableByDefault} self::Class1<core::int>);
self::throws(() → dynamic => f1c{dynamic}.call<core::int, core::String>());
}
static method testBounded() → dynamic {
- <T extends core::num>() → self::Class2<T> f2a = #C2;
+ <T extends core::num>() → self::Class2<T> f2a = #C7;
self::Class2<core::num> c2a = f2a<core::num>(){() → self::Class2<core::num>};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2<core::num>);
self::expect(false, c2a is{ForNonNullableByDefault} self::Class2<core::int>);
@@ -142,7 +142,7 @@
f2a<int, String>(); // error
^" in f2a{<inapplicable>}.<core::int, core::String>();
};
- dynamic f2b = #C2;
+ dynamic f2b = #C7;
dynamic c2c = f2b{dynamic}.call();
self::expect(true, c2c is{ForNonNullableByDefault} self::Class2<core::num>);
self::expect(false, c2c is{ForNonNullableByDefault} self::Class2<core::int>);
@@ -151,7 +151,7 @@
self::expect(false, c2d is{ForNonNullableByDefault} self::Class2<core::double>);
self::throws(() → dynamic => f2b{dynamic}.call<core::String>());
self::throws(() → dynamic => f2b{dynamic}.call<core::int, core::String>());
- <T extends S% = dynamic, S extends core::Object? = dynamic>() → self::Class3<T%, S%> f3a = #C3;
+ <T extends S% = dynamic, S extends core::Object? = dynamic>() → self::Class3<T%, S%> f3a = #C8;
self::Class3<dynamic, dynamic> c3a = f3a<dynamic, dynamic>(){() → self::Class3<dynamic, dynamic>};
self::expect(true, c3a is{ForNonNullableByDefault} self::Class3<dynamic, dynamic>);
self::expect(false, c3a is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
@@ -161,7 +161,7 @@
() → Null {
f3a<core::num, core::int>(){() → self::Class3<core::num, core::int>};
};
- dynamic f3b = #C3;
+ dynamic f3b = #C8;
dynamic c3c = f3b{dynamic}.call();
self::expect(true, c3c is{ForNonNullableByDefault} self::Class3<dynamic, dynamic>);
self::expect(false, c3c is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
@@ -169,11 +169,11 @@
self::expect(true, c3d is{ForNonNullableByDefault} self::Class3<core::int, core::num>);
self::expect(false, c3d is{ForNonNullableByDefault} self::Class3<core::double, core::num>);
self::throws(() → dynamic => f3b{dynamic}.call<core::num, core::int>());
- <T extends self::Class4<T> = self::Class4<dynamic>>() → self::Class4<T> f4a = #C4;
+ <T extends self::Class4<T> = self::Class4<dynamic>>() → self::Class4<T> f4a = #C9;
() → Null {
self::Class4<self::Class4<core::Object?>> c4a = f4a<self::Class4<core::Object?>>(){() → self::Class4<self::Class4<core::Object?>>};
};
- dynamic f4b = #C4;
+ dynamic f4b = #C9;
self::throws(() → dynamic => f4b{dynamic}.call());
dynamic c4b = f4b{dynamic}.call<self::Class4int>();
self::expect(true, c4b is{ForNonNullableByDefault} self::Class4<self::Class4int>);
@@ -182,7 +182,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C5}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C10}) → dynamic {
try {
f(){() → dynamic};
}
@@ -197,9 +197,14 @@
}
constants {
- #C1 = static-tearoff self::Class1::_#new#tearOff
- #C2 = static-tearoff self::Class2::_#new#tearOff
- #C3 = static-tearoff self::Class3::_#new#tearOff
- #C4 = static-tearoff self::Class4::_#new#tearOff
- #C5 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::•
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = constructor-tearoff self::Class4int::•
+ #C6 = static-tearoff self::Class1::_#new#tearOff
+ #C7 = static-tearoff self::Class2::_#new#tearOff
+ #C8 = static-tearoff self::Class3::_#new#tearOff
+ #C9 = static-tearoff self::Class4::_#new#tearOff
+ #C10 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.strong.expect
index abfa7c0..66ac229 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.strong.expect
@@ -6,7 +6,7 @@
typedef G<unrelated Y extends core::Object? = dynamic> = self::A<core::int>;
typedef H<X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic> = self::A<X%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -22,51 +22,51 @@
return new self::A::•<self::A::_#redirect#tearOff::T%>();
}
static final field core::bool inSoundMode = !(<core::int?>[] is{ForNonNullableByDefault} core::List<core::int>);
-static const field () → self::A<core::int> f1a = #C2;
-static const field () → self::A<core::int> f1b = #C2;
-static const field () → self::A<core::int> f1c = #C2;
-static const field () → self::A<core::int> f1d = #C4;
-static const field () → self::A<core::int> f1e = #C4;
-static const field () → self::A<core::int> f1f = #C4;
-static const field () → self::A<core::int> f1g = #C6;
-static const field () → self::A<core::int> f1h = #C6;
-static const field () → self::A<core::int> f1i = #C6;
-static const field () → self::A<core::int> g1a = #C2;
-static const field () → self::A<core::int> g1b = #C2;
-static const field () → self::A<core::int> g1c = #C2;
-static const field () → self::A<core::int> h1a = #C2;
-static const field () → self::A<core::int> h1b = #C2;
-static const field () → self::A<core::int> h1c = #C2;
+static const field () → self::A<core::int> f1a = #C3;
+static const field () → self::A<core::int> f1b = #C3;
+static const field () → self::A<core::int> f1c = #C3;
+static const field () → self::A<core::int> f1d = #C5;
+static const field () → self::A<core::int> f1e = #C5;
+static const field () → self::A<core::int> f1f = #C5;
+static const field () → self::A<core::int> f1g = #C7;
+static const field () → self::A<core::int> f1h = #C7;
+static const field () → self::A<core::int> f1i = #C7;
+static const field () → self::A<core::int> g1a = #C3;
+static const field () → self::A<core::int> g1b = #C3;
+static const field () → self::A<core::int> g1c = #C3;
+static const field () → self::A<core::int> h1a = #C3;
+static const field () → self::A<core::int> h1b = #C3;
+static const field () → self::A<core::int> h1c = #C3;
static method main() → dynamic {
self::test<core::int>();
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C4, #C4);
- core::identical(#C4, #C4);
- core::identical(#C6, #C6);
- core::identical(#C6, #C6);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C5, #C5);
+ core::identical(#C5, #C5);
+ core::identical(#C7, #C7);
+ core::identical(#C7, #C7);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
}
static method test<T extends core::num>() → dynamic {
- () → self::A<self::test::T> f2a = #C1<self::test::T>;
- () → self::A<self::test::T> f2b = #C1<self::test::T>;
- () → self::A<self::test::T> f2c = #C1<self::test::T>;
- () → self::A<self::test::T> f2d = #C3<self::test::T>;
- () → self::A<self::test::T> f2e = #C3<self::test::T>;
- () → self::A<self::test::T> f2f = #C3<self::test::T>;
- () → self::A<self::test::T> f2g = #C5<self::test::T>;
- () → self::A<self::test::T> f2h = #C5<self::test::T>;
- () → self::A<self::test::T> f2i = #C5<self::test::T>;
- () → self::A<core::int> g2a = #C2;
- () → self::A<core::int> g2b = #C2;
- () → self::A<core::int> g2c = #C2;
- () → self::A<self::test::T> h2a = #C1<self::test::T>;
- () → self::A<self::test::T> h2b = #C1<self::test::T>;
- () → self::A<self::test::T> h2c = #C1<self::test::T>;
- self::expect(#C2, g2a);
+ () → self::A<self::test::T> f2a = #C2<self::test::T>;
+ () → self::A<self::test::T> f2b = #C2<self::test::T>;
+ () → self::A<self::test::T> f2c = #C2<self::test::T>;
+ () → self::A<self::test::T> f2d = #C4<self::test::T>;
+ () → self::A<self::test::T> f2e = #C4<self::test::T>;
+ () → self::A<self::test::T> f2f = #C4<self::test::T>;
+ () → self::A<self::test::T> f2g = #C6<self::test::T>;
+ () → self::A<self::test::T> f2h = #C6<self::test::T>;
+ () → self::A<self::test::T> f2i = #C6<self::test::T>;
+ () → self::A<core::int> g2a = #C3;
+ () → self::A<core::int> g2b = #C3;
+ () → self::A<core::int> g2c = #C3;
+ () → self::A<self::test::T> h2a = #C2<self::test::T>;
+ () → self::A<self::test::T> h2b = #C2<self::test::T>;
+ () → self::A<self::test::T> h2c = #C2<self::test::T>;
+ self::expect(#C3, g2a);
self::expect(g2a, g2b);
if(self::inSoundMode) {
self::expect(g2a, g2c);
@@ -96,10 +96,11 @@
return self::A::_#redirect#tearOff<self::_#H#redirect#tearOff::X%>();
constants {
- #C1 = static-tearoff self::A::_#new#tearOff
- #C2 = instantiation self::A::_#new#tearOff <core::int>
- #C3 = static-tearoff self::A::_#fact#tearOff
- #C4 = instantiation self::A::_#fact#tearOff <core::int>
- #C5 = static-tearoff self::A::_#redirect#tearOff
- #C6 = instantiation self::A::_#redirect#tearOff <core::int>
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = static-tearoff self::A::_#new#tearOff
+ #C3 = instantiation #C2 <core::int>
+ #C4 = static-tearoff self::A::_#fact#tearOff
+ #C5 = instantiation #C4 <core::int>
+ #C6 = static-tearoff self::A::_#redirect#tearOff
+ #C7 = instantiation #C6 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.strong.transformed.expect
index e5c1801..6d90c84 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
typedef G<unrelated Y extends core::Object? = dynamic> = self::A<core::int>;
typedef H<X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic> = self::A<X%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -22,51 +22,51 @@
return new self::A::•<self::A::_#redirect#tearOff::T%>();
}
static final field core::bool inSoundMode = !(core::_GrowableList::•<core::int?>(0) is{ForNonNullableByDefault} core::List<core::int>);
-static const field () → self::A<core::int> f1a = #C2;
-static const field () → self::A<core::int> f1b = #C2;
-static const field () → self::A<core::int> f1c = #C2;
-static const field () → self::A<core::int> f1d = #C4;
-static const field () → self::A<core::int> f1e = #C4;
-static const field () → self::A<core::int> f1f = #C4;
-static const field () → self::A<core::int> f1g = #C6;
-static const field () → self::A<core::int> f1h = #C6;
-static const field () → self::A<core::int> f1i = #C6;
-static const field () → self::A<core::int> g1a = #C2;
-static const field () → self::A<core::int> g1b = #C2;
-static const field () → self::A<core::int> g1c = #C2;
-static const field () → self::A<core::int> h1a = #C2;
-static const field () → self::A<core::int> h1b = #C2;
-static const field () → self::A<core::int> h1c = #C2;
+static const field () → self::A<core::int> f1a = #C3;
+static const field () → self::A<core::int> f1b = #C3;
+static const field () → self::A<core::int> f1c = #C3;
+static const field () → self::A<core::int> f1d = #C5;
+static const field () → self::A<core::int> f1e = #C5;
+static const field () → self::A<core::int> f1f = #C5;
+static const field () → self::A<core::int> f1g = #C7;
+static const field () → self::A<core::int> f1h = #C7;
+static const field () → self::A<core::int> f1i = #C7;
+static const field () → self::A<core::int> g1a = #C3;
+static const field () → self::A<core::int> g1b = #C3;
+static const field () → self::A<core::int> g1c = #C3;
+static const field () → self::A<core::int> h1a = #C3;
+static const field () → self::A<core::int> h1b = #C3;
+static const field () → self::A<core::int> h1c = #C3;
static method main() → dynamic {
self::test<core::int>();
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C4, #C4);
- core::identical(#C4, #C4);
- core::identical(#C6, #C6);
- core::identical(#C6, #C6);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C5, #C5);
+ core::identical(#C5, #C5);
+ core::identical(#C7, #C7);
+ core::identical(#C7, #C7);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
}
static method test<T extends core::num>() → dynamic {
- () → self::A<self::test::T> f2a = #C1<self::test::T>;
- () → self::A<self::test::T> f2b = #C1<self::test::T>;
- () → self::A<self::test::T> f2c = #C1<self::test::T>;
- () → self::A<self::test::T> f2d = #C3<self::test::T>;
- () → self::A<self::test::T> f2e = #C3<self::test::T>;
- () → self::A<self::test::T> f2f = #C3<self::test::T>;
- () → self::A<self::test::T> f2g = #C5<self::test::T>;
- () → self::A<self::test::T> f2h = #C5<self::test::T>;
- () → self::A<self::test::T> f2i = #C5<self::test::T>;
- () → self::A<core::int> g2a = #C2;
- () → self::A<core::int> g2b = #C2;
- () → self::A<core::int> g2c = #C2;
- () → self::A<self::test::T> h2a = #C1<self::test::T>;
- () → self::A<self::test::T> h2b = #C1<self::test::T>;
- () → self::A<self::test::T> h2c = #C1<self::test::T>;
- self::expect(#C2, g2a);
+ () → self::A<self::test::T> f2a = #C2<self::test::T>;
+ () → self::A<self::test::T> f2b = #C2<self::test::T>;
+ () → self::A<self::test::T> f2c = #C2<self::test::T>;
+ () → self::A<self::test::T> f2d = #C4<self::test::T>;
+ () → self::A<self::test::T> f2e = #C4<self::test::T>;
+ () → self::A<self::test::T> f2f = #C4<self::test::T>;
+ () → self::A<self::test::T> f2g = #C6<self::test::T>;
+ () → self::A<self::test::T> f2h = #C6<self::test::T>;
+ () → self::A<self::test::T> f2i = #C6<self::test::T>;
+ () → self::A<core::int> g2a = #C3;
+ () → self::A<core::int> g2b = #C3;
+ () → self::A<core::int> g2c = #C3;
+ () → self::A<self::test::T> h2a = #C2<self::test::T>;
+ () → self::A<self::test::T> h2b = #C2<self::test::T>;
+ () → self::A<self::test::T> h2c = #C2<self::test::T>;
+ self::expect(#C3, g2a);
self::expect(g2a, g2b);
if(self::inSoundMode) {
self::expect(g2a, g2c);
@@ -96,12 +96,13 @@
return self::A::_#redirect#tearOff<self::_#H#redirect#tearOff::X%>();
constants {
- #C1 = static-tearoff self::A::_#new#tearOff
- #C2 = instantiation self::A::_#new#tearOff <core::int>
- #C3 = static-tearoff self::A::_#fact#tearOff
- #C4 = instantiation self::A::_#fact#tearOff <core::int>
- #C5 = static-tearoff self::A::_#redirect#tearOff
- #C6 = instantiation self::A::_#redirect#tearOff <core::int>
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = static-tearoff self::A::_#new#tearOff
+ #C3 = instantiation #C2 <core::int>
+ #C4 = static-tearoff self::A::_#fact#tearOff
+ #C5 = instantiation #C4 <core::int>
+ #C6 = static-tearoff self::A::_#redirect#tearOff
+ #C7 = instantiation #C6 <core::int>
}
Extra constant evaluation status:
@@ -115,4 +116,4 @@
Evaluated: StaticInvocation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:48:3 -> BoolConstant(true)
Evaluated: StaticInvocation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:50:3 -> BoolConstant(true)
Evaluated: StaticInvocation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:51:3 -> BoolConstant(true)
-Extra constant evaluation: evaluated: 59, effectively constant: 10
+Extra constant evaluation: evaluated: 58, effectively constant: 10
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.expect
index 942bbe6..6075c15 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.expect
@@ -6,7 +6,7 @@
typedef G<unrelated Y extends core::Object? = dynamic> = self::A<core::int>;
typedef H<X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic> = self::A<X%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -22,51 +22,51 @@
return new self::A::•<self::A::_#redirect#tearOff::T%>();
}
static final field core::bool inSoundMode = !(<core::int?>[] is{ForNonNullableByDefault} core::List<core::int>);
-static const field () → self::A<core::int> f1a = #C2;
-static const field () → self::A<core::int> f1b = #C2;
-static const field () → self::A<core::int> f1c = #C2;
-static const field () → self::A<core::int> f1d = #C4;
-static const field () → self::A<core::int> f1e = #C4;
-static const field () → self::A<core::int> f1f = #C4;
-static const field () → self::A<core::int> f1g = #C6;
-static const field () → self::A<core::int> f1h = #C6;
-static const field () → self::A<core::int> f1i = #C6;
-static const field () → self::A<core::int> g1a = #C2;
-static const field () → self::A<core::int> g1b = #C2;
-static const field () → self::A<core::int> g1c = #C2;
-static const field () → self::A<core::int> h1a = #C2;
-static const field () → self::A<core::int> h1b = #C2;
-static const field () → self::A<core::int> h1c = #C2;
+static const field () → self::A<core::int> f1a = #C3;
+static const field () → self::A<core::int> f1b = #C3;
+static const field () → self::A<core::int> f1c = #C3;
+static const field () → self::A<core::int> f1d = #C5;
+static const field () → self::A<core::int> f1e = #C5;
+static const field () → self::A<core::int> f1f = #C5;
+static const field () → self::A<core::int> f1g = #C7;
+static const field () → self::A<core::int> f1h = #C7;
+static const field () → self::A<core::int> f1i = #C7;
+static const field () → self::A<core::int> g1a = #C3;
+static const field () → self::A<core::int> g1b = #C3;
+static const field () → self::A<core::int> g1c = #C3;
+static const field () → self::A<core::int> h1a = #C3;
+static const field () → self::A<core::int> h1b = #C3;
+static const field () → self::A<core::int> h1c = #C3;
static method main() → dynamic {
self::test<core::int>();
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C4, #C4);
- core::identical(#C4, #C4);
- core::identical(#C6, #C6);
- core::identical(#C6, #C6);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C5, #C5);
+ core::identical(#C5, #C5);
+ core::identical(#C7, #C7);
+ core::identical(#C7, #C7);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
}
static method test<T extends core::num>() → dynamic {
- () → self::A<self::test::T> f2a = #C1<self::test::T>;
- () → self::A<self::test::T> f2b = #C1<self::test::T>;
- () → self::A<self::test::T> f2c = #C1<self::test::T>;
- () → self::A<self::test::T> f2d = #C3<self::test::T>;
- () → self::A<self::test::T> f2e = #C3<self::test::T>;
- () → self::A<self::test::T> f2f = #C3<self::test::T>;
- () → self::A<self::test::T> f2g = #C5<self::test::T>;
- () → self::A<self::test::T> f2h = #C5<self::test::T>;
- () → self::A<self::test::T> f2i = #C5<self::test::T>;
- () → self::A<core::int> g2a = #C2;
- () → self::A<core::int> g2b = #C2;
- () → self::A<core::int> g2c = #C2;
- () → self::A<self::test::T> h2a = #C1<self::test::T>;
- () → self::A<self::test::T> h2b = #C1<self::test::T>;
- () → self::A<self::test::T> h2c = #C1<self::test::T>;
- self::expect(#C2, g2a);
+ () → self::A<self::test::T> f2a = #C2<self::test::T>;
+ () → self::A<self::test::T> f2b = #C2<self::test::T>;
+ () → self::A<self::test::T> f2c = #C2<self::test::T>;
+ () → self::A<self::test::T> f2d = #C4<self::test::T>;
+ () → self::A<self::test::T> f2e = #C4<self::test::T>;
+ () → self::A<self::test::T> f2f = #C4<self::test::T>;
+ () → self::A<self::test::T> f2g = #C6<self::test::T>;
+ () → self::A<self::test::T> f2h = #C6<self::test::T>;
+ () → self::A<self::test::T> f2i = #C6<self::test::T>;
+ () → self::A<core::int> g2a = #C3;
+ () → self::A<core::int> g2b = #C3;
+ () → self::A<core::int> g2c = #C3;
+ () → self::A<self::test::T> h2a = #C2<self::test::T>;
+ () → self::A<self::test::T> h2b = #C2<self::test::T>;
+ () → self::A<self::test::T> h2c = #C2<self::test::T>;
+ self::expect(#C3, g2a);
self::expect(g2a, g2b);
if(self::inSoundMode) {
self::expect(g2a, g2c);
@@ -96,10 +96,11 @@
return self::A::_#redirect#tearOff<self::_#H#redirect#tearOff::X%>();
constants {
- #C1 = static-tearoff self::A::_#new#tearOff
- #C2 = instantiation self::A::_#new#tearOff <core::int*>
- #C3 = static-tearoff self::A::_#fact#tearOff
- #C4 = instantiation self::A::_#fact#tearOff <core::int*>
- #C5 = static-tearoff self::A::_#redirect#tearOff
- #C6 = instantiation self::A::_#redirect#tearOff <core::int*>
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = static-tearoff self::A::_#new#tearOff
+ #C3 = instantiation #C2 <core::int*>
+ #C4 = static-tearoff self::A::_#fact#tearOff
+ #C5 = instantiation #C4 <core::int*>
+ #C6 = static-tearoff self::A::_#redirect#tearOff
+ #C7 = instantiation #C6 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.outline.expect
index feba408..1d3da75 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.outline.expect
@@ -23,19 +23,19 @@
static final field core::bool inSoundMode;
static const field () → self::A<core::int> f1a = self::A::_#new#tearOff<core::int>;
static const field () → self::A<core::int> f1b = self::A::_#new#tearOff<core::int>;
-static const field () → self::A<core::int> f1c = self::_#F#new#tearOff<core::int>;
+static const field () → self::A<core::int> f1c = self::A::_#new#tearOff<core::int>;
static const field () → self::A<core::int> f1d = self::A::_#fact#tearOff<core::int>;
static const field () → self::A<core::int> f1e = self::A::_#fact#tearOff<core::int>;
-static const field () → self::A<core::int> f1f = self::_#F#fact#tearOff<core::int>;
+static const field () → self::A<core::int> f1f = self::A::_#fact#tearOff<core::int>;
static const field () → self::A<core::int> f1g = self::A::_#redirect#tearOff<core::int>;
static const field () → self::A<core::int> f1h = self::A::_#redirect#tearOff<core::int>;
-static const field () → self::A<core::int> f1i = self::_#F#redirect#tearOff<core::int>;
+static const field () → self::A<core::int> f1i = self::A::_#redirect#tearOff<core::int>;
static const field () → self::A<core::int> g1a = self::A::_#new#tearOff<core::int>;
static const field () → self::A<core::int> g1b = self::A::_#new#tearOff<core::int>;
-static const field () → self::A<core::int> g1c = self::_#G#new#tearOff<dynamic>;
+static const field () → self::A<core::int> g1c = self::A::_#new#tearOff<core::int>;
static const field () → self::A<core::int> h1a = self::A::_#new#tearOff<core::int>;
static const field () → self::A<core::int> h1b = self::A::_#new#tearOff<core::int>;
-static const field () → self::A<core::int> h1c = self::_#H#new#tearOff<core::int, dynamic>;
+static const field () → self::A<core::int> h1c = self::A::_#new#tearOff<core::int>;
static method main() → dynamic
;
static method test<T extends core::num>() → dynamic
@@ -63,19 +63,20 @@
Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///inferred_non_proper_rename.dart:7:7 -> ConstructorTearOffConstant(A.redirect)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:17:13 -> InstantiationConstant(A._#new#tearOff<int*>)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:18:13 -> InstantiationConstant(A._#new#tearOff<int*>)
-Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:19:31 -> InstantiationConstant(A._#new#tearOff<int*>)
+Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:19:25 -> InstantiationConstant(A._#new#tearOff<int*>)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:20:13 -> InstantiationConstant(A._#fact#tearOff<int*>)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:21:13 -> InstantiationConstant(A._#fact#tearOff<int*>)
-Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:22:31 -> InstantiationConstant(A._#fact#tearOff<int*>)
+Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:22:25 -> InstantiationConstant(A._#fact#tearOff<int*>)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:23:13 -> InstantiationConstant(A._#redirect#tearOff<int*>)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:24:13 -> InstantiationConstant(A._#redirect#tearOff<int*>)
-Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:25:31 -> InstantiationConstant(A._#redirect#tearOff<int*>)
+Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:25:25 -> InstantiationConstant(A._#redirect#tearOff<int*>)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:27:13 -> InstantiationConstant(A._#new#tearOff<int*>)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:28:13 -> InstantiationConstant(A._#new#tearOff<int*>)
-Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:29:31 -> InstantiationConstant(A._#new#tearOff<int*>)
+Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:29:25 -> InstantiationConstant(A._#new#tearOff<int*>)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:31:13 -> InstantiationConstant(A._#new#tearOff<int*>)
Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:32:13 -> InstantiationConstant(A._#new#tearOff<int*>)
-Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:33:31 -> InstantiationConstant(A._#new#tearOff<int*>)
-Extra constant evaluation: evaluated: 30, effectively constant: 15
+Evaluated: Instantiation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:33:25 -> InstantiationConstant(A._#new#tearOff<int*>)
+Extra constant evaluation: evaluated: 30, effectively constant: 16
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.transformed.expect
index 3d86e63..f1ac2a0 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
typedef G<unrelated Y extends core::Object? = dynamic> = self::A<core::int>;
typedef H<X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic> = self::A<X%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -22,51 +22,51 @@
return new self::A::•<self::A::_#redirect#tearOff::T%>();
}
static final field core::bool inSoundMode = !(core::_GrowableList::•<core::int?>(0) is{ForNonNullableByDefault} core::List<core::int>);
-static const field () → self::A<core::int> f1a = #C2;
-static const field () → self::A<core::int> f1b = #C2;
-static const field () → self::A<core::int> f1c = #C2;
-static const field () → self::A<core::int> f1d = #C4;
-static const field () → self::A<core::int> f1e = #C4;
-static const field () → self::A<core::int> f1f = #C4;
-static const field () → self::A<core::int> f1g = #C6;
-static const field () → self::A<core::int> f1h = #C6;
-static const field () → self::A<core::int> f1i = #C6;
-static const field () → self::A<core::int> g1a = #C2;
-static const field () → self::A<core::int> g1b = #C2;
-static const field () → self::A<core::int> g1c = #C2;
-static const field () → self::A<core::int> h1a = #C2;
-static const field () → self::A<core::int> h1b = #C2;
-static const field () → self::A<core::int> h1c = #C2;
+static const field () → self::A<core::int> f1a = #C3;
+static const field () → self::A<core::int> f1b = #C3;
+static const field () → self::A<core::int> f1c = #C3;
+static const field () → self::A<core::int> f1d = #C5;
+static const field () → self::A<core::int> f1e = #C5;
+static const field () → self::A<core::int> f1f = #C5;
+static const field () → self::A<core::int> f1g = #C7;
+static const field () → self::A<core::int> f1h = #C7;
+static const field () → self::A<core::int> f1i = #C7;
+static const field () → self::A<core::int> g1a = #C3;
+static const field () → self::A<core::int> g1b = #C3;
+static const field () → self::A<core::int> g1c = #C3;
+static const field () → self::A<core::int> h1a = #C3;
+static const field () → self::A<core::int> h1b = #C3;
+static const field () → self::A<core::int> h1c = #C3;
static method main() → dynamic {
self::test<core::int>();
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C4, #C4);
- core::identical(#C4, #C4);
- core::identical(#C6, #C6);
- core::identical(#C6, #C6);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
- core::identical(#C2, #C2);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C5, #C5);
+ core::identical(#C5, #C5);
+ core::identical(#C7, #C7);
+ core::identical(#C7, #C7);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
+ core::identical(#C3, #C3);
}
static method test<T extends core::num>() → dynamic {
- () → self::A<self::test::T> f2a = #C1<self::test::T>;
- () → self::A<self::test::T> f2b = #C1<self::test::T>;
- () → self::A<self::test::T> f2c = #C1<self::test::T>;
- () → self::A<self::test::T> f2d = #C3<self::test::T>;
- () → self::A<self::test::T> f2e = #C3<self::test::T>;
- () → self::A<self::test::T> f2f = #C3<self::test::T>;
- () → self::A<self::test::T> f2g = #C5<self::test::T>;
- () → self::A<self::test::T> f2h = #C5<self::test::T>;
- () → self::A<self::test::T> f2i = #C5<self::test::T>;
- () → self::A<core::int> g2a = #C2;
- () → self::A<core::int> g2b = #C2;
- () → self::A<core::int> g2c = #C2;
- () → self::A<self::test::T> h2a = #C1<self::test::T>;
- () → self::A<self::test::T> h2b = #C1<self::test::T>;
- () → self::A<self::test::T> h2c = #C1<self::test::T>;
- self::expect(#C2, g2a);
+ () → self::A<self::test::T> f2a = #C2<self::test::T>;
+ () → self::A<self::test::T> f2b = #C2<self::test::T>;
+ () → self::A<self::test::T> f2c = #C2<self::test::T>;
+ () → self::A<self::test::T> f2d = #C4<self::test::T>;
+ () → self::A<self::test::T> f2e = #C4<self::test::T>;
+ () → self::A<self::test::T> f2f = #C4<self::test::T>;
+ () → self::A<self::test::T> f2g = #C6<self::test::T>;
+ () → self::A<self::test::T> f2h = #C6<self::test::T>;
+ () → self::A<self::test::T> f2i = #C6<self::test::T>;
+ () → self::A<core::int> g2a = #C3;
+ () → self::A<core::int> g2b = #C3;
+ () → self::A<core::int> g2c = #C3;
+ () → self::A<self::test::T> h2a = #C2<self::test::T>;
+ () → self::A<self::test::T> h2b = #C2<self::test::T>;
+ () → self::A<self::test::T> h2c = #C2<self::test::T>;
+ self::expect(#C3, g2a);
self::expect(g2a, g2b);
if(self::inSoundMode) {
self::expect(g2a, g2c);
@@ -96,12 +96,13 @@
return self::A::_#redirect#tearOff<self::_#H#redirect#tearOff::X%>();
constants {
- #C1 = static-tearoff self::A::_#new#tearOff
- #C2 = instantiation self::A::_#new#tearOff <core::int*>
- #C3 = static-tearoff self::A::_#fact#tearOff
- #C4 = instantiation self::A::_#fact#tearOff <core::int*>
- #C5 = static-tearoff self::A::_#redirect#tearOff
- #C6 = instantiation self::A::_#redirect#tearOff <core::int*>
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = static-tearoff self::A::_#new#tearOff
+ #C3 = instantiation #C2 <core::int*>
+ #C4 = static-tearoff self::A::_#fact#tearOff
+ #C5 = instantiation #C4 <core::int*>
+ #C6 = static-tearoff self::A::_#redirect#tearOff
+ #C7 = instantiation #C6 <core::int*>
}
Extra constant evaluation status:
@@ -115,4 +116,4 @@
Evaluated: StaticInvocation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:48:3 -> BoolConstant(true)
Evaluated: StaticInvocation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:50:3 -> BoolConstant(true)
Evaluated: StaticInvocation @ org-dartlang-testcase:///inferred_non_proper_rename.dart:51:3 -> BoolConstant(true)
-Extra constant evaluation: evaluated: 59, effectively constant: 10
+Extra constant evaluation: evaluated: 58, effectively constant: 10
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.strong.expect
index 254bc55..ddcf3b9 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.strong.expect
@@ -56,7 +56,7 @@
#C4 = static-tearoff self::_#G#new#tearOff
#C5 = static-tearoff self::A::_#named#tearOff
#C6 = static-tearoff self::B::_#named#tearOff
- #C7 = instantiation self::B::_#named#tearOff <core::int>
+ #C7 = instantiation #C6 <core::int>
#C8 = static-tearoff self::_#F#named#tearOff
- #C9 = instantiation self::B::_#named#tearOff <dynamic>
+ #C9 = instantiation #C6 <dynamic>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.strong.transformed.expect
index 254bc55..ddcf3b9 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.strong.transformed.expect
@@ -56,7 +56,7 @@
#C4 = static-tearoff self::_#G#new#tearOff
#C5 = static-tearoff self::A::_#named#tearOff
#C6 = static-tearoff self::B::_#named#tearOff
- #C7 = instantiation self::B::_#named#tearOff <core::int>
+ #C7 = instantiation #C6 <core::int>
#C8 = static-tearoff self::_#F#named#tearOff
- #C9 = instantiation self::B::_#named#tearOff <dynamic>
+ #C9 = instantiation #C6 <dynamic>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.weak.expect
index b80b9d5..3414686 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.weak.expect
@@ -56,7 +56,7 @@
#C4 = static-tearoff self::_#G#new#tearOff
#C5 = static-tearoff self::A::_#named#tearOff
#C6 = static-tearoff self::B::_#named#tearOff
- #C7 = instantiation self::B::_#named#tearOff <core::int*>
+ #C7 = instantiation #C6 <core::int*>
#C8 = static-tearoff self::_#F#named#tearOff
- #C9 = instantiation self::B::_#named#tearOff <dynamic>
+ #C9 = instantiation #C6 <dynamic>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.weak.transformed.expect
index b80b9d5..3414686 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_tear_off.dart.weak.transformed.expect
@@ -56,7 +56,7 @@
#C4 = static-tearoff self::_#G#new#tearOff
#C5 = static-tearoff self::A::_#named#tearOff
#C6 = static-tearoff self::B::_#named#tearOff
- #C7 = instantiation self::B::_#named#tearOff <core::int*>
+ #C7 = instantiation #C6 <core::int*>
#C8 = static-tearoff self::_#F#named#tearOff
- #C9 = instantiation self::B::_#named#tearOff <dynamic>
+ #C9 = instantiation #C6 <dynamic>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart
new file mode 100644
index 0000000..17b9e38
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2021, 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.
+
+typedef MyList<T extends num> = List<T>;
+
+main() {
+ const c1 = MyList<num>.filled;
+ const c2 = MyList<num>.filled;
+ const c3 = (MyList.filled)<num>;
+
+ const c4 = identical(c1, c2);
+ const c5 = identical(c1, c3);
+
+ expect(true, c4);
+ expect(false, c5);
+
+ expect(true, identical(c1, c2));
+ expect(false, identical(c1, c3));
+
+ var v1 = MyList<num>.filled;
+ var v2 = MyList<num>.filled;
+ var v3 = (MyList.filled)<num>;
+
+ var v4 = identical(v1, v2);
+ var v5 = identical(v1, v3);
+
+ expect(true, v4);
+ expect(false, v5);
+
+ expect(true, identical(v1, v2));
+ expect(false, identical(v1, v3));
+}
+
+expect(expected, actual) {
+ if (expected != actual) throw 'Expected $expected, actual $actual';
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.strong.expect
new file mode 100644
index 0000000..672dbca
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.strong.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#new#tearOff<T extends core::num>([core::int? length = #C7]) → core::List<self::_#MyList#new#tearOff::T>
+ return core::List::•<self::_#MyList#new#tearOff::T>(length);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#filled#tearOff<T extends core::num>(core::int length, self::_#MyList#filled#tearOff::T fill, {core::bool growable = #C2}) → core::List<self::_#MyList#filled#tearOff::T>
+ return core::List::filled<self::_#MyList#filled#tearOff::T>(length, fill, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#empty#tearOff<T extends core::num>({core::bool growable = #C2}) → core::List<self::_#MyList#empty#tearOff::T>
+ return core::List::empty<self::_#MyList#empty#tearOff::T>(growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#from#tearOff<T extends core::num>(core::Iterable<dynamic> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#from#tearOff::T>
+ return core::List::from<self::_#MyList#from#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#of#tearOff<T extends core::num>(core::Iterable<self::_#MyList#of#tearOff::T> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#of#tearOff::T>
+ return core::List::of<self::_#MyList#of#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#generate#tearOff<T extends core::num>(core::int length, (core::int) → self::_#MyList#generate#tearOff::T generator, {core::bool growable = #C1}) → core::List<self::_#MyList#generate#tearOff::T>
+ return core::List::generate<self::_#MyList#generate#tearOff::T>(length, generator, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#unmodifiable#tearOff<T extends core::num>(core::Iterable<dynamic> elements) → core::List<self::_#MyList#unmodifiable#tearOff::T>
+ return core::List::unmodifiable<self::_#MyList#unmodifiable#tearOff::T>(elements);
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num>
+ #C5 = static-tearoff self::_#MyList#filled#tearOff
+ #C6 = instantiation #C5 <core::num>
+ #C7 = null
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.strong.transformed.expect
new file mode 100644
index 0000000..36b8a3e
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.strong.transformed.expect
@@ -0,0 +1,53 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#new#tearOff<T extends core::num>([core::int? length = #C7]) → core::List<self::_#MyList#new#tearOff::T>
+ return core::_List::•<self::_#MyList#new#tearOff::T>(length);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#filled#tearOff<T extends core::num>(core::int length, self::_#MyList#filled#tearOff::T fill, {core::bool growable = #C2}) → core::List<self::_#MyList#filled#tearOff::T>
+ return core::List::filled<self::_#MyList#filled#tearOff::T>(length, fill, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#empty#tearOff<T extends core::num>({core::bool growable = #C2}) → core::List<self::_#MyList#empty#tearOff::T>
+ return core::List::empty<self::_#MyList#empty#tearOff::T>(growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#from#tearOff<T extends core::num>(core::Iterable<dynamic> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#from#tearOff::T>
+ return core::List::from<self::_#MyList#from#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#of#tearOff<T extends core::num>(core::Iterable<self::_#MyList#of#tearOff::T> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#of#tearOff::T>
+ return core::List::of<self::_#MyList#of#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#generate#tearOff<T extends core::num>(core::int length, (core::int) → self::_#MyList#generate#tearOff::T generator, {core::bool growable = #C1}) → core::List<self::_#MyList#generate#tearOff::T>
+ return core::List::generate<self::_#MyList#generate#tearOff::T>(length, generator, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#unmodifiable#tearOff<T extends core::num>(core::Iterable<dynamic> elements) → core::List<self::_#MyList#unmodifiable#tearOff::T>
+ return core::List::unmodifiable<self::_#MyList#unmodifiable#tearOff::T>(elements);
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num>
+ #C5 = static-tearoff self::_#MyList#filled#tearOff
+ #C6 = instantiation #C5 <core::num>
+ #C7 = null
+}
+
+Extra constant evaluation status:
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:18:16 -> BoolConstant(true)
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:19:17 -> BoolConstant(false)
+Extra constant evaluation: evaluated: 52, effectively constant: 2
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.textual_outline.expect
new file mode 100644
index 0000000..f4c644d
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.textual_outline.expect
@@ -0,0 +1,3 @@
+typedef MyList<T extends num> = List<T>;
+main() {}
+expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f083298
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.textual_outline_modelled.expect
@@ -0,0 +1,3 @@
+expect(expected, actual) {}
+main() {}
+typedef MyList<T extends num> = List<T>;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.weak.expect
new file mode 100644
index 0000000..2a6bd0b
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.weak.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#new#tearOff<T extends core::num>([core::int? length = #C7]) → core::List<self::_#MyList#new#tearOff::T>
+ return core::List::•<self::_#MyList#new#tearOff::T>(length);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#filled#tearOff<T extends core::num>(core::int length, self::_#MyList#filled#tearOff::T fill, {core::bool growable = #C2}) → core::List<self::_#MyList#filled#tearOff::T>
+ return core::List::filled<self::_#MyList#filled#tearOff::T>(length, fill, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#empty#tearOff<T extends core::num>({core::bool growable = #C2}) → core::List<self::_#MyList#empty#tearOff::T>
+ return core::List::empty<self::_#MyList#empty#tearOff::T>(growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#from#tearOff<T extends core::num>(core::Iterable<dynamic> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#from#tearOff::T>
+ return core::List::from<self::_#MyList#from#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#of#tearOff<T extends core::num>(core::Iterable<self::_#MyList#of#tearOff::T> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#of#tearOff::T>
+ return core::List::of<self::_#MyList#of#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#generate#tearOff<T extends core::num>(core::int length, (core::int) → self::_#MyList#generate#tearOff::T generator, {core::bool growable = #C1}) → core::List<self::_#MyList#generate#tearOff::T>
+ return core::List::generate<self::_#MyList#generate#tearOff::T>(length, generator, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#unmodifiable#tearOff<T extends core::num>(core::Iterable<dynamic> elements) → core::List<self::_#MyList#unmodifiable#tearOff::T>
+ return core::List::unmodifiable<self::_#MyList#unmodifiable#tearOff::T>(elements);
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num*>
+ #C5 = static-tearoff self::_#MyList#filled#tearOff
+ #C6 = instantiation #C5 <core::num*>
+ #C7 = null
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.weak.outline.expect
new file mode 100644
index 0000000..b89a67b
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.weak.outline.expect
@@ -0,0 +1,23 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic
+ ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+ ;
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#new#tearOff<T extends core::num>([core::int? length]) → core::List<self::_#MyList#new#tearOff::T>
+ return core::List::•<self::_#MyList#new#tearOff::T>(length);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#filled#tearOff<T extends core::num>(core::int length, self::_#MyList#filled#tearOff::T fill, {core::bool growable}) → core::List<self::_#MyList#filled#tearOff::T>
+ return core::List::filled<self::_#MyList#filled#tearOff::T>(length, fill, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#empty#tearOff<T extends core::num>({core::bool growable}) → core::List<self::_#MyList#empty#tearOff::T>
+ return core::List::empty<self::_#MyList#empty#tearOff::T>(growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#from#tearOff<T extends core::num>(core::Iterable<dynamic> elements, {core::bool growable}) → core::List<self::_#MyList#from#tearOff::T>
+ return core::List::from<self::_#MyList#from#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#of#tearOff<T extends core::num>(core::Iterable<self::_#MyList#of#tearOff::T> elements, {core::bool growable}) → core::List<self::_#MyList#of#tearOff::T>
+ return core::List::of<self::_#MyList#of#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#generate#tearOff<T extends core::num>(core::int length, (core::int) → self::_#MyList#generate#tearOff::T generator, {core::bool growable}) → core::List<self::_#MyList#generate#tearOff::T>
+ return core::List::generate<self::_#MyList#generate#tearOff::T>(length, generator, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#unmodifiable#tearOff<T extends core::num>(core::Iterable<dynamic> elements) → core::List<self::_#MyList#unmodifiable#tearOff::T>
+ return core::List::unmodifiable<self::_#MyList#unmodifiable#tearOff::T>(elements);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.weak.transformed.expect
new file mode 100644
index 0000000..9e2f5a1
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue47462.dart.weak.transformed.expect
@@ -0,0 +1,53 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#new#tearOff<T extends core::num>([core::int? length = #C7]) → core::List<self::_#MyList#new#tearOff::T>
+ return core::_List::•<self::_#MyList#new#tearOff::T>(length);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#filled#tearOff<T extends core::num>(core::int length, self::_#MyList#filled#tearOff::T fill, {core::bool growable = #C2}) → core::List<self::_#MyList#filled#tearOff::T>
+ return core::List::filled<self::_#MyList#filled#tearOff::T>(length, fill, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#empty#tearOff<T extends core::num>({core::bool growable = #C2}) → core::List<self::_#MyList#empty#tearOff::T>
+ return core::List::empty<self::_#MyList#empty#tearOff::T>(growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#from#tearOff<T extends core::num>(core::Iterable<dynamic> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#from#tearOff::T>
+ return core::List::from<self::_#MyList#from#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#of#tearOff<T extends core::num>(core::Iterable<self::_#MyList#of#tearOff::T> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#of#tearOff::T>
+ return core::List::of<self::_#MyList#of#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#generate#tearOff<T extends core::num>(core::int length, (core::int) → self::_#MyList#generate#tearOff::T generator, {core::bool growable = #C1}) → core::List<self::_#MyList#generate#tearOff::T>
+ return core::List::generate<self::_#MyList#generate#tearOff::T>(length, generator, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#unmodifiable#tearOff<T extends core::num>(core::Iterable<dynamic> elements) → core::List<self::_#MyList#unmodifiable#tearOff::T>
+ return core::List::unmodifiable<self::_#MyList#unmodifiable#tearOff::T>(elements);
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num*>
+ #C5 = static-tearoff self::_#MyList#filled#tearOff
+ #C6 = instantiation #C5 <core::num*>
+ #C7 = null
+}
+
+Extra constant evaluation status:
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:18:16 -> BoolConstant(true)
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:19:17 -> BoolConstant(false)
+Extra constant evaluation: evaluated: 52, effectively constant: 2
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect
index 1970258..309b5f6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.expect
@@ -47,7 +47,7 @@
typedef B<T extends core::num> = self::A<T>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -110,3 +110,7 @@
return self::A::fact<self::_#B#fact#tearOff::T>();
static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
+
+constants {
+ #C1 = constructor-tearoff self::A::redirect
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect
index 1970258..309b5f6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.strong.transformed.expect
@@ -47,7 +47,7 @@
typedef B<T extends core::num> = self::A<T>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -110,3 +110,7 @@
return self::A::fact<self::_#B#fact#tearOff::T>();
static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
+
+constants {
+ #C1 = constructor-tearoff self::A::redirect
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect
index 1970258..309b5f6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.expect
@@ -47,7 +47,7 @@
typedef B<T extends core::num> = self::A<T>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -110,3 +110,7 @@
return self::A::fact<self::_#B#fact#tearOff::T>();
static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
+
+constants {
+ #C1 = constructor-tearoff self::A::redirect
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect
index ae23513..cfe8fea 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.outline.expect
@@ -34,3 +34,8 @@
return self::A::fact<self::_#B#fact#tearOff::T>();
static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///misplaced_type_arguments.dart:5:7 -> ConstructorTearOffConstant(A.redirect)
+Extra constant evaluation: evaluated: 11, effectively constant: 1
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect
index 1970258..309b5f6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/misplaced_type_arguments.dart.weak.transformed.expect
@@ -47,7 +47,7 @@
typedef B<T extends core::num> = self::A<T>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::A<self::A::T%>
: super core::Object::•()
;
@@ -110,3 +110,7 @@
return self::A::fact<self::_#B#fact#tearOff::T>();
static method _#B#redirect#tearOff<T extends core::num>() → self::A<self::_#B#redirect#tearOff::T>
return self::A::_#redirect#tearOff<self::_#B#redirect#tearOff::T>();
+
+constants {
+ #C1 = constructor-tearoff self::A::redirect
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.strong.expect
index cd54bc8..f19d273 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.strong.expect
@@ -15,7 +15,7 @@
class Class extends core::Object {
static field () → self::Class field = () → self::Class => new self::Class::_();
- static final field dynamic _redirecting# = <dynamic>[self::Class::a, self::Class::b]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
constructor _() → self::Class
: super core::Object::•()
;
@@ -35,3 +35,8 @@
static method _#b#tearOff() → self::Class;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::Class::a
+ #C2 = constructor-tearoff self::Class::b
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.strong.transformed.expect
index cd54bc8..f19d273 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
class Class extends core::Object {
static field () → self::Class field = () → self::Class => new self::Class::_();
- static final field dynamic _redirecting# = <dynamic>[self::Class::a, self::Class::b]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
constructor _() → self::Class
: super core::Object::•()
;
@@ -35,3 +35,8 @@
static method _#b#tearOff() → self::Class;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::Class::a
+ #C2 = constructor-tearoff self::Class::b
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.expect
index cd54bc8..f19d273 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.expect
@@ -15,7 +15,7 @@
class Class extends core::Object {
static field () → self::Class field = () → self::Class => new self::Class::_();
- static final field dynamic _redirecting# = <dynamic>[self::Class::a, self::Class::b]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
constructor _() → self::Class
: super core::Object::•()
;
@@ -35,3 +35,8 @@
static method _#b#tearOff() → self::Class;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::Class::a
+ #C2 = constructor-tearoff self::Class::b
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.outline.expect
index 173ec34..bc12784 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.outline.expect
@@ -35,3 +35,9 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///missing_redirecting_target.dart:5:7 -> ConstructorTearOffConstant(Class.a)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///missing_redirecting_target.dart:5:7 -> ConstructorTearOffConstant(Class.b)
+Extra constant evaluation: evaluated: 4, effectively constant: 2
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.transformed.expect
index cd54bc8..f19d273 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/missing_redirecting_target.dart.weak.transformed.expect
@@ -15,7 +15,7 @@
class Class extends core::Object {
static field () → self::Class field = () → self::Class => new self::Class::_();
- static final field dynamic _redirecting# = <dynamic>[self::Class::a, self::Class::b]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
constructor _() → self::Class
: super core::Object::•()
;
@@ -35,3 +35,8 @@
static method _#b#tearOff() → self::Class;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::Class::a
+ #C2 = constructor-tearoff self::Class::b
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.expect
index 168005c..4acef90 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.expect
@@ -41,8 +41,8 @@
}
class Class<T extends core::Object? = dynamic> extends core::Object implements self::Interface {
field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirectingFactory]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::Class<self::Class::T%>
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
constructor named(core::int field) → self::Class<self::Class::T%>
@@ -51,7 +51,7 @@
constructor redirectingGenerative(core::int field) → self::Class<self::Class::T%>
: this self::Class::•(field)
;
- static method _#new#tearOff<T extends core::Object? = dynamic>([core::int field = #C1]) → self::Class<self::Class::_#new#tearOff::T%>
+ static method _#new#tearOff<T extends core::Object? = dynamic>([core::int field = #C2]) → self::Class<self::Class::_#new#tearOff::T%>
return new self::Class::•<self::Class::_#new#tearOff::T%>(field);
static method _#named#tearOff<T extends core::Object? = dynamic>(core::int field) → self::Class<self::Class::_#named#tearOff::T%>
return new self::Class::named<self::Class::_#named#tearOff::T%>(field);
@@ -63,13 +63,13 @@
return self::Class::fact<self::Class::_#fact#tearOff::T%>(field);
static factory redirectingFactory<T extends core::Object? = dynamic>(core::int field) → self::Class<self::Class::redirectingFactory::T%>
return new self::Class::•<self::Class::redirectingFactory::T%>(field);
- static method _#redirectingFactory#tearOff<T extends core::Object? = dynamic>(core::int field = #C1) → self::Class<self::Class::_#redirectingFactory#tearOff::T%>
+ static method _#redirectingFactory#tearOff<T extends core::Object? = dynamic>(core::int field = #C2) → self::Class<self::Class::_#redirectingFactory#tearOff::T%>
return new self::Class::•<self::Class::_#redirectingFactory#tearOff::T%>(field);
}
abstract class Mixin<S extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
}
class NamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> = self::Class<self::NamedMixinApplication::T%> with self::Mixin<self::NamedMixinApplication::S%> {
- synthetic constructor •([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
@@ -86,7 +86,7 @@
return new self::NamedMixinApplication::redirectingGenerative<self::NamedMixinApplication::_#redirectingGenerative#tearOff::T%, self::NamedMixinApplication::_#redirectingGenerative#tearOff::S%>(field);
}
abstract class AbstractNamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> = self::Class<self::AbstractNamedMixinApplication::T%> with self::Mixin<self::AbstractNamedMixinApplication::S%> {
- synthetic constructor •([core::int field = #C1]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
@@ -96,9 +96,9 @@
: super self::Class::redirectingGenerative(field)
;
}
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
static method test() → dynamic {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart:26:25: Error: Member not found: 'fact'.
NamedMixinApplication.fact;
@@ -123,23 +123,24 @@
^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
- #C5;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
#C6;
#C7;
+ #C8;
([core::int]) → self::NamedMixinApplication<core::int, core::String> n1 = f1<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n2 = f2<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n3 = f3<core::int, core::String>;
}
constants {
- #C1 = 0
- #C2 = static-tearoff self::NamedMixinApplication::_#new#tearOff
- #C3 = static-tearoff self::NamedMixinApplication::_#named#tearOff
- #C4 = static-tearoff self::NamedMixinApplication::_#redirectingGenerative#tearOff
- #C5 = instantiation self::NamedMixinApplication::_#new#tearOff <core::int, core::String>
- #C6 = instantiation self::NamedMixinApplication::_#named#tearOff <core::int, core::String>
- #C7 = instantiation self::NamedMixinApplication::_#redirectingGenerative#tearOff <core::int, core::String>
+ #C1 = constructor-tearoff self::Class::redirectingFactory
+ #C2 = 0
+ #C3 = static-tearoff self::NamedMixinApplication::_#new#tearOff
+ #C4 = static-tearoff self::NamedMixinApplication::_#named#tearOff
+ #C5 = static-tearoff self::NamedMixinApplication::_#redirectingGenerative#tearOff
+ #C6 = instantiation #C3 <core::int, core::String>
+ #C7 = instantiation #C4 <core::int, core::String>
+ #C8 = instantiation #C5 <core::int, core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.transformed.expect
index 3d96732..e793729 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.transformed.expect
@@ -41,8 +41,8 @@
}
class Class<T extends core::Object? = dynamic> extends core::Object implements self::Interface {
field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirectingFactory]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::Class<self::Class::T%>
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
constructor named(core::int field) → self::Class<self::Class::T%>
@@ -51,7 +51,7 @@
constructor redirectingGenerative(core::int field) → self::Class<self::Class::T%>
: this self::Class::•(field)
;
- static method _#new#tearOff<T extends core::Object? = dynamic>([core::int field = #C1]) → self::Class<self::Class::_#new#tearOff::T%>
+ static method _#new#tearOff<T extends core::Object? = dynamic>([core::int field = #C2]) → self::Class<self::Class::_#new#tearOff::T%>
return new self::Class::•<self::Class::_#new#tearOff::T%>(field);
static method _#named#tearOff<T extends core::Object? = dynamic>(core::int field) → self::Class<self::Class::_#named#tearOff::T%>
return new self::Class::named<self::Class::_#named#tearOff::T%>(field);
@@ -63,13 +63,13 @@
return self::Class::fact<self::Class::_#fact#tearOff::T%>(field);
static factory redirectingFactory<T extends core::Object? = dynamic>(core::int field) → self::Class<self::Class::redirectingFactory::T%>
return new self::Class::•<self::Class::redirectingFactory::T%>(field);
- static method _#redirectingFactory#tearOff<T extends core::Object? = dynamic>(core::int field = #C1) → self::Class<self::Class::_#redirectingFactory#tearOff::T%>
+ static method _#redirectingFactory#tearOff<T extends core::Object? = dynamic>(core::int field = #C2) → self::Class<self::Class::_#redirectingFactory#tearOff::T%>
return new self::Class::•<self::Class::_#redirectingFactory#tearOff::T%>(field);
}
abstract class Mixin<S extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
}
class NamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends self::Class<self::NamedMixinApplication::T%> implements self::Mixin<self::NamedMixinApplication::S%> /*isEliminatedMixin*/ {
- synthetic constructor •([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
@@ -86,7 +86,7 @@
return new self::NamedMixinApplication::redirectingGenerative<self::NamedMixinApplication::_#redirectingGenerative#tearOff::T%, self::NamedMixinApplication::_#redirectingGenerative#tearOff::S%>(field);
}
abstract class AbstractNamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends self::Class<self::AbstractNamedMixinApplication::T%> implements self::Mixin<self::AbstractNamedMixinApplication::S%> /*isEliminatedMixin*/ {
- synthetic constructor •([core::int field = #C1]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
@@ -96,9 +96,9 @@
: super self::Class::redirectingGenerative(field)
;
}
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
static method test() → dynamic {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart:26:25: Error: Member not found: 'fact'.
NamedMixinApplication.fact;
@@ -123,23 +123,24 @@
^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
- #C5;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
#C6;
#C7;
+ #C8;
([core::int]) → self::NamedMixinApplication<core::int, core::String> n1 = f1<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n2 = f2<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n3 = f3<core::int, core::String>;
}
constants {
- #C1 = 0
- #C2 = static-tearoff self::NamedMixinApplication::_#new#tearOff
- #C3 = static-tearoff self::NamedMixinApplication::_#named#tearOff
- #C4 = static-tearoff self::NamedMixinApplication::_#redirectingGenerative#tearOff
- #C5 = instantiation self::NamedMixinApplication::_#new#tearOff <core::int, core::String>
- #C6 = instantiation self::NamedMixinApplication::_#named#tearOff <core::int, core::String>
- #C7 = instantiation self::NamedMixinApplication::_#redirectingGenerative#tearOff <core::int, core::String>
+ #C1 = constructor-tearoff self::Class::redirectingFactory
+ #C2 = 0
+ #C3 = static-tearoff self::NamedMixinApplication::_#new#tearOff
+ #C4 = static-tearoff self::NamedMixinApplication::_#named#tearOff
+ #C5 = static-tearoff self::NamedMixinApplication::_#redirectingGenerative#tearOff
+ #C6 = instantiation #C3 <core::int, core::String>
+ #C7 = instantiation #C4 <core::int, core::String>
+ #C8 = instantiation #C5 <core::int, core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.expect
index 54437d8..841838c 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.expect
@@ -41,8 +41,8 @@
}
class Class<T extends core::Object? = dynamic> extends core::Object implements self::Interface {
field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirectingFactory]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::Class<self::Class::T%>
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
constructor named(core::int field) → self::Class<self::Class::T%>
@@ -51,7 +51,7 @@
constructor redirectingGenerative(core::int field) → self::Class<self::Class::T%>
: this self::Class::•(field)
;
- static method _#new#tearOff<T extends core::Object? = dynamic>([core::int field = #C1]) → self::Class<self::Class::_#new#tearOff::T%>
+ static method _#new#tearOff<T extends core::Object? = dynamic>([core::int field = #C2]) → self::Class<self::Class::_#new#tearOff::T%>
return new self::Class::•<self::Class::_#new#tearOff::T%>(field);
static method _#named#tearOff<T extends core::Object? = dynamic>(core::int field) → self::Class<self::Class::_#named#tearOff::T%>
return new self::Class::named<self::Class::_#named#tearOff::T%>(field);
@@ -63,13 +63,13 @@
return self::Class::fact<self::Class::_#fact#tearOff::T%>(field);
static factory redirectingFactory<T extends core::Object? = dynamic>(core::int field) → self::Class<self::Class::redirectingFactory::T%>
return new self::Class::•<self::Class::redirectingFactory::T%>(field);
- static method _#redirectingFactory#tearOff<T extends core::Object? = dynamic>(core::int field = #C1) → self::Class<self::Class::_#redirectingFactory#tearOff::T%>
+ static method _#redirectingFactory#tearOff<T extends core::Object? = dynamic>(core::int field = #C2) → self::Class<self::Class::_#redirectingFactory#tearOff::T%>
return new self::Class::•<self::Class::_#redirectingFactory#tearOff::T%>(field);
}
abstract class Mixin<S extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
}
class NamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> = self::Class<self::NamedMixinApplication::T%> with self::Mixin<self::NamedMixinApplication::S%> {
- synthetic constructor •([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
@@ -86,7 +86,7 @@
return new self::NamedMixinApplication::redirectingGenerative<self::NamedMixinApplication::_#redirectingGenerative#tearOff::T%, self::NamedMixinApplication::_#redirectingGenerative#tearOff::S%>(field);
}
abstract class AbstractNamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> = self::Class<self::AbstractNamedMixinApplication::T%> with self::Mixin<self::AbstractNamedMixinApplication::S%> {
- synthetic constructor •([core::int field = #C1]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
@@ -96,9 +96,9 @@
: super self::Class::redirectingGenerative(field)
;
}
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
static method test() → dynamic {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart:26:25: Error: Member not found: 'fact'.
NamedMixinApplication.fact;
@@ -123,23 +123,24 @@
^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
- #C5;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
#C6;
#C7;
+ #C8;
([core::int]) → self::NamedMixinApplication<core::int, core::String> n1 = f1<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n2 = f2<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n3 = f3<core::int, core::String>;
}
constants {
- #C1 = 0
- #C2 = static-tearoff self::NamedMixinApplication::_#new#tearOff
- #C3 = static-tearoff self::NamedMixinApplication::_#named#tearOff
- #C4 = static-tearoff self::NamedMixinApplication::_#redirectingGenerative#tearOff
- #C5 = instantiation self::NamedMixinApplication::_#new#tearOff <core::int*, core::String*>
- #C6 = instantiation self::NamedMixinApplication::_#named#tearOff <core::int*, core::String*>
- #C7 = instantiation self::NamedMixinApplication::_#redirectingGenerative#tearOff <core::int*, core::String*>
+ #C1 = constructor-tearoff self::Class::redirectingFactory
+ #C2 = 0
+ #C3 = static-tearoff self::NamedMixinApplication::_#new#tearOff
+ #C4 = static-tearoff self::NamedMixinApplication::_#named#tearOff
+ #C5 = static-tearoff self::NamedMixinApplication::_#redirectingGenerative#tearOff
+ #C6 = instantiation #C3 <core::int*, core::String*>
+ #C7 = instantiation #C4 <core::int*, core::String*>
+ #C8 = instantiation #C5 <core::int*, core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.outline.expect
index fbdc213..6aab2c5 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.outline.expect
@@ -68,3 +68,8 @@
;
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///named_mixin_application.dart:9:7 -> ConstructorTearOffConstant(Class.redirectingFactory)
+Extra constant evaluation: evaluated: 26, effectively constant: 1
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.transformed.expect
index 9786626..742d873 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.transformed.expect
@@ -41,8 +41,8 @@
}
class Class<T extends core::Object? = dynamic> extends core::Object implements self::Interface {
field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirectingFactory]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::Class<self::Class::T%>
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
constructor named(core::int field) → self::Class<self::Class::T%>
@@ -51,7 +51,7 @@
constructor redirectingGenerative(core::int field) → self::Class<self::Class::T%>
: this self::Class::•(field)
;
- static method _#new#tearOff<T extends core::Object? = dynamic>([core::int field = #C1]) → self::Class<self::Class::_#new#tearOff::T%>
+ static method _#new#tearOff<T extends core::Object? = dynamic>([core::int field = #C2]) → self::Class<self::Class::_#new#tearOff::T%>
return new self::Class::•<self::Class::_#new#tearOff::T%>(field);
static method _#named#tearOff<T extends core::Object? = dynamic>(core::int field) → self::Class<self::Class::_#named#tearOff::T%>
return new self::Class::named<self::Class::_#named#tearOff::T%>(field);
@@ -63,13 +63,13 @@
return self::Class::fact<self::Class::_#fact#tearOff::T%>(field);
static factory redirectingFactory<T extends core::Object? = dynamic>(core::int field) → self::Class<self::Class::redirectingFactory::T%>
return new self::Class::•<self::Class::redirectingFactory::T%>(field);
- static method _#redirectingFactory#tearOff<T extends core::Object? = dynamic>(core::int field = #C1) → self::Class<self::Class::_#redirectingFactory#tearOff::T%>
+ static method _#redirectingFactory#tearOff<T extends core::Object? = dynamic>(core::int field = #C2) → self::Class<self::Class::_#redirectingFactory#tearOff::T%>
return new self::Class::•<self::Class::_#redirectingFactory#tearOff::T%>(field);
}
abstract class Mixin<S extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
}
class NamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends self::Class<self::NamedMixinApplication::T%> implements self::Mixin<self::NamedMixinApplication::S%> /*isEliminatedMixin*/ {
- synthetic constructor •([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
@@ -86,7 +86,7 @@
return new self::NamedMixinApplication::redirectingGenerative<self::NamedMixinApplication::_#redirectingGenerative#tearOff::T%, self::NamedMixinApplication::_#redirectingGenerative#tearOff::S%>(field);
}
abstract class AbstractNamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends self::Class<self::AbstractNamedMixinApplication::T%> implements self::Mixin<self::AbstractNamedMixinApplication::S%> /*isEliminatedMixin*/ {
- synthetic constructor •([core::int field = #C1]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
@@ -96,9 +96,9 @@
: super self::Class::redirectingGenerative(field)
;
}
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
static method test() → dynamic {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart:26:25: Error: Member not found: 'fact'.
NamedMixinApplication.fact;
@@ -123,23 +123,24 @@
^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
- #C5;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
#C6;
#C7;
+ #C8;
([core::int]) → self::NamedMixinApplication<core::int, core::String> n1 = f1<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n2 = f2<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n3 = f3<core::int, core::String>;
}
constants {
- #C1 = 0
- #C2 = static-tearoff self::NamedMixinApplication::_#new#tearOff
- #C3 = static-tearoff self::NamedMixinApplication::_#named#tearOff
- #C4 = static-tearoff self::NamedMixinApplication::_#redirectingGenerative#tearOff
- #C5 = instantiation self::NamedMixinApplication::_#new#tearOff <core::int*, core::String*>
- #C6 = instantiation self::NamedMixinApplication::_#named#tearOff <core::int*, core::String*>
- #C7 = instantiation self::NamedMixinApplication::_#redirectingGenerative#tearOff <core::int*, core::String*>
+ #C1 = constructor-tearoff self::Class::redirectingFactory
+ #C2 = 0
+ #C3 = static-tearoff self::NamedMixinApplication::_#new#tearOff
+ #C4 = static-tearoff self::NamedMixinApplication::_#named#tearOff
+ #C5 = static-tearoff self::NamedMixinApplication::_#redirectingGenerative#tearOff
+ #C6 = instantiation #C3 <core::int*, core::String*>
+ #C7 = instantiation #C4 <core::int*, core::String*>
+ #C8 = instantiation #C5 <core::int*, core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.strong.expect
index b6e38f4..9d31f32 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.strong.expect
@@ -89,20 +89,20 @@
constants {
#C1 = static-tearoff self::A::_#new#tearOff
#C2 = static-tearoff self::B::_#new#tearOff
- #C3 = instantiation self::B::_#new#tearOff <dynamic>
- #C4 = instantiation self::B::_#new#tearOff <core::int>
+ #C3 = instantiation #C2 <dynamic>
+ #C4 = instantiation #C2 <core::int>
#C5 = static-tearoff self::_#G3#new#tearOff
#C6 = static-tearoff self::C::_#new#tearOff
- #C7 = instantiation self::C::_#new#tearOff <dynamic, dynamic>
- #C8 = instantiation self::C::_#new#tearOff <core::int, core::String>
+ #C7 = instantiation #C6 <dynamic, dynamic>
+ #C8 = instantiation #C6 <core::int, core::String>
#C9 = static-tearoff self::_#H2#new#tearOff
- #C10 = instantiation self::C::_#new#tearOff <core::int, core::int>
+ #C10 = instantiation #C6 <core::int, core::int>
#C11 = static-tearoff self::_#H4#new#tearOff
- #C12 = instantiation self::C::_#new#tearOff <core::String, core::int>
+ #C12 = instantiation #C6 <core::String, core::int>
#C13 = static-tearoff self::_#H5#new#tearOff
#C14 = static-tearoff self::_#H6#new#tearOff
#C15 = static-tearoff self::D::_#new#tearOff
- #C16 = instantiation self::D::_#new#tearOff <core::num>
- #C17 = instantiation self::D::_#new#tearOff <core::int>
+ #C16 = instantiation #C15 <core::num>
+ #C17 = instantiation #C15 <core::int>
#C18 = static-tearoff self::_#I3#new#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.strong.transformed.expect
index b6e38f4..9d31f32 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.strong.transformed.expect
@@ -89,20 +89,20 @@
constants {
#C1 = static-tearoff self::A::_#new#tearOff
#C2 = static-tearoff self::B::_#new#tearOff
- #C3 = instantiation self::B::_#new#tearOff <dynamic>
- #C4 = instantiation self::B::_#new#tearOff <core::int>
+ #C3 = instantiation #C2 <dynamic>
+ #C4 = instantiation #C2 <core::int>
#C5 = static-tearoff self::_#G3#new#tearOff
#C6 = static-tearoff self::C::_#new#tearOff
- #C7 = instantiation self::C::_#new#tearOff <dynamic, dynamic>
- #C8 = instantiation self::C::_#new#tearOff <core::int, core::String>
+ #C7 = instantiation #C6 <dynamic, dynamic>
+ #C8 = instantiation #C6 <core::int, core::String>
#C9 = static-tearoff self::_#H2#new#tearOff
- #C10 = instantiation self::C::_#new#tearOff <core::int, core::int>
+ #C10 = instantiation #C6 <core::int, core::int>
#C11 = static-tearoff self::_#H4#new#tearOff
- #C12 = instantiation self::C::_#new#tearOff <core::String, core::int>
+ #C12 = instantiation #C6 <core::String, core::int>
#C13 = static-tearoff self::_#H5#new#tearOff
#C14 = static-tearoff self::_#H6#new#tearOff
#C15 = static-tearoff self::D::_#new#tearOff
- #C16 = instantiation self::D::_#new#tearOff <core::num>
- #C17 = instantiation self::D::_#new#tearOff <core::int>
+ #C16 = instantiation #C15 <core::num>
+ #C17 = instantiation #C15 <core::int>
#C18 = static-tearoff self::_#I3#new#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.weak.expect
index 2d72357..b2e567f 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.weak.expect
@@ -89,20 +89,20 @@
constants {
#C1 = static-tearoff self::A::_#new#tearOff
#C2 = static-tearoff self::B::_#new#tearOff
- #C3 = instantiation self::B::_#new#tearOff <dynamic>
- #C4 = instantiation self::B::_#new#tearOff <core::int*>
+ #C3 = instantiation #C2 <dynamic>
+ #C4 = instantiation #C2 <core::int*>
#C5 = static-tearoff self::_#G3#new#tearOff
#C6 = static-tearoff self::C::_#new#tearOff
- #C7 = instantiation self::C::_#new#tearOff <dynamic, dynamic>
- #C8 = instantiation self::C::_#new#tearOff <core::int*, core::String*>
+ #C7 = instantiation #C6 <dynamic, dynamic>
+ #C8 = instantiation #C6 <core::int*, core::String*>
#C9 = static-tearoff self::_#H2#new#tearOff
- #C10 = instantiation self::C::_#new#tearOff <core::int*, core::int*>
+ #C10 = instantiation #C6 <core::int*, core::int*>
#C11 = static-tearoff self::_#H4#new#tearOff
- #C12 = instantiation self::C::_#new#tearOff <core::String*, core::int*>
+ #C12 = instantiation #C6 <core::String*, core::int*>
#C13 = static-tearoff self::_#H5#new#tearOff
#C14 = static-tearoff self::_#H6#new#tearOff
#C15 = static-tearoff self::D::_#new#tearOff
- #C16 = instantiation self::D::_#new#tearOff <core::num*>
- #C17 = instantiation self::D::_#new#tearOff <core::int*>
+ #C16 = instantiation #C15 <core::num*>
+ #C17 = instantiation #C15 <core::int*>
#C18 = static-tearoff self::_#I3#new#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.weak.transformed.expect
index 2d72357..b2e567f 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/proper_rename.dart.weak.transformed.expect
@@ -89,20 +89,20 @@
constants {
#C1 = static-tearoff self::A::_#new#tearOff
#C2 = static-tearoff self::B::_#new#tearOff
- #C3 = instantiation self::B::_#new#tearOff <dynamic>
- #C4 = instantiation self::B::_#new#tearOff <core::int*>
+ #C3 = instantiation #C2 <dynamic>
+ #C4 = instantiation #C2 <core::int*>
#C5 = static-tearoff self::_#G3#new#tearOff
#C6 = static-tearoff self::C::_#new#tearOff
- #C7 = instantiation self::C::_#new#tearOff <dynamic, dynamic>
- #C8 = instantiation self::C::_#new#tearOff <core::int*, core::String*>
+ #C7 = instantiation #C6 <dynamic, dynamic>
+ #C8 = instantiation #C6 <core::int*, core::String*>
#C9 = static-tearoff self::_#H2#new#tearOff
- #C10 = instantiation self::C::_#new#tearOff <core::int*, core::int*>
+ #C10 = instantiation #C6 <core::int*, core::int*>
#C11 = static-tearoff self::_#H4#new#tearOff
- #C12 = instantiation self::C::_#new#tearOff <core::String*, core::int*>
+ #C12 = instantiation #C6 <core::String*, core::int*>
#C13 = static-tearoff self::_#H5#new#tearOff
#C14 = static-tearoff self::_#H6#new#tearOff
#C15 = static-tearoff self::D::_#new#tearOff
- #C16 = instantiation self::D::_#new#tearOff <core::num*>
- #C17 = instantiation self::D::_#new#tearOff <core::int*>
+ #C16 = instantiation #C15 <core::num*>
+ #C17 = instantiation #C15 <core::int*>
#C18 = static-tearoff self::_#I3#new#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.strong.expect
index c74b167..214d583 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.strong.expect
@@ -46,7 +46,7 @@
import "dart:core" as core;
class Class1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1
: super core::Object::•()
;
@@ -58,7 +58,7 @@
return new self::Class1::_();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor __() → self::Class2
: super core::Object::•()
;
@@ -75,7 +75,7 @@
}
class Class3 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _(core::int field) → self::Class3
: self::Class3::field = field, super core::Object::•()
;
@@ -88,44 +88,44 @@
}
class Class4 extends core::Object {
final field core::int? field;
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
- constructor _([core::int? field = #C1]) → self::Class4
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _([core::int? field = #C5]) → self::Class4
: self::Class4::field = field, super core::Object::•()
;
- static method _#_#tearOff([core::int? field = #C1]) → self::Class4
+ static method _#_#tearOff([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
- static factory •([core::int? field = #C1]) → self::Class4
+ static factory •([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
- static method _#new#tearOff([core::int? field = #C1]) → self::Class4
+ static method _#new#tearOff([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
}
class Class5 extends core::Object {
final field core::int field1;
final field core::int? field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
- constructor _(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ constructor _(core::int field1, [core::int? field2 = #C5]) → self::Class5
: self::Class5::field1 = field1, self::Class5::field2 = field2, super core::Object::•()
;
- static method _#_#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static method _#_#tearOff(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
- static factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static factory •(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
- static method _#new#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static method _#new#tearOff(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
}
class Class6 extends core::Object {
final field core::int field1;
final field core::int? field2;
final field core::int field3;
- static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
- constructor _(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
+ constructor _(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
: self::Class6::field1 = field1, self::Class6::field2 = field2, self::Class6::field3 = field3, super core::Object::•()
;
- static method _#_#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static method _#_#tearOff(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
- static factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static factory •(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
- static method _#new#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static method _#new#tearOff(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
}
class Class7a extends core::Object implements self::Class7b {
@@ -136,7 +136,7 @@
return new self::Class7a::•();
}
class Class7b extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
static factory •() → self::Class7b
return new self::Class7a::•();
static method _#new#tearOff() → self::Class7b
@@ -154,7 +154,7 @@
return self::Class8a::fact<self::Class8a::_#fact#tearOff::T%>();
}
class Class8b<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class8b::•, self::Class8b::fact]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9, #C10]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::•::T%>
return new self::Class8a::•<self::Class8b::•::T%>();
static method _#new#tearOff<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::_#new#tearOff::T%>
@@ -171,23 +171,23 @@
self::testArgs();
}
static method testNoArgs() → dynamic {
- () → self::Class1 f1a = #C2;
+ () → self::Class1 f1a = #C11;
self::Class1 c1a = f1a(){() → self::Class1};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1);
- dynamic f1b = #C2;
+ dynamic f1b = #C11;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} self::Class1);
self::expect(true, core::identical(f1a, f1b));
- () → self::Class2 f2a = #C3;
+ () → self::Class2 f2a = #C12;
self::Class2 c2a = f2a(){() → self::Class2};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2);
- dynamic f2b = #C3;
+ dynamic f2b = #C12;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} self::Class2);
self::expect(true, core::identical(f2a, f2b));
}
static method testArgs() → dynamic {
- (core::int) → self::Class3 f3a = #C4;
+ (core::int) → self::Class3 f3a = #C13;
self::Class3 c3a = f3a(42){(core::int) → self::Class3};
self::expect(42, c3a.{self::Class3::field}{core::int});
() → Null {
@@ -199,12 +199,12 @@
f3a(42, 87); // error
^" in f3a{<inapplicable>}.(42, 87);
};
- dynamic f3b = #C4;
+ dynamic f3b = #C13;
dynamic c3b = f3b{dynamic}.call(87);
self::expect(87, c3b{dynamic}.field);
self::throws(() → dynamic => f3b{dynamic}.call());
self::throws(() → dynamic => f3b{dynamic}.call(42, 87));
- ([core::int?]) → self::Class4 f4a = #C5;
+ ([core::int?]) → self::Class4 f4a = #C14;
self::Class4 c4a = f4a(){([core::int?]) → self::Class4};
self::expect(null, c4a.{self::Class4::field}{core::int?});
self::Class4 c4b = f4a(42){([core::int?]) → self::Class4};
@@ -215,9 +215,9 @@
f4a(42, 87); // error
^" in f4a{<inapplicable>}.(42, 87);
};
- dynamic f4b = #C5;
+ dynamic f4b = #C14;
self::throws(() → dynamic => f4b{dynamic}.call(42, 87));
- (core::int, [core::int?]) → self::Class5 f5a = #C6;
+ (core::int, [core::int?]) → self::Class5 f5a = #C15;
self::Class5 c5a = f5a(42){(core::int, [core::int?]) → self::Class5};
self::expect(42, c5a.{self::Class5::field1}{core::int});
self::expect(null, c5a.{self::Class5::field2}{core::int?});
@@ -233,10 +233,10 @@
f5a(42, 87, 123); // error
^" in f5a{<inapplicable>}.(42, 87, 123);
};
- dynamic f5b = #C6;
+ dynamic f5b = #C15;
self::throws(() → dynamic => f5b{dynamic}.call());
self::throws(() → dynamic => f5b{dynamic}.call(42, 87, 123));
- (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C7;
+ (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C16;
self::Class6 c6a = f6a(42, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
self::expect(42, c6a.{self::Class6::field1}{core::int});
self::expect(null, c6a.{self::Class6::field2}{core::int?});
@@ -264,16 +264,16 @@
self::expect(87, c6c.{self::Class6::field1}{core::int});
self::expect(123, c6c.{self::Class6::field2}{core::int?});
self::expect(42, c6c.{self::Class6::field3}{core::int});
- dynamic f6b = #C7;
+ dynamic f6b = #C16;
self::throws(() → dynamic => f6b{dynamic}.call());
self::throws(() → dynamic => f6b{dynamic}.call(42), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(42, 87), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(field1: 87, field2: 87));
- () → self::Class7b f7a = #C8;
+ () → self::Class7b f7a = #C17;
self::Class7b c7a = f7a(){() → self::Class7b};
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7a);
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7b);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C9;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C18;
self::Class8b<dynamic> c8a = f8a<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -281,7 +281,7 @@
self::expect(true, c8b is{ForNonNullableByDefault} self::Class8a<core::int>);
self::expect(true, c8b is{ForNonNullableByDefault} self::Class8b<core::int>);
self::expect(false, c8b is{ForNonNullableByDefault} self::Class8b<core::String>);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8b = #C10;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8b = #C19;
self::Class8b<dynamic> c8c = f8b<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8c is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8c is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -294,7 +294,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C11}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C20}) → dynamic {
try {
f(){() → dynamic};
}
@@ -309,15 +309,24 @@
}
constants {
- #C1 = null
- #C2 = static-tearoff self::Class1::_#new#tearOff
- #C3 = static-tearoff self::Class2::_#named#tearOff
- #C4 = static-tearoff self::Class3::_#new#tearOff
- #C5 = static-tearoff self::Class4::_#new#tearOff
- #C6 = static-tearoff self::Class5::_#new#tearOff
- #C7 = static-tearoff self::Class6::_#new#tearOff
- #C8 = static-tearoff self::Class7b::_#new#tearOff
- #C9 = static-tearoff self::Class8b::_#new#tearOff
- #C10 = static-tearoff self::Class8b::_#fact#tearOff
- #C11 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::named
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = null
+ #C6 = constructor-tearoff self::Class5::•
+ #C7 = constructor-tearoff self::Class6::•
+ #C8 = constructor-tearoff self::Class7b::•
+ #C9 = constructor-tearoff self::Class8b::•
+ #C10 = constructor-tearoff self::Class8b::fact
+ #C11 = static-tearoff self::Class1::_#new#tearOff
+ #C12 = static-tearoff self::Class2::_#named#tearOff
+ #C13 = static-tearoff self::Class3::_#new#tearOff
+ #C14 = static-tearoff self::Class4::_#new#tearOff
+ #C15 = static-tearoff self::Class5::_#new#tearOff
+ #C16 = static-tearoff self::Class6::_#new#tearOff
+ #C17 = static-tearoff self::Class7b::_#new#tearOff
+ #C18 = static-tearoff self::Class8b::_#new#tearOff
+ #C19 = static-tearoff self::Class8b::_#fact#tearOff
+ #C20 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.strong.transformed.expect
index 46d6ccc..dcb045d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.strong.transformed.expect
@@ -46,7 +46,7 @@
import "dart:core" as core;
class Class1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1
: super core::Object::•()
;
@@ -58,7 +58,7 @@
return new self::Class1::_();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor __() → self::Class2
: super core::Object::•()
;
@@ -75,7 +75,7 @@
}
class Class3 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _(core::int field) → self::Class3
: self::Class3::field = field, super core::Object::•()
;
@@ -88,44 +88,44 @@
}
class Class4 extends core::Object {
final field core::int? field;
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
- constructor _([core::int? field = #C1]) → self::Class4
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _([core::int? field = #C5]) → self::Class4
: self::Class4::field = field, super core::Object::•()
;
- static method _#_#tearOff([core::int? field = #C1]) → self::Class4
+ static method _#_#tearOff([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
- static factory •([core::int? field = #C1]) → self::Class4
+ static factory •([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
- static method _#new#tearOff([core::int? field = #C1]) → self::Class4
+ static method _#new#tearOff([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
}
class Class5 extends core::Object {
final field core::int field1;
final field core::int? field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
- constructor _(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ constructor _(core::int field1, [core::int? field2 = #C5]) → self::Class5
: self::Class5::field1 = field1, self::Class5::field2 = field2, super core::Object::•()
;
- static method _#_#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static method _#_#tearOff(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
- static factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static factory •(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
- static method _#new#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static method _#new#tearOff(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
}
class Class6 extends core::Object {
final field core::int field1;
final field core::int? field2;
final field core::int field3;
- static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
- constructor _(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
+ constructor _(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
: self::Class6::field1 = field1, self::Class6::field2 = field2, self::Class6::field3 = field3, super core::Object::•()
;
- static method _#_#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static method _#_#tearOff(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
- static factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static factory •(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
- static method _#new#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static method _#new#tearOff(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
}
class Class7a extends core::Object implements self::Class7b {
@@ -136,7 +136,7 @@
return new self::Class7a::•();
}
class Class7b extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
static factory •() → self::Class7b
return new self::Class7a::•();
static method _#new#tearOff() → self::Class7b
@@ -154,7 +154,7 @@
return self::Class8a::fact<self::Class8a::_#fact#tearOff::T%>();
}
class Class8b<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class8b::•, self::Class8b::fact]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9, #C10]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::•::T%>
return new self::Class8a::•<self::Class8b::•::T%>();
static method _#new#tearOff<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::_#new#tearOff::T%>
@@ -171,23 +171,23 @@
self::testArgs();
}
static method testNoArgs() → dynamic {
- () → self::Class1 f1a = #C2;
+ () → self::Class1 f1a = #C11;
self::Class1 c1a = f1a(){() → self::Class1};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1);
- dynamic f1b = #C2;
+ dynamic f1b = #C11;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} self::Class1);
self::expect(true, core::identical(f1a, f1b));
- () → self::Class2 f2a = #C3;
+ () → self::Class2 f2a = #C12;
self::Class2 c2a = f2a(){() → self::Class2};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2);
- dynamic f2b = #C3;
+ dynamic f2b = #C12;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} self::Class2);
self::expect(true, core::identical(f2a, f2b));
}
static method testArgs() → dynamic {
- (core::int) → self::Class3 f3a = #C4;
+ (core::int) → self::Class3 f3a = #C13;
self::Class3 c3a = f3a(42){(core::int) → self::Class3};
self::expect(42, c3a.{self::Class3::field}{core::int});
() → Null {
@@ -199,12 +199,12 @@
f3a(42, 87); // error
^" in f3a{<inapplicable>}.(42, 87);
};
- dynamic f3b = #C4;
+ dynamic f3b = #C13;
dynamic c3b = f3b{dynamic}.call(87);
self::expect(87, c3b{dynamic}.field);
self::throws(() → dynamic => f3b{dynamic}.call());
self::throws(() → dynamic => f3b{dynamic}.call(42, 87));
- ([core::int?]) → self::Class4 f4a = #C5;
+ ([core::int?]) → self::Class4 f4a = #C14;
self::Class4 c4a = f4a(){([core::int?]) → self::Class4};
self::expect(null, c4a.{self::Class4::field}{core::int?});
self::Class4 c4b = f4a(42){([core::int?]) → self::Class4};
@@ -215,9 +215,9 @@
f4a(42, 87); // error
^" in f4a{<inapplicable>}.(42, 87);
};
- dynamic f4b = #C5;
+ dynamic f4b = #C14;
self::throws(() → dynamic => f4b{dynamic}.call(42, 87));
- (core::int, [core::int?]) → self::Class5 f5a = #C6;
+ (core::int, [core::int?]) → self::Class5 f5a = #C15;
self::Class5 c5a = f5a(42){(core::int, [core::int?]) → self::Class5};
self::expect(42, c5a.{self::Class5::field1}{core::int});
self::expect(null, c5a.{self::Class5::field2}{core::int?});
@@ -233,10 +233,10 @@
f5a(42, 87, 123); // error
^" in f5a{<inapplicable>}.(42, 87, 123);
};
- dynamic f5b = #C6;
+ dynamic f5b = #C15;
self::throws(() → dynamic => f5b{dynamic}.call());
self::throws(() → dynamic => f5b{dynamic}.call(42, 87, 123));
- (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C7;
+ (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C16;
self::Class6 c6a = f6a(42, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
self::expect(42, c6a.{self::Class6::field1}{core::int});
self::expect(null, c6a.{self::Class6::field2}{core::int?});
@@ -264,16 +264,16 @@
self::expect(87, c6c.{self::Class6::field1}{core::int});
self::expect(123, c6c.{self::Class6::field2}{core::int?});
self::expect(42, c6c.{self::Class6::field3}{core::int});
- dynamic f6b = #C7;
+ dynamic f6b = #C16;
self::throws(() → dynamic => f6b{dynamic}.call());
self::throws(() → dynamic => f6b{dynamic}.call(42), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(42, 87), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(field1: 87, field2: 87));
- () → self::Class7b f7a = #C8;
+ () → self::Class7b f7a = #C17;
self::Class7b c7a = f7a(){() → self::Class7b};
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7a);
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7b);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C9;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C18;
self::Class8b<dynamic> c8a = f8a<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -281,7 +281,7 @@
self::expect(true, c8b is{ForNonNullableByDefault} self::Class8a<core::int>);
self::expect(true, c8b is{ForNonNullableByDefault} self::Class8b<core::int>);
self::expect(false, c8b is{ForNonNullableByDefault} self::Class8b<core::String>);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8b = #C10;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8b = #C19;
self::Class8b<dynamic> c8c = f8b<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8c is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8c is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -294,7 +294,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C11}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C20}) → dynamic {
try {
f(){() → dynamic};
}
@@ -309,15 +309,24 @@
}
constants {
- #C1 = null
- #C2 = static-tearoff self::Class1::_#new#tearOff
- #C3 = static-tearoff self::Class2::_#named#tearOff
- #C4 = static-tearoff self::Class3::_#new#tearOff
- #C5 = static-tearoff self::Class4::_#new#tearOff
- #C6 = static-tearoff self::Class5::_#new#tearOff
- #C7 = static-tearoff self::Class6::_#new#tearOff
- #C8 = static-tearoff self::Class7b::_#new#tearOff
- #C9 = static-tearoff self::Class8b::_#new#tearOff
- #C10 = static-tearoff self::Class8b::_#fact#tearOff
- #C11 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::named
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = null
+ #C6 = constructor-tearoff self::Class5::•
+ #C7 = constructor-tearoff self::Class6::•
+ #C8 = constructor-tearoff self::Class7b::•
+ #C9 = constructor-tearoff self::Class8b::•
+ #C10 = constructor-tearoff self::Class8b::fact
+ #C11 = static-tearoff self::Class1::_#new#tearOff
+ #C12 = static-tearoff self::Class2::_#named#tearOff
+ #C13 = static-tearoff self::Class3::_#new#tearOff
+ #C14 = static-tearoff self::Class4::_#new#tearOff
+ #C15 = static-tearoff self::Class5::_#new#tearOff
+ #C16 = static-tearoff self::Class6::_#new#tearOff
+ #C17 = static-tearoff self::Class7b::_#new#tearOff
+ #C18 = static-tearoff self::Class8b::_#new#tearOff
+ #C19 = static-tearoff self::Class8b::_#fact#tearOff
+ #C20 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.expect
index c74b167..214d583 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.expect
@@ -46,7 +46,7 @@
import "dart:core" as core;
class Class1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1
: super core::Object::•()
;
@@ -58,7 +58,7 @@
return new self::Class1::_();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor __() → self::Class2
: super core::Object::•()
;
@@ -75,7 +75,7 @@
}
class Class3 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _(core::int field) → self::Class3
: self::Class3::field = field, super core::Object::•()
;
@@ -88,44 +88,44 @@
}
class Class4 extends core::Object {
final field core::int? field;
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
- constructor _([core::int? field = #C1]) → self::Class4
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _([core::int? field = #C5]) → self::Class4
: self::Class4::field = field, super core::Object::•()
;
- static method _#_#tearOff([core::int? field = #C1]) → self::Class4
+ static method _#_#tearOff([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
- static factory •([core::int? field = #C1]) → self::Class4
+ static factory •([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
- static method _#new#tearOff([core::int? field = #C1]) → self::Class4
+ static method _#new#tearOff([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
}
class Class5 extends core::Object {
final field core::int field1;
final field core::int? field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
- constructor _(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ constructor _(core::int field1, [core::int? field2 = #C5]) → self::Class5
: self::Class5::field1 = field1, self::Class5::field2 = field2, super core::Object::•()
;
- static method _#_#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static method _#_#tearOff(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
- static factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static factory •(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
- static method _#new#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static method _#new#tearOff(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
}
class Class6 extends core::Object {
final field core::int field1;
final field core::int? field2;
final field core::int field3;
- static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
- constructor _(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
+ constructor _(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
: self::Class6::field1 = field1, self::Class6::field2 = field2, self::Class6::field3 = field3, super core::Object::•()
;
- static method _#_#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static method _#_#tearOff(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
- static factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static factory •(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
- static method _#new#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static method _#new#tearOff(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
}
class Class7a extends core::Object implements self::Class7b {
@@ -136,7 +136,7 @@
return new self::Class7a::•();
}
class Class7b extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
static factory •() → self::Class7b
return new self::Class7a::•();
static method _#new#tearOff() → self::Class7b
@@ -154,7 +154,7 @@
return self::Class8a::fact<self::Class8a::_#fact#tearOff::T%>();
}
class Class8b<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class8b::•, self::Class8b::fact]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9, #C10]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::•::T%>
return new self::Class8a::•<self::Class8b::•::T%>();
static method _#new#tearOff<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::_#new#tearOff::T%>
@@ -171,23 +171,23 @@
self::testArgs();
}
static method testNoArgs() → dynamic {
- () → self::Class1 f1a = #C2;
+ () → self::Class1 f1a = #C11;
self::Class1 c1a = f1a(){() → self::Class1};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1);
- dynamic f1b = #C2;
+ dynamic f1b = #C11;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} self::Class1);
self::expect(true, core::identical(f1a, f1b));
- () → self::Class2 f2a = #C3;
+ () → self::Class2 f2a = #C12;
self::Class2 c2a = f2a(){() → self::Class2};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2);
- dynamic f2b = #C3;
+ dynamic f2b = #C12;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} self::Class2);
self::expect(true, core::identical(f2a, f2b));
}
static method testArgs() → dynamic {
- (core::int) → self::Class3 f3a = #C4;
+ (core::int) → self::Class3 f3a = #C13;
self::Class3 c3a = f3a(42){(core::int) → self::Class3};
self::expect(42, c3a.{self::Class3::field}{core::int});
() → Null {
@@ -199,12 +199,12 @@
f3a(42, 87); // error
^" in f3a{<inapplicable>}.(42, 87);
};
- dynamic f3b = #C4;
+ dynamic f3b = #C13;
dynamic c3b = f3b{dynamic}.call(87);
self::expect(87, c3b{dynamic}.field);
self::throws(() → dynamic => f3b{dynamic}.call());
self::throws(() → dynamic => f3b{dynamic}.call(42, 87));
- ([core::int?]) → self::Class4 f4a = #C5;
+ ([core::int?]) → self::Class4 f4a = #C14;
self::Class4 c4a = f4a(){([core::int?]) → self::Class4};
self::expect(null, c4a.{self::Class4::field}{core::int?});
self::Class4 c4b = f4a(42){([core::int?]) → self::Class4};
@@ -215,9 +215,9 @@
f4a(42, 87); // error
^" in f4a{<inapplicable>}.(42, 87);
};
- dynamic f4b = #C5;
+ dynamic f4b = #C14;
self::throws(() → dynamic => f4b{dynamic}.call(42, 87));
- (core::int, [core::int?]) → self::Class5 f5a = #C6;
+ (core::int, [core::int?]) → self::Class5 f5a = #C15;
self::Class5 c5a = f5a(42){(core::int, [core::int?]) → self::Class5};
self::expect(42, c5a.{self::Class5::field1}{core::int});
self::expect(null, c5a.{self::Class5::field2}{core::int?});
@@ -233,10 +233,10 @@
f5a(42, 87, 123); // error
^" in f5a{<inapplicable>}.(42, 87, 123);
};
- dynamic f5b = #C6;
+ dynamic f5b = #C15;
self::throws(() → dynamic => f5b{dynamic}.call());
self::throws(() → dynamic => f5b{dynamic}.call(42, 87, 123));
- (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C7;
+ (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C16;
self::Class6 c6a = f6a(42, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
self::expect(42, c6a.{self::Class6::field1}{core::int});
self::expect(null, c6a.{self::Class6::field2}{core::int?});
@@ -264,16 +264,16 @@
self::expect(87, c6c.{self::Class6::field1}{core::int});
self::expect(123, c6c.{self::Class6::field2}{core::int?});
self::expect(42, c6c.{self::Class6::field3}{core::int});
- dynamic f6b = #C7;
+ dynamic f6b = #C16;
self::throws(() → dynamic => f6b{dynamic}.call());
self::throws(() → dynamic => f6b{dynamic}.call(42), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(42, 87), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(field1: 87, field2: 87));
- () → self::Class7b f7a = #C8;
+ () → self::Class7b f7a = #C17;
self::Class7b c7a = f7a(){() → self::Class7b};
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7a);
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7b);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C9;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C18;
self::Class8b<dynamic> c8a = f8a<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -281,7 +281,7 @@
self::expect(true, c8b is{ForNonNullableByDefault} self::Class8a<core::int>);
self::expect(true, c8b is{ForNonNullableByDefault} self::Class8b<core::int>);
self::expect(false, c8b is{ForNonNullableByDefault} self::Class8b<core::String>);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8b = #C10;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8b = #C19;
self::Class8b<dynamic> c8c = f8b<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8c is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8c is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -294,7 +294,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C11}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C20}) → dynamic {
try {
f(){() → dynamic};
}
@@ -309,15 +309,24 @@
}
constants {
- #C1 = null
- #C2 = static-tearoff self::Class1::_#new#tearOff
- #C3 = static-tearoff self::Class2::_#named#tearOff
- #C4 = static-tearoff self::Class3::_#new#tearOff
- #C5 = static-tearoff self::Class4::_#new#tearOff
- #C6 = static-tearoff self::Class5::_#new#tearOff
- #C7 = static-tearoff self::Class6::_#new#tearOff
- #C8 = static-tearoff self::Class7b::_#new#tearOff
- #C9 = static-tearoff self::Class8b::_#new#tearOff
- #C10 = static-tearoff self::Class8b::_#fact#tearOff
- #C11 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::named
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = null
+ #C6 = constructor-tearoff self::Class5::•
+ #C7 = constructor-tearoff self::Class6::•
+ #C8 = constructor-tearoff self::Class7b::•
+ #C9 = constructor-tearoff self::Class8b::•
+ #C10 = constructor-tearoff self::Class8b::fact
+ #C11 = static-tearoff self::Class1::_#new#tearOff
+ #C12 = static-tearoff self::Class2::_#named#tearOff
+ #C13 = static-tearoff self::Class3::_#new#tearOff
+ #C14 = static-tearoff self::Class4::_#new#tearOff
+ #C15 = static-tearoff self::Class5::_#new#tearOff
+ #C16 = static-tearoff self::Class6::_#new#tearOff
+ #C17 = static-tearoff self::Class7b::_#new#tearOff
+ #C18 = static-tearoff self::Class8b::_#new#tearOff
+ #C19 = static-tearoff self::Class8b::_#fact#tearOff
+ #C20 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect
index a5fb580..c867d2c 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect
@@ -124,3 +124,16 @@
;
static method throws(() → dynamic f, {core::bool inSoundModeOnly}) → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:13:7 -> ConstructorTearOffConstant(Class1.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:18:7 -> ConstructorTearOffConstant(Class2.named)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:46:7 -> ConstructorTearOffConstant(Class3.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:53:7 -> ConstructorTearOffConstant(Class4.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:60:7 -> ConstructorTearOffConstant(Class5.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:68:7 -> ConstructorTearOffConstant(Class6.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:82:7 -> ConstructorTearOffConstant(Class7b.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:91:7 -> ConstructorTearOffConstant(Class8b.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:91:7 -> ConstructorTearOffConstant(Class8b.fact)
+Extra constant evaluation: evaluated: 66, effectively constant: 9
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.transformed.expect
index 46d6ccc..dcb045d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.transformed.expect
@@ -46,7 +46,7 @@
import "dart:core" as core;
class Class1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1
: super core::Object::•()
;
@@ -58,7 +58,7 @@
return new self::Class1::_();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor __() → self::Class2
: super core::Object::•()
;
@@ -75,7 +75,7 @@
}
class Class3 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _(core::int field) → self::Class3
: self::Class3::field = field, super core::Object::•()
;
@@ -88,44 +88,44 @@
}
class Class4 extends core::Object {
final field core::int? field;
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
- constructor _([core::int? field = #C1]) → self::Class4
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _([core::int? field = #C5]) → self::Class4
: self::Class4::field = field, super core::Object::•()
;
- static method _#_#tearOff([core::int? field = #C1]) → self::Class4
+ static method _#_#tearOff([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
- static factory •([core::int? field = #C1]) → self::Class4
+ static factory •([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
- static method _#new#tearOff([core::int? field = #C1]) → self::Class4
+ static method _#new#tearOff([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
}
class Class5 extends core::Object {
final field core::int field1;
final field core::int? field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
- constructor _(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ constructor _(core::int field1, [core::int? field2 = #C5]) → self::Class5
: self::Class5::field1 = field1, self::Class5::field2 = field2, super core::Object::•()
;
- static method _#_#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static method _#_#tearOff(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
- static factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static factory •(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
- static method _#new#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static method _#new#tearOff(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
}
class Class6 extends core::Object {
final field core::int field1;
final field core::int? field2;
final field core::int field3;
- static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
- constructor _(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
+ constructor _(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
: self::Class6::field1 = field1, self::Class6::field2 = field2, self::Class6::field3 = field3, super core::Object::•()
;
- static method _#_#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static method _#_#tearOff(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
- static factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static factory •(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
- static method _#new#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static method _#new#tearOff(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
}
class Class7a extends core::Object implements self::Class7b {
@@ -136,7 +136,7 @@
return new self::Class7a::•();
}
class Class7b extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
static factory •() → self::Class7b
return new self::Class7a::•();
static method _#new#tearOff() → self::Class7b
@@ -154,7 +154,7 @@
return self::Class8a::fact<self::Class8a::_#fact#tearOff::T%>();
}
class Class8b<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class8b::•, self::Class8b::fact]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9, #C10]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::•::T%>
return new self::Class8a::•<self::Class8b::•::T%>();
static method _#new#tearOff<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::_#new#tearOff::T%>
@@ -171,23 +171,23 @@
self::testArgs();
}
static method testNoArgs() → dynamic {
- () → self::Class1 f1a = #C2;
+ () → self::Class1 f1a = #C11;
self::Class1 c1a = f1a(){() → self::Class1};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1);
- dynamic f1b = #C2;
+ dynamic f1b = #C11;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} self::Class1);
self::expect(true, core::identical(f1a, f1b));
- () → self::Class2 f2a = #C3;
+ () → self::Class2 f2a = #C12;
self::Class2 c2a = f2a(){() → self::Class2};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2);
- dynamic f2b = #C3;
+ dynamic f2b = #C12;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} self::Class2);
self::expect(true, core::identical(f2a, f2b));
}
static method testArgs() → dynamic {
- (core::int) → self::Class3 f3a = #C4;
+ (core::int) → self::Class3 f3a = #C13;
self::Class3 c3a = f3a(42){(core::int) → self::Class3};
self::expect(42, c3a.{self::Class3::field}{core::int});
() → Null {
@@ -199,12 +199,12 @@
f3a(42, 87); // error
^" in f3a{<inapplicable>}.(42, 87);
};
- dynamic f3b = #C4;
+ dynamic f3b = #C13;
dynamic c3b = f3b{dynamic}.call(87);
self::expect(87, c3b{dynamic}.field);
self::throws(() → dynamic => f3b{dynamic}.call());
self::throws(() → dynamic => f3b{dynamic}.call(42, 87));
- ([core::int?]) → self::Class4 f4a = #C5;
+ ([core::int?]) → self::Class4 f4a = #C14;
self::Class4 c4a = f4a(){([core::int?]) → self::Class4};
self::expect(null, c4a.{self::Class4::field}{core::int?});
self::Class4 c4b = f4a(42){([core::int?]) → self::Class4};
@@ -215,9 +215,9 @@
f4a(42, 87); // error
^" in f4a{<inapplicable>}.(42, 87);
};
- dynamic f4b = #C5;
+ dynamic f4b = #C14;
self::throws(() → dynamic => f4b{dynamic}.call(42, 87));
- (core::int, [core::int?]) → self::Class5 f5a = #C6;
+ (core::int, [core::int?]) → self::Class5 f5a = #C15;
self::Class5 c5a = f5a(42){(core::int, [core::int?]) → self::Class5};
self::expect(42, c5a.{self::Class5::field1}{core::int});
self::expect(null, c5a.{self::Class5::field2}{core::int?});
@@ -233,10 +233,10 @@
f5a(42, 87, 123); // error
^" in f5a{<inapplicable>}.(42, 87, 123);
};
- dynamic f5b = #C6;
+ dynamic f5b = #C15;
self::throws(() → dynamic => f5b{dynamic}.call());
self::throws(() → dynamic => f5b{dynamic}.call(42, 87, 123));
- (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C7;
+ (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C16;
self::Class6 c6a = f6a(42, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
self::expect(42, c6a.{self::Class6::field1}{core::int});
self::expect(null, c6a.{self::Class6::field2}{core::int?});
@@ -264,16 +264,16 @@
self::expect(87, c6c.{self::Class6::field1}{core::int});
self::expect(123, c6c.{self::Class6::field2}{core::int?});
self::expect(42, c6c.{self::Class6::field3}{core::int});
- dynamic f6b = #C7;
+ dynamic f6b = #C16;
self::throws(() → dynamic => f6b{dynamic}.call());
self::throws(() → dynamic => f6b{dynamic}.call(42), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(42, 87), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(field1: 87, field2: 87));
- () → self::Class7b f7a = #C8;
+ () → self::Class7b f7a = #C17;
self::Class7b c7a = f7a(){() → self::Class7b};
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7a);
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7b);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C9;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C18;
self::Class8b<dynamic> c8a = f8a<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -281,7 +281,7 @@
self::expect(true, c8b is{ForNonNullableByDefault} self::Class8a<core::int>);
self::expect(true, c8b is{ForNonNullableByDefault} self::Class8b<core::int>);
self::expect(false, c8b is{ForNonNullableByDefault} self::Class8b<core::String>);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8b = #C10;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8b = #C19;
self::Class8b<dynamic> c8c = f8b<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8c is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8c is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -294,7 +294,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C11}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C20}) → dynamic {
try {
f(){() → dynamic};
}
@@ -309,15 +309,24 @@
}
constants {
- #C1 = null
- #C2 = static-tearoff self::Class1::_#new#tearOff
- #C3 = static-tearoff self::Class2::_#named#tearOff
- #C4 = static-tearoff self::Class3::_#new#tearOff
- #C5 = static-tearoff self::Class4::_#new#tearOff
- #C6 = static-tearoff self::Class5::_#new#tearOff
- #C7 = static-tearoff self::Class6::_#new#tearOff
- #C8 = static-tearoff self::Class7b::_#new#tearOff
- #C9 = static-tearoff self::Class8b::_#new#tearOff
- #C10 = static-tearoff self::Class8b::_#fact#tearOff
- #C11 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::named
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = null
+ #C6 = constructor-tearoff self::Class5::•
+ #C7 = constructor-tearoff self::Class6::•
+ #C8 = constructor-tearoff self::Class7b::•
+ #C9 = constructor-tearoff self::Class8b::•
+ #C10 = constructor-tearoff self::Class8b::fact
+ #C11 = static-tearoff self::Class1::_#new#tearOff
+ #C12 = static-tearoff self::Class2::_#named#tearOff
+ #C13 = static-tearoff self::Class3::_#new#tearOff
+ #C14 = static-tearoff self::Class4::_#new#tearOff
+ #C15 = static-tearoff self::Class5::_#new#tearOff
+ #C16 = static-tearoff self::Class6::_#new#tearOff
+ #C17 = static-tearoff self::Class7b::_#new#tearOff
+ #C18 = static-tearoff self::Class8b::_#new#tearOff
+ #C19 = static-tearoff self::Class8b::_#fact#tearOff
+ #C20 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.strong.expect
index c7984a5..8c398fe 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.strong.expect
@@ -17,28 +17,28 @@
class Class1 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
- constructor _([core::int field = #C1]) → self::Class1
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor _([core::int field = #C2]) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- static method _#_#tearOff([core::int field = #C1]) → self::Class1
+ static method _#_#tearOff([core::int field = #C2]) → self::Class1
return new self::Class1::_(field);
- static factory •([core::int field = #C2]) → self::Class1
+ static factory •([core::int field = #C3]) → self::Class1
return new self::Class1::_(field);
- static method _#new#tearOff([core::int field = #C1]) → self::Class1
+ static method _#new#tearOff([core::int field = #C2]) → self::Class1
return new self::Class1::_(field);
}
class Class2 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class2::•]/*isLegacy*/;
- constructor _({core::int field = #C1}) → self::Class2
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _({core::int field = #C2}) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- static method _#_#tearOff({core::int field = #C1}) → self::Class2
+ static method _#_#tearOff({core::int field = #C2}) → self::Class2
return new self::Class2::_(field: field);
- static factory •({core::int field = #C2}) → self::Class2
+ static factory •({core::int field = #C3}) → self::Class2
return new self::Class2::_(field: field);
- static method _#new#tearOff({core::int field = #C1}) → self::Class2
+ static method _#new#tearOff({core::int field = #C2}) → self::Class2
return new self::Class2::_(field: field);
}
static final field core::bool inSoundMode = !(<core::int?>[] is{ForNonNullableByDefault} core::List<core::int>);
@@ -47,7 +47,7 @@
self::testDefaultValues();
}
static method testDefaultValues() → void {
- ([core::int]) → self::Class1 f1a = #C3;
+ ([core::int]) → self::Class1 f1a = #C5;
self::Class1 c1a = f1a(){([core::int]) → self::Class1};
self::expect(42, c1a.{self::Class1::field}{core::int});
self::Class1 c1b = f1a(87){([core::int]) → self::Class1};
@@ -58,13 +58,13 @@
f1a(42, 87); // error
^" in f1a{<inapplicable>}.(42, 87);
};
- dynamic f1b = #C3;
+ dynamic f1b = #C5;
dynamic c1c = f1b{dynamic}.call();
self::expect(42, c1c{dynamic}.field);
dynamic c1d = f1b{dynamic}.call(87);
self::expect(87, c1d{dynamic}.field);
self::throws(() → dynamic => f1b{dynamic}.call(42, 87));
- ({field: core::int}) → self::Class2 f2a = #C4;
+ ({field: core::int}) → self::Class2 f2a = #C6;
self::Class2 c2a = f2a(){({field: core::int}) → self::Class2};
self::expect(42, c2a.{self::Class2::field}{core::int});
self::Class2 c2b = f2a(field: 87){({field: core::int}) → self::Class2};
@@ -75,7 +75,7 @@
f2a(87); // error
^" in f2a{<inapplicable>}.(87);
};
- dynamic f2b = #C4;
+ dynamic f2b = #C6;
dynamic c2c = f2b{dynamic}.call();
self::expect(42, c2c{dynamic}.field);
dynamic c2d = f2b{dynamic}.call(field: 87);
@@ -86,7 +86,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C5}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C7}) → dynamic {
try {
f(){() → dynamic};
}
@@ -101,9 +101,11 @@
}
constants {
- #C1 = 42
- #C2 = null
- #C3 = static-tearoff self::Class1::_#new#tearOff
- #C4 = static-tearoff self::Class2::_#new#tearOff
- #C5 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = 42
+ #C3 = null
+ #C4 = constructor-tearoff self::Class2::•
+ #C5 = static-tearoff self::Class1::_#new#tearOff
+ #C6 = static-tearoff self::Class2::_#new#tearOff
+ #C7 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.strong.transformed.expect
index 9f46561..cc59901 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.strong.transformed.expect
@@ -17,28 +17,28 @@
class Class1 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
- constructor _([core::int field = #C1]) → self::Class1
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor _([core::int field = #C2]) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- static method _#_#tearOff([core::int field = #C1]) → self::Class1
+ static method _#_#tearOff([core::int field = #C2]) → self::Class1
return new self::Class1::_(field);
- static factory •([core::int field = #C2]) → self::Class1
+ static factory •([core::int field = #C3]) → self::Class1
return new self::Class1::_(field);
- static method _#new#tearOff([core::int field = #C1]) → self::Class1
+ static method _#new#tearOff([core::int field = #C2]) → self::Class1
return new self::Class1::_(field);
}
class Class2 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class2::•]/*isLegacy*/;
- constructor _({core::int field = #C1}) → self::Class2
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _({core::int field = #C2}) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- static method _#_#tearOff({core::int field = #C1}) → self::Class2
+ static method _#_#tearOff({core::int field = #C2}) → self::Class2
return new self::Class2::_(field: field);
- static factory •({core::int field = #C2}) → self::Class2
+ static factory •({core::int field = #C3}) → self::Class2
return new self::Class2::_(field: field);
- static method _#new#tearOff({core::int field = #C1}) → self::Class2
+ static method _#new#tearOff({core::int field = #C2}) → self::Class2
return new self::Class2::_(field: field);
}
static final field core::bool inSoundMode = !(core::_GrowableList::•<core::int?>(0) is{ForNonNullableByDefault} core::List<core::int>);
@@ -47,7 +47,7 @@
self::testDefaultValues();
}
static method testDefaultValues() → void {
- ([core::int]) → self::Class1 f1a = #C3;
+ ([core::int]) → self::Class1 f1a = #C5;
self::Class1 c1a = f1a(){([core::int]) → self::Class1};
self::expect(42, c1a.{self::Class1::field}{core::int});
self::Class1 c1b = f1a(87){([core::int]) → self::Class1};
@@ -58,13 +58,13 @@
f1a(42, 87); // error
^" in f1a{<inapplicable>}.(42, 87);
};
- dynamic f1b = #C3;
+ dynamic f1b = #C5;
dynamic c1c = f1b{dynamic}.call();
self::expect(42, c1c{dynamic}.field);
dynamic c1d = f1b{dynamic}.call(87);
self::expect(87, c1d{dynamic}.field);
self::throws(() → dynamic => f1b{dynamic}.call(42, 87));
- ({field: core::int}) → self::Class2 f2a = #C4;
+ ({field: core::int}) → self::Class2 f2a = #C6;
self::Class2 c2a = f2a(){({field: core::int}) → self::Class2};
self::expect(42, c2a.{self::Class2::field}{core::int});
self::Class2 c2b = f2a(field: 87){({field: core::int}) → self::Class2};
@@ -75,7 +75,7 @@
f2a(87); // error
^" in f2a{<inapplicable>}.(87);
};
- dynamic f2b = #C4;
+ dynamic f2b = #C6;
dynamic c2c = f2b{dynamic}.call();
self::expect(42, c2c{dynamic}.field);
dynamic c2d = f2b{dynamic}.call(field: 87);
@@ -86,7 +86,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C5}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C7}) → dynamic {
try {
f(){() → dynamic};
}
@@ -101,9 +101,11 @@
}
constants {
- #C1 = 42
- #C2 = null
- #C3 = static-tearoff self::Class1::_#new#tearOff
- #C4 = static-tearoff self::Class2::_#new#tearOff
- #C5 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = 42
+ #C3 = null
+ #C4 = constructor-tearoff self::Class2::•
+ #C5 = static-tearoff self::Class1::_#new#tearOff
+ #C6 = static-tearoff self::Class2::_#new#tearOff
+ #C7 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.expect
index c7984a5..8c398fe 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.expect
@@ -17,28 +17,28 @@
class Class1 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
- constructor _([core::int field = #C1]) → self::Class1
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor _([core::int field = #C2]) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- static method _#_#tearOff([core::int field = #C1]) → self::Class1
+ static method _#_#tearOff([core::int field = #C2]) → self::Class1
return new self::Class1::_(field);
- static factory •([core::int field = #C2]) → self::Class1
+ static factory •([core::int field = #C3]) → self::Class1
return new self::Class1::_(field);
- static method _#new#tearOff([core::int field = #C1]) → self::Class1
+ static method _#new#tearOff([core::int field = #C2]) → self::Class1
return new self::Class1::_(field);
}
class Class2 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class2::•]/*isLegacy*/;
- constructor _({core::int field = #C1}) → self::Class2
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _({core::int field = #C2}) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- static method _#_#tearOff({core::int field = #C1}) → self::Class2
+ static method _#_#tearOff({core::int field = #C2}) → self::Class2
return new self::Class2::_(field: field);
- static factory •({core::int field = #C2}) → self::Class2
+ static factory •({core::int field = #C3}) → self::Class2
return new self::Class2::_(field: field);
- static method _#new#tearOff({core::int field = #C1}) → self::Class2
+ static method _#new#tearOff({core::int field = #C2}) → self::Class2
return new self::Class2::_(field: field);
}
static final field core::bool inSoundMode = !(<core::int?>[] is{ForNonNullableByDefault} core::List<core::int>);
@@ -47,7 +47,7 @@
self::testDefaultValues();
}
static method testDefaultValues() → void {
- ([core::int]) → self::Class1 f1a = #C3;
+ ([core::int]) → self::Class1 f1a = #C5;
self::Class1 c1a = f1a(){([core::int]) → self::Class1};
self::expect(42, c1a.{self::Class1::field}{core::int});
self::Class1 c1b = f1a(87){([core::int]) → self::Class1};
@@ -58,13 +58,13 @@
f1a(42, 87); // error
^" in f1a{<inapplicable>}.(42, 87);
};
- dynamic f1b = #C3;
+ dynamic f1b = #C5;
dynamic c1c = f1b{dynamic}.call();
self::expect(42, c1c{dynamic}.field);
dynamic c1d = f1b{dynamic}.call(87);
self::expect(87, c1d{dynamic}.field);
self::throws(() → dynamic => f1b{dynamic}.call(42, 87));
- ({field: core::int}) → self::Class2 f2a = #C4;
+ ({field: core::int}) → self::Class2 f2a = #C6;
self::Class2 c2a = f2a(){({field: core::int}) → self::Class2};
self::expect(42, c2a.{self::Class2::field}{core::int});
self::Class2 c2b = f2a(field: 87){({field: core::int}) → self::Class2};
@@ -75,7 +75,7 @@
f2a(87); // error
^" in f2a{<inapplicable>}.(87);
};
- dynamic f2b = #C4;
+ dynamic f2b = #C6;
dynamic c2c = f2b{dynamic}.call();
self::expect(42, c2c{dynamic}.field);
dynamic c2d = f2b{dynamic}.call(field: 87);
@@ -86,7 +86,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C5}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C7}) → dynamic {
try {
f(){() → dynamic};
}
@@ -101,9 +101,11 @@
}
constants {
- #C1 = 42
- #C2 = null
- #C3 = static-tearoff self::Class1::_#new#tearOff
- #C4 = static-tearoff self::Class2::_#new#tearOff
- #C5 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = 42
+ #C3 = null
+ #C4 = constructor-tearoff self::Class2::•
+ #C5 = static-tearoff self::Class1::_#new#tearOff
+ #C6 = static-tearoff self::Class2::_#new#tearOff
+ #C7 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.outline.expect
index 1cd9ef2..20f744e 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.outline.expect
@@ -35,3 +35,9 @@
;
static method throws(() → dynamic f, {core::bool inSoundModeOnly}) → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values.dart:12:7 -> ConstructorTearOffConstant(Class1.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values.dart:19:7 -> ConstructorTearOffConstant(Class2.)
+Extra constant evaluation: evaluated: 16, effectively constant: 2
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.transformed.expect
index 9f46561..cc59901 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.transformed.expect
@@ -17,28 +17,28 @@
class Class1 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
- constructor _([core::int field = #C1]) → self::Class1
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor _([core::int field = #C2]) → self::Class1
: self::Class1::field = field, super core::Object::•()
;
- static method _#_#tearOff([core::int field = #C1]) → self::Class1
+ static method _#_#tearOff([core::int field = #C2]) → self::Class1
return new self::Class1::_(field);
- static factory •([core::int field = #C2]) → self::Class1
+ static factory •([core::int field = #C3]) → self::Class1
return new self::Class1::_(field);
- static method _#new#tearOff([core::int field = #C1]) → self::Class1
+ static method _#new#tearOff([core::int field = #C2]) → self::Class1
return new self::Class1::_(field);
}
class Class2 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class2::•]/*isLegacy*/;
- constructor _({core::int field = #C1}) → self::Class2
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _({core::int field = #C2}) → self::Class2
: self::Class2::field = field, super core::Object::•()
;
- static method _#_#tearOff({core::int field = #C1}) → self::Class2
+ static method _#_#tearOff({core::int field = #C2}) → self::Class2
return new self::Class2::_(field: field);
- static factory •({core::int field = #C2}) → self::Class2
+ static factory •({core::int field = #C3}) → self::Class2
return new self::Class2::_(field: field);
- static method _#new#tearOff({core::int field = #C1}) → self::Class2
+ static method _#new#tearOff({core::int field = #C2}) → self::Class2
return new self::Class2::_(field: field);
}
static final field core::bool inSoundMode = !(core::_GrowableList::•<core::int?>(0) is{ForNonNullableByDefault} core::List<core::int>);
@@ -47,7 +47,7 @@
self::testDefaultValues();
}
static method testDefaultValues() → void {
- ([core::int]) → self::Class1 f1a = #C3;
+ ([core::int]) → self::Class1 f1a = #C5;
self::Class1 c1a = f1a(){([core::int]) → self::Class1};
self::expect(42, c1a.{self::Class1::field}{core::int});
self::Class1 c1b = f1a(87){([core::int]) → self::Class1};
@@ -58,13 +58,13 @@
f1a(42, 87); // error
^" in f1a{<inapplicable>}.(42, 87);
};
- dynamic f1b = #C3;
+ dynamic f1b = #C5;
dynamic c1c = f1b{dynamic}.call();
self::expect(42, c1c{dynamic}.field);
dynamic c1d = f1b{dynamic}.call(87);
self::expect(87, c1d{dynamic}.field);
self::throws(() → dynamic => f1b{dynamic}.call(42, 87));
- ({field: core::int}) → self::Class2 f2a = #C4;
+ ({field: core::int}) → self::Class2 f2a = #C6;
self::Class2 c2a = f2a(){({field: core::int}) → self::Class2};
self::expect(42, c2a.{self::Class2::field}{core::int});
self::Class2 c2b = f2a(field: 87){({field: core::int}) → self::Class2};
@@ -75,7 +75,7 @@
f2a(87); // error
^" in f2a{<inapplicable>}.(87);
};
- dynamic f2b = #C4;
+ dynamic f2b = #C6;
dynamic c2c = f2b{dynamic}.call();
self::expect(42, c2c{dynamic}.field);
dynamic c2d = f2b{dynamic}.call(field: 87);
@@ -86,7 +86,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C5}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C7}) → dynamic {
try {
f(){() → dynamic};
}
@@ -101,9 +101,11 @@
}
constants {
- #C1 = 42
- #C2 = null
- #C3 = static-tearoff self::Class1::_#new#tearOff
- #C4 = static-tearoff self::Class2::_#new#tearOff
- #C5 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = 42
+ #C3 = null
+ #C4 = constructor-tearoff self::Class2::•
+ #C5 = static-tearoff self::Class1::_#new#tearOff
+ #C6 = static-tearoff self::Class2::_#new#tearOff
+ #C7 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.strong.expect
index c019108..aa8c2df 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.strong.expect
@@ -43,44 +43,44 @@
class Class1 extends core::Object {
final field core::int field1;
final field core::int field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class1::redirectPositionalSame, self::Class1::redirectPositionalFewer1, self::Class1::redirectPositionalFewer2, self::Class1::redirectNamedSame, self::Class1::redirectNamedReorder, self::Class1::redirectNamedFewer1, self::Class1::redirectNamedFewer2, self::Class1::redirectNamedFewer3]/*isLegacy*/;
- constructor positional([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3, #C4, #C5, #C6, #C7, #C8]/*isLegacy*/;
+ constructor positional([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
: self::Class1::field1 = field1, self::Class1::field2 = field2, super core::Object::•()
;
- constructor named({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ constructor named({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
: self::Class1::field1 = field1, self::Class1::field2 = field2, super core::Object::•()
;
- static method _#positional#tearOff([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static method _#positional#tearOff([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
return new self::Class1::positional(field1, field2);
- static factory redirectPositionalSame([core::int field1 = #C3, core::int field2 = #C3]) → self::Class1
+ static factory redirectPositionalSame([core::int field1 = #C11, core::int field2 = #C11]) → self::Class1
return new self::Class1::positional(field1, field2);
- static method _#redirectPositionalSame#tearOff([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static method _#redirectPositionalSame#tearOff([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
return new self::Class1::positional(field1, field2);
- static factory redirectPositionalFewer1([core::int field1 = #C3]) → self::Class1
+ static factory redirectPositionalFewer1([core::int field1 = #C11]) → self::Class1
return new self::Class1::positional(field1);
- static method _#redirectPositionalFewer1#tearOff([core::int field1 = #C1]) → self::Class1
+ static method _#redirectPositionalFewer1#tearOff([core::int field1 = #C9]) → self::Class1
return new self::Class1::positional(field1);
static factory redirectPositionalFewer2() → self::Class1
return new self::Class1::positional();
static method _#redirectPositionalFewer2#tearOff() → self::Class1
return new self::Class1::positional();
- static method _#named#tearOff({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ static method _#named#tearOff({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static factory redirectNamedSame({core::int field1 = #C3, core::int field2 = #C3}) → self::Class1
+ static factory redirectNamedSame({core::int field1 = #C11, core::int field2 = #C11}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static method _#redirectNamedSame#tearOff({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ static method _#redirectNamedSame#tearOff({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static factory redirectNamedReorder({core::int field2 = #C3, core::int field1 = #C3}) → self::Class1
+ static factory redirectNamedReorder({core::int field2 = #C11, core::int field1 = #C11}) → self::Class1
return new self::Class1::named(field2: field2, field1: field1);
- static method _#redirectNamedReorder#tearOff({core::int field2 = #C2, core::int field1 = #C1}) → self::Class1
+ static method _#redirectNamedReorder#tearOff({core::int field2 = #C10, core::int field1 = #C9}) → self::Class1
return new self::Class1::named(field2: field2, field1: field1);
- static factory redirectNamedFewer1({core::int field1 = #C3}) → self::Class1
+ static factory redirectNamedFewer1({core::int field1 = #C11}) → self::Class1
return new self::Class1::named(field1: field1);
- static method _#redirectNamedFewer1#tearOff({core::int field1 = #C1}) → self::Class1
+ static method _#redirectNamedFewer1#tearOff({core::int field1 = #C9}) → self::Class1
return new self::Class1::named(field1: field1);
- static factory redirectNamedFewer2({core::int field2 = #C3}) → self::Class1
+ static factory redirectNamedFewer2({core::int field2 = #C11}) → self::Class1
return new self::Class1::named(field2: field2);
- static method _#redirectNamedFewer2#tearOff({core::int field2 = #C2}) → self::Class1
+ static method _#redirectNamedFewer2#tearOff({core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field2: field2);
static factory redirectNamedFewer3() → self::Class1
return new self::Class1::named();
@@ -93,7 +93,7 @@
self::testDefaultValues();
}
static method testDefaultValues() → dynamic {
- ([core::int, core::int]) → self::Class1 f1a = #C4;
+ ([core::int, core::int]) → self::Class1 f1a = #C12;
self::Class1 c1a = f1a(){([core::int, core::int]) → self::Class1};
self::expect(1, c1a.{self::Class1::field1}{core::int});
self::expect(2, c1a.{self::Class1::field2}{core::int});
@@ -103,7 +103,7 @@
self::Class1 c1c = f1a(42, 87){([core::int, core::int]) → self::Class1};
self::expect(42, c1c.{self::Class1::field1}{core::int});
self::expect(87, c1c.{self::Class1::field2}{core::int});
- ([core::int]) → self::Class1 f1b = #C5;
+ ([core::int]) → self::Class1 f1b = #C13;
self::Class1 c1d = f1b(){([core::int]) → self::Class1};
self::expect(1, c1d.{self::Class1::field1}{core::int});
self::expect(2, c1d.{self::Class1::field2}{core::int});
@@ -116,7 +116,7 @@
f1b(42, 87); // error
^" in f1b{<inapplicable>}.(42, 87);
};
- () → self::Class1 f1c = #C6;
+ () → self::Class1 f1c = #C14;
self::Class1 c1f = f1c(){() → self::Class1};
self::expect(1, c1f.{self::Class1::field1}{core::int});
self::expect(2, c1f.{self::Class1::field2}{core::int});
@@ -130,7 +130,7 @@
f1c(42, 87); // error
^" in f1c{<inapplicable>}.(42, 87);
};
- ({field1: core::int, field2: core::int}) → self::Class1 f2a = #C7;
+ ({field1: core::int, field2: core::int}) → self::Class1 f2a = #C15;
self::Class1 c2a = f2a(){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(1, c2a.{self::Class1::field1}{core::int});
self::expect(2, c2a.{self::Class1::field2}{core::int});
@@ -146,7 +146,7 @@
self::Class1 c2e = f2a(field2: 87, field1: 42){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(42, c2e.{self::Class1::field1}{core::int});
self::expect(87, c2e.{self::Class1::field2}{core::int});
- ({field1: core::int, field2: core::int}) → self::Class1 f2b = #C8;
+ ({field1: core::int, field2: core::int}) → self::Class1 f2b = #C16;
self::Class1 c3a = f2b(){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(1, c3a.{self::Class1::field1}{core::int});
self::expect(2, c3a.{self::Class1::field2}{core::int});
@@ -162,7 +162,7 @@
self::Class1 c3e = f2b(field2: 87, field1: 42){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(42, c3e.{self::Class1::field1}{core::int});
self::expect(87, c3e.{self::Class1::field2}{core::int});
- ({field1: core::int}) → self::Class1 f2c = #C9;
+ ({field1: core::int}) → self::Class1 f2c = #C17;
self::Class1 c4a = f2c(){({field1: core::int}) → self::Class1};
self::expect(1, c4a.{self::Class1::field1}{core::int});
self::expect(2, c4a.{self::Class1::field2}{core::int});
@@ -174,7 +174,7 @@
f2c(field1: 42, field2: 87); // error
^^^^^^" in f2c{<inapplicable>}.(field1: 42, field2: 87);
};
- ({field2: core::int}) → self::Class1 f2d = #C10;
+ ({field2: core::int}) → self::Class1 f2d = #C18;
self::Class1 c5a = f2d(){({field2: core::int}) → self::Class1};
self::expect(1, c5a.{self::Class1::field1}{core::int});
self::expect(2, c5a.{self::Class1::field2}{core::int});
@@ -186,7 +186,7 @@
f2d(field1: 42, field2: 87); // error
^^^^^^" in f2d{<inapplicable>}.(field1: 42, field2: 87);
};
- () → self::Class1 f2e = #C11;
+ () → self::Class1 f2e = #C19;
self::Class1 c6a = f2e(){() → self::Class1};
self::expect(1, c6a.{self::Class1::field1}{core::int});
self::expect(2, c6a.{self::Class1::field2}{core::int});
@@ -206,7 +206,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C12}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C20}) → dynamic {
try {
f(){() → dynamic};
}
@@ -221,16 +221,24 @@
}
constants {
- #C1 = 1
- #C2 = 2
- #C3 = null
- #C4 = static-tearoff self::Class1::_#redirectPositionalSame#tearOff
- #C5 = static-tearoff self::Class1::_#redirectPositionalFewer1#tearOff
- #C6 = static-tearoff self::Class1::_#redirectPositionalFewer2#tearOff
- #C7 = static-tearoff self::Class1::_#redirectNamedSame#tearOff
- #C8 = static-tearoff self::Class1::_#redirectNamedReorder#tearOff
- #C9 = static-tearoff self::Class1::_#redirectNamedFewer1#tearOff
- #C10 = static-tearoff self::Class1::_#redirectNamedFewer2#tearOff
- #C11 = static-tearoff self::Class1::_#redirectNamedFewer3#tearOff
- #C12 = false
+ #C1 = constructor-tearoff self::Class1::redirectPositionalSame
+ #C2 = constructor-tearoff self::Class1::redirectPositionalFewer1
+ #C3 = constructor-tearoff self::Class1::redirectPositionalFewer2
+ #C4 = constructor-tearoff self::Class1::redirectNamedSame
+ #C5 = constructor-tearoff self::Class1::redirectNamedReorder
+ #C6 = constructor-tearoff self::Class1::redirectNamedFewer1
+ #C7 = constructor-tearoff self::Class1::redirectNamedFewer2
+ #C8 = constructor-tearoff self::Class1::redirectNamedFewer3
+ #C9 = 1
+ #C10 = 2
+ #C11 = null
+ #C12 = static-tearoff self::Class1::_#redirectPositionalSame#tearOff
+ #C13 = static-tearoff self::Class1::_#redirectPositionalFewer1#tearOff
+ #C14 = static-tearoff self::Class1::_#redirectPositionalFewer2#tearOff
+ #C15 = static-tearoff self::Class1::_#redirectNamedSame#tearOff
+ #C16 = static-tearoff self::Class1::_#redirectNamedReorder#tearOff
+ #C17 = static-tearoff self::Class1::_#redirectNamedFewer1#tearOff
+ #C18 = static-tearoff self::Class1::_#redirectNamedFewer2#tearOff
+ #C19 = static-tearoff self::Class1::_#redirectNamedFewer3#tearOff
+ #C20 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.strong.transformed.expect
index ffa443b..aa4af4d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.strong.transformed.expect
@@ -43,44 +43,44 @@
class Class1 extends core::Object {
final field core::int field1;
final field core::int field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class1::redirectPositionalSame, self::Class1::redirectPositionalFewer1, self::Class1::redirectPositionalFewer2, self::Class1::redirectNamedSame, self::Class1::redirectNamedReorder, self::Class1::redirectNamedFewer1, self::Class1::redirectNamedFewer2, self::Class1::redirectNamedFewer3]/*isLegacy*/;
- constructor positional([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3, #C4, #C5, #C6, #C7, #C8]/*isLegacy*/;
+ constructor positional([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
: self::Class1::field1 = field1, self::Class1::field2 = field2, super core::Object::•()
;
- constructor named({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ constructor named({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
: self::Class1::field1 = field1, self::Class1::field2 = field2, super core::Object::•()
;
- static method _#positional#tearOff([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static method _#positional#tearOff([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
return new self::Class1::positional(field1, field2);
- static factory redirectPositionalSame([core::int field1 = #C3, core::int field2 = #C3]) → self::Class1
+ static factory redirectPositionalSame([core::int field1 = #C11, core::int field2 = #C11]) → self::Class1
return new self::Class1::positional(field1, field2);
- static method _#redirectPositionalSame#tearOff([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static method _#redirectPositionalSame#tearOff([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
return new self::Class1::positional(field1, field2);
- static factory redirectPositionalFewer1([core::int field1 = #C3]) → self::Class1
+ static factory redirectPositionalFewer1([core::int field1 = #C11]) → self::Class1
return new self::Class1::positional(field1);
- static method _#redirectPositionalFewer1#tearOff([core::int field1 = #C1]) → self::Class1
+ static method _#redirectPositionalFewer1#tearOff([core::int field1 = #C9]) → self::Class1
return new self::Class1::positional(field1);
static factory redirectPositionalFewer2() → self::Class1
return new self::Class1::positional();
static method _#redirectPositionalFewer2#tearOff() → self::Class1
return new self::Class1::positional();
- static method _#named#tearOff({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ static method _#named#tearOff({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static factory redirectNamedSame({core::int field1 = #C3, core::int field2 = #C3}) → self::Class1
+ static factory redirectNamedSame({core::int field1 = #C11, core::int field2 = #C11}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static method _#redirectNamedSame#tearOff({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ static method _#redirectNamedSame#tearOff({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static factory redirectNamedReorder({core::int field2 = #C3, core::int field1 = #C3}) → self::Class1
+ static factory redirectNamedReorder({core::int field2 = #C11, core::int field1 = #C11}) → self::Class1
return new self::Class1::named(field2: field2, field1: field1);
- static method _#redirectNamedReorder#tearOff({core::int field2 = #C2, core::int field1 = #C1}) → self::Class1
+ static method _#redirectNamedReorder#tearOff({core::int field2 = #C10, core::int field1 = #C9}) → self::Class1
return new self::Class1::named(field2: field2, field1: field1);
- static factory redirectNamedFewer1({core::int field1 = #C3}) → self::Class1
+ static factory redirectNamedFewer1({core::int field1 = #C11}) → self::Class1
return new self::Class1::named(field1: field1);
- static method _#redirectNamedFewer1#tearOff({core::int field1 = #C1}) → self::Class1
+ static method _#redirectNamedFewer1#tearOff({core::int field1 = #C9}) → self::Class1
return new self::Class1::named(field1: field1);
- static factory redirectNamedFewer2({core::int field2 = #C3}) → self::Class1
+ static factory redirectNamedFewer2({core::int field2 = #C11}) → self::Class1
return new self::Class1::named(field2: field2);
- static method _#redirectNamedFewer2#tearOff({core::int field2 = #C2}) → self::Class1
+ static method _#redirectNamedFewer2#tearOff({core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field2: field2);
static factory redirectNamedFewer3() → self::Class1
return new self::Class1::named();
@@ -93,7 +93,7 @@
self::testDefaultValues();
}
static method testDefaultValues() → dynamic {
- ([core::int, core::int]) → self::Class1 f1a = #C4;
+ ([core::int, core::int]) → self::Class1 f1a = #C12;
self::Class1 c1a = f1a(){([core::int, core::int]) → self::Class1};
self::expect(1, c1a.{self::Class1::field1}{core::int});
self::expect(2, c1a.{self::Class1::field2}{core::int});
@@ -103,7 +103,7 @@
self::Class1 c1c = f1a(42, 87){([core::int, core::int]) → self::Class1};
self::expect(42, c1c.{self::Class1::field1}{core::int});
self::expect(87, c1c.{self::Class1::field2}{core::int});
- ([core::int]) → self::Class1 f1b = #C5;
+ ([core::int]) → self::Class1 f1b = #C13;
self::Class1 c1d = f1b(){([core::int]) → self::Class1};
self::expect(1, c1d.{self::Class1::field1}{core::int});
self::expect(2, c1d.{self::Class1::field2}{core::int});
@@ -116,7 +116,7 @@
f1b(42, 87); // error
^" in f1b{<inapplicable>}.(42, 87);
};
- () → self::Class1 f1c = #C6;
+ () → self::Class1 f1c = #C14;
self::Class1 c1f = f1c(){() → self::Class1};
self::expect(1, c1f.{self::Class1::field1}{core::int});
self::expect(2, c1f.{self::Class1::field2}{core::int});
@@ -130,7 +130,7 @@
f1c(42, 87); // error
^" in f1c{<inapplicable>}.(42, 87);
};
- ({field1: core::int, field2: core::int}) → self::Class1 f2a = #C7;
+ ({field1: core::int, field2: core::int}) → self::Class1 f2a = #C15;
self::Class1 c2a = f2a(){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(1, c2a.{self::Class1::field1}{core::int});
self::expect(2, c2a.{self::Class1::field2}{core::int});
@@ -146,7 +146,7 @@
self::Class1 c2e = f2a(field2: 87, field1: 42){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(42, c2e.{self::Class1::field1}{core::int});
self::expect(87, c2e.{self::Class1::field2}{core::int});
- ({field1: core::int, field2: core::int}) → self::Class1 f2b = #C8;
+ ({field1: core::int, field2: core::int}) → self::Class1 f2b = #C16;
self::Class1 c3a = f2b(){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(1, c3a.{self::Class1::field1}{core::int});
self::expect(2, c3a.{self::Class1::field2}{core::int});
@@ -162,7 +162,7 @@
self::Class1 c3e = f2b(field2: 87, field1: 42){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(42, c3e.{self::Class1::field1}{core::int});
self::expect(87, c3e.{self::Class1::field2}{core::int});
- ({field1: core::int}) → self::Class1 f2c = #C9;
+ ({field1: core::int}) → self::Class1 f2c = #C17;
self::Class1 c4a = f2c(){({field1: core::int}) → self::Class1};
self::expect(1, c4a.{self::Class1::field1}{core::int});
self::expect(2, c4a.{self::Class1::field2}{core::int});
@@ -174,7 +174,7 @@
f2c(field1: 42, field2: 87); // error
^^^^^^" in f2c{<inapplicable>}.(field1: 42, field2: 87);
};
- ({field2: core::int}) → self::Class1 f2d = #C10;
+ ({field2: core::int}) → self::Class1 f2d = #C18;
self::Class1 c5a = f2d(){({field2: core::int}) → self::Class1};
self::expect(1, c5a.{self::Class1::field1}{core::int});
self::expect(2, c5a.{self::Class1::field2}{core::int});
@@ -186,7 +186,7 @@
f2d(field1: 42, field2: 87); // error
^^^^^^" in f2d{<inapplicable>}.(field1: 42, field2: 87);
};
- () → self::Class1 f2e = #C11;
+ () → self::Class1 f2e = #C19;
self::Class1 c6a = f2e(){() → self::Class1};
self::expect(1, c6a.{self::Class1::field1}{core::int});
self::expect(2, c6a.{self::Class1::field2}{core::int});
@@ -206,7 +206,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C12}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C20}) → dynamic {
try {
f(){() → dynamic};
}
@@ -221,16 +221,24 @@
}
constants {
- #C1 = 1
- #C2 = 2
- #C3 = null
- #C4 = static-tearoff self::Class1::_#redirectPositionalSame#tearOff
- #C5 = static-tearoff self::Class1::_#redirectPositionalFewer1#tearOff
- #C6 = static-tearoff self::Class1::_#redirectPositionalFewer2#tearOff
- #C7 = static-tearoff self::Class1::_#redirectNamedSame#tearOff
- #C8 = static-tearoff self::Class1::_#redirectNamedReorder#tearOff
- #C9 = static-tearoff self::Class1::_#redirectNamedFewer1#tearOff
- #C10 = static-tearoff self::Class1::_#redirectNamedFewer2#tearOff
- #C11 = static-tearoff self::Class1::_#redirectNamedFewer3#tearOff
- #C12 = false
+ #C1 = constructor-tearoff self::Class1::redirectPositionalSame
+ #C2 = constructor-tearoff self::Class1::redirectPositionalFewer1
+ #C3 = constructor-tearoff self::Class1::redirectPositionalFewer2
+ #C4 = constructor-tearoff self::Class1::redirectNamedSame
+ #C5 = constructor-tearoff self::Class1::redirectNamedReorder
+ #C6 = constructor-tearoff self::Class1::redirectNamedFewer1
+ #C7 = constructor-tearoff self::Class1::redirectNamedFewer2
+ #C8 = constructor-tearoff self::Class1::redirectNamedFewer3
+ #C9 = 1
+ #C10 = 2
+ #C11 = null
+ #C12 = static-tearoff self::Class1::_#redirectPositionalSame#tearOff
+ #C13 = static-tearoff self::Class1::_#redirectPositionalFewer1#tearOff
+ #C14 = static-tearoff self::Class1::_#redirectPositionalFewer2#tearOff
+ #C15 = static-tearoff self::Class1::_#redirectNamedSame#tearOff
+ #C16 = static-tearoff self::Class1::_#redirectNamedReorder#tearOff
+ #C17 = static-tearoff self::Class1::_#redirectNamedFewer1#tearOff
+ #C18 = static-tearoff self::Class1::_#redirectNamedFewer2#tearOff
+ #C19 = static-tearoff self::Class1::_#redirectNamedFewer3#tearOff
+ #C20 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.expect
index c019108..aa8c2df 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.expect
@@ -43,44 +43,44 @@
class Class1 extends core::Object {
final field core::int field1;
final field core::int field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class1::redirectPositionalSame, self::Class1::redirectPositionalFewer1, self::Class1::redirectPositionalFewer2, self::Class1::redirectNamedSame, self::Class1::redirectNamedReorder, self::Class1::redirectNamedFewer1, self::Class1::redirectNamedFewer2, self::Class1::redirectNamedFewer3]/*isLegacy*/;
- constructor positional([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3, #C4, #C5, #C6, #C7, #C8]/*isLegacy*/;
+ constructor positional([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
: self::Class1::field1 = field1, self::Class1::field2 = field2, super core::Object::•()
;
- constructor named({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ constructor named({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
: self::Class1::field1 = field1, self::Class1::field2 = field2, super core::Object::•()
;
- static method _#positional#tearOff([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static method _#positional#tearOff([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
return new self::Class1::positional(field1, field2);
- static factory redirectPositionalSame([core::int field1 = #C3, core::int field2 = #C3]) → self::Class1
+ static factory redirectPositionalSame([core::int field1 = #C11, core::int field2 = #C11]) → self::Class1
return new self::Class1::positional(field1, field2);
- static method _#redirectPositionalSame#tearOff([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static method _#redirectPositionalSame#tearOff([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
return new self::Class1::positional(field1, field2);
- static factory redirectPositionalFewer1([core::int field1 = #C3]) → self::Class1
+ static factory redirectPositionalFewer1([core::int field1 = #C11]) → self::Class1
return new self::Class1::positional(field1);
- static method _#redirectPositionalFewer1#tearOff([core::int field1 = #C1]) → self::Class1
+ static method _#redirectPositionalFewer1#tearOff([core::int field1 = #C9]) → self::Class1
return new self::Class1::positional(field1);
static factory redirectPositionalFewer2() → self::Class1
return new self::Class1::positional();
static method _#redirectPositionalFewer2#tearOff() → self::Class1
return new self::Class1::positional();
- static method _#named#tearOff({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ static method _#named#tearOff({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static factory redirectNamedSame({core::int field1 = #C3, core::int field2 = #C3}) → self::Class1
+ static factory redirectNamedSame({core::int field1 = #C11, core::int field2 = #C11}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static method _#redirectNamedSame#tearOff({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ static method _#redirectNamedSame#tearOff({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static factory redirectNamedReorder({core::int field2 = #C3, core::int field1 = #C3}) → self::Class1
+ static factory redirectNamedReorder({core::int field2 = #C11, core::int field1 = #C11}) → self::Class1
return new self::Class1::named(field2: field2, field1: field1);
- static method _#redirectNamedReorder#tearOff({core::int field2 = #C2, core::int field1 = #C1}) → self::Class1
+ static method _#redirectNamedReorder#tearOff({core::int field2 = #C10, core::int field1 = #C9}) → self::Class1
return new self::Class1::named(field2: field2, field1: field1);
- static factory redirectNamedFewer1({core::int field1 = #C3}) → self::Class1
+ static factory redirectNamedFewer1({core::int field1 = #C11}) → self::Class1
return new self::Class1::named(field1: field1);
- static method _#redirectNamedFewer1#tearOff({core::int field1 = #C1}) → self::Class1
+ static method _#redirectNamedFewer1#tearOff({core::int field1 = #C9}) → self::Class1
return new self::Class1::named(field1: field1);
- static factory redirectNamedFewer2({core::int field2 = #C3}) → self::Class1
+ static factory redirectNamedFewer2({core::int field2 = #C11}) → self::Class1
return new self::Class1::named(field2: field2);
- static method _#redirectNamedFewer2#tearOff({core::int field2 = #C2}) → self::Class1
+ static method _#redirectNamedFewer2#tearOff({core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field2: field2);
static factory redirectNamedFewer3() → self::Class1
return new self::Class1::named();
@@ -93,7 +93,7 @@
self::testDefaultValues();
}
static method testDefaultValues() → dynamic {
- ([core::int, core::int]) → self::Class1 f1a = #C4;
+ ([core::int, core::int]) → self::Class1 f1a = #C12;
self::Class1 c1a = f1a(){([core::int, core::int]) → self::Class1};
self::expect(1, c1a.{self::Class1::field1}{core::int});
self::expect(2, c1a.{self::Class1::field2}{core::int});
@@ -103,7 +103,7 @@
self::Class1 c1c = f1a(42, 87){([core::int, core::int]) → self::Class1};
self::expect(42, c1c.{self::Class1::field1}{core::int});
self::expect(87, c1c.{self::Class1::field2}{core::int});
- ([core::int]) → self::Class1 f1b = #C5;
+ ([core::int]) → self::Class1 f1b = #C13;
self::Class1 c1d = f1b(){([core::int]) → self::Class1};
self::expect(1, c1d.{self::Class1::field1}{core::int});
self::expect(2, c1d.{self::Class1::field2}{core::int});
@@ -116,7 +116,7 @@
f1b(42, 87); // error
^" in f1b{<inapplicable>}.(42, 87);
};
- () → self::Class1 f1c = #C6;
+ () → self::Class1 f1c = #C14;
self::Class1 c1f = f1c(){() → self::Class1};
self::expect(1, c1f.{self::Class1::field1}{core::int});
self::expect(2, c1f.{self::Class1::field2}{core::int});
@@ -130,7 +130,7 @@
f1c(42, 87); // error
^" in f1c{<inapplicable>}.(42, 87);
};
- ({field1: core::int, field2: core::int}) → self::Class1 f2a = #C7;
+ ({field1: core::int, field2: core::int}) → self::Class1 f2a = #C15;
self::Class1 c2a = f2a(){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(1, c2a.{self::Class1::field1}{core::int});
self::expect(2, c2a.{self::Class1::field2}{core::int});
@@ -146,7 +146,7 @@
self::Class1 c2e = f2a(field2: 87, field1: 42){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(42, c2e.{self::Class1::field1}{core::int});
self::expect(87, c2e.{self::Class1::field2}{core::int});
- ({field1: core::int, field2: core::int}) → self::Class1 f2b = #C8;
+ ({field1: core::int, field2: core::int}) → self::Class1 f2b = #C16;
self::Class1 c3a = f2b(){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(1, c3a.{self::Class1::field1}{core::int});
self::expect(2, c3a.{self::Class1::field2}{core::int});
@@ -162,7 +162,7 @@
self::Class1 c3e = f2b(field2: 87, field1: 42){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(42, c3e.{self::Class1::field1}{core::int});
self::expect(87, c3e.{self::Class1::field2}{core::int});
- ({field1: core::int}) → self::Class1 f2c = #C9;
+ ({field1: core::int}) → self::Class1 f2c = #C17;
self::Class1 c4a = f2c(){({field1: core::int}) → self::Class1};
self::expect(1, c4a.{self::Class1::field1}{core::int});
self::expect(2, c4a.{self::Class1::field2}{core::int});
@@ -174,7 +174,7 @@
f2c(field1: 42, field2: 87); // error
^^^^^^" in f2c{<inapplicable>}.(field1: 42, field2: 87);
};
- ({field2: core::int}) → self::Class1 f2d = #C10;
+ ({field2: core::int}) → self::Class1 f2d = #C18;
self::Class1 c5a = f2d(){({field2: core::int}) → self::Class1};
self::expect(1, c5a.{self::Class1::field1}{core::int});
self::expect(2, c5a.{self::Class1::field2}{core::int});
@@ -186,7 +186,7 @@
f2d(field1: 42, field2: 87); // error
^^^^^^" in f2d{<inapplicable>}.(field1: 42, field2: 87);
};
- () → self::Class1 f2e = #C11;
+ () → self::Class1 f2e = #C19;
self::Class1 c6a = f2e(){() → self::Class1};
self::expect(1, c6a.{self::Class1::field1}{core::int});
self::expect(2, c6a.{self::Class1::field2}{core::int});
@@ -206,7 +206,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C12}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C20}) → dynamic {
try {
f(){() → dynamic};
}
@@ -221,16 +221,24 @@
}
constants {
- #C1 = 1
- #C2 = 2
- #C3 = null
- #C4 = static-tearoff self::Class1::_#redirectPositionalSame#tearOff
- #C5 = static-tearoff self::Class1::_#redirectPositionalFewer1#tearOff
- #C6 = static-tearoff self::Class1::_#redirectPositionalFewer2#tearOff
- #C7 = static-tearoff self::Class1::_#redirectNamedSame#tearOff
- #C8 = static-tearoff self::Class1::_#redirectNamedReorder#tearOff
- #C9 = static-tearoff self::Class1::_#redirectNamedFewer1#tearOff
- #C10 = static-tearoff self::Class1::_#redirectNamedFewer2#tearOff
- #C11 = static-tearoff self::Class1::_#redirectNamedFewer3#tearOff
- #C12 = false
+ #C1 = constructor-tearoff self::Class1::redirectPositionalSame
+ #C2 = constructor-tearoff self::Class1::redirectPositionalFewer1
+ #C3 = constructor-tearoff self::Class1::redirectPositionalFewer2
+ #C4 = constructor-tearoff self::Class1::redirectNamedSame
+ #C5 = constructor-tearoff self::Class1::redirectNamedReorder
+ #C6 = constructor-tearoff self::Class1::redirectNamedFewer1
+ #C7 = constructor-tearoff self::Class1::redirectNamedFewer2
+ #C8 = constructor-tearoff self::Class1::redirectNamedFewer3
+ #C9 = 1
+ #C10 = 2
+ #C11 = null
+ #C12 = static-tearoff self::Class1::_#redirectPositionalSame#tearOff
+ #C13 = static-tearoff self::Class1::_#redirectPositionalFewer1#tearOff
+ #C14 = static-tearoff self::Class1::_#redirectPositionalFewer2#tearOff
+ #C15 = static-tearoff self::Class1::_#redirectNamedSame#tearOff
+ #C16 = static-tearoff self::Class1::_#redirectNamedReorder#tearOff
+ #C17 = static-tearoff self::Class1::_#redirectNamedFewer1#tearOff
+ #C18 = static-tearoff self::Class1::_#redirectNamedFewer2#tearOff
+ #C19 = static-tearoff self::Class1::_#redirectNamedFewer3#tearOff
+ #C20 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.outline.expect
index c33110b..7cf24c4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.outline.expect
@@ -56,3 +56,15 @@
;
static method throws(() → dynamic f, {core::bool inSoundModeOnly}) → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values_complex.dart:12:7 -> ConstructorTearOffConstant(Class1.redirectPositionalSame)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values_complex.dart:12:7 -> ConstructorTearOffConstant(Class1.redirectPositionalFewer1)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values_complex.dart:12:7 -> ConstructorTearOffConstant(Class1.redirectPositionalFewer2)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values_complex.dart:12:7 -> ConstructorTearOffConstant(Class1.redirectNamedSame)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values_complex.dart:12:7 -> ConstructorTearOffConstant(Class1.redirectNamedReorder)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values_complex.dart:12:7 -> ConstructorTearOffConstant(Class1.redirectNamedFewer1)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values_complex.dart:12:7 -> ConstructorTearOffConstant(Class1.redirectNamedFewer2)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off_default_values_complex.dart:12:7 -> ConstructorTearOffConstant(Class1.redirectNamedFewer3)
+Extra constant evaluation: evaluated: 49, effectively constant: 8
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.transformed.expect
index ffa443b..aa4af4d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.transformed.expect
@@ -43,44 +43,44 @@
class Class1 extends core::Object {
final field core::int field1;
final field core::int field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class1::redirectPositionalSame, self::Class1::redirectPositionalFewer1, self::Class1::redirectPositionalFewer2, self::Class1::redirectNamedSame, self::Class1::redirectNamedReorder, self::Class1::redirectNamedFewer1, self::Class1::redirectNamedFewer2, self::Class1::redirectNamedFewer3]/*isLegacy*/;
- constructor positional([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3, #C4, #C5, #C6, #C7, #C8]/*isLegacy*/;
+ constructor positional([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
: self::Class1::field1 = field1, self::Class1::field2 = field2, super core::Object::•()
;
- constructor named({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ constructor named({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
: self::Class1::field1 = field1, self::Class1::field2 = field2, super core::Object::•()
;
- static method _#positional#tearOff([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static method _#positional#tearOff([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
return new self::Class1::positional(field1, field2);
- static factory redirectPositionalSame([core::int field1 = #C3, core::int field2 = #C3]) → self::Class1
+ static factory redirectPositionalSame([core::int field1 = #C11, core::int field2 = #C11]) → self::Class1
return new self::Class1::positional(field1, field2);
- static method _#redirectPositionalSame#tearOff([core::int field1 = #C1, core::int field2 = #C2]) → self::Class1
+ static method _#redirectPositionalSame#tearOff([core::int field1 = #C9, core::int field2 = #C10]) → self::Class1
return new self::Class1::positional(field1, field2);
- static factory redirectPositionalFewer1([core::int field1 = #C3]) → self::Class1
+ static factory redirectPositionalFewer1([core::int field1 = #C11]) → self::Class1
return new self::Class1::positional(field1);
- static method _#redirectPositionalFewer1#tearOff([core::int field1 = #C1]) → self::Class1
+ static method _#redirectPositionalFewer1#tearOff([core::int field1 = #C9]) → self::Class1
return new self::Class1::positional(field1);
static factory redirectPositionalFewer2() → self::Class1
return new self::Class1::positional();
static method _#redirectPositionalFewer2#tearOff() → self::Class1
return new self::Class1::positional();
- static method _#named#tearOff({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ static method _#named#tearOff({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static factory redirectNamedSame({core::int field1 = #C3, core::int field2 = #C3}) → self::Class1
+ static factory redirectNamedSame({core::int field1 = #C11, core::int field2 = #C11}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static method _#redirectNamedSame#tearOff({core::int field1 = #C1, core::int field2 = #C2}) → self::Class1
+ static method _#redirectNamedSame#tearOff({core::int field1 = #C9, core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field1: field1, field2: field2);
- static factory redirectNamedReorder({core::int field2 = #C3, core::int field1 = #C3}) → self::Class1
+ static factory redirectNamedReorder({core::int field2 = #C11, core::int field1 = #C11}) → self::Class1
return new self::Class1::named(field2: field2, field1: field1);
- static method _#redirectNamedReorder#tearOff({core::int field2 = #C2, core::int field1 = #C1}) → self::Class1
+ static method _#redirectNamedReorder#tearOff({core::int field2 = #C10, core::int field1 = #C9}) → self::Class1
return new self::Class1::named(field2: field2, field1: field1);
- static factory redirectNamedFewer1({core::int field1 = #C3}) → self::Class1
+ static factory redirectNamedFewer1({core::int field1 = #C11}) → self::Class1
return new self::Class1::named(field1: field1);
- static method _#redirectNamedFewer1#tearOff({core::int field1 = #C1}) → self::Class1
+ static method _#redirectNamedFewer1#tearOff({core::int field1 = #C9}) → self::Class1
return new self::Class1::named(field1: field1);
- static factory redirectNamedFewer2({core::int field2 = #C3}) → self::Class1
+ static factory redirectNamedFewer2({core::int field2 = #C11}) → self::Class1
return new self::Class1::named(field2: field2);
- static method _#redirectNamedFewer2#tearOff({core::int field2 = #C2}) → self::Class1
+ static method _#redirectNamedFewer2#tearOff({core::int field2 = #C10}) → self::Class1
return new self::Class1::named(field2: field2);
static factory redirectNamedFewer3() → self::Class1
return new self::Class1::named();
@@ -93,7 +93,7 @@
self::testDefaultValues();
}
static method testDefaultValues() → dynamic {
- ([core::int, core::int]) → self::Class1 f1a = #C4;
+ ([core::int, core::int]) → self::Class1 f1a = #C12;
self::Class1 c1a = f1a(){([core::int, core::int]) → self::Class1};
self::expect(1, c1a.{self::Class1::field1}{core::int});
self::expect(2, c1a.{self::Class1::field2}{core::int});
@@ -103,7 +103,7 @@
self::Class1 c1c = f1a(42, 87){([core::int, core::int]) → self::Class1};
self::expect(42, c1c.{self::Class1::field1}{core::int});
self::expect(87, c1c.{self::Class1::field2}{core::int});
- ([core::int]) → self::Class1 f1b = #C5;
+ ([core::int]) → self::Class1 f1b = #C13;
self::Class1 c1d = f1b(){([core::int]) → self::Class1};
self::expect(1, c1d.{self::Class1::field1}{core::int});
self::expect(2, c1d.{self::Class1::field2}{core::int});
@@ -116,7 +116,7 @@
f1b(42, 87); // error
^" in f1b{<inapplicable>}.(42, 87);
};
- () → self::Class1 f1c = #C6;
+ () → self::Class1 f1c = #C14;
self::Class1 c1f = f1c(){() → self::Class1};
self::expect(1, c1f.{self::Class1::field1}{core::int});
self::expect(2, c1f.{self::Class1::field2}{core::int});
@@ -130,7 +130,7 @@
f1c(42, 87); // error
^" in f1c{<inapplicable>}.(42, 87);
};
- ({field1: core::int, field2: core::int}) → self::Class1 f2a = #C7;
+ ({field1: core::int, field2: core::int}) → self::Class1 f2a = #C15;
self::Class1 c2a = f2a(){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(1, c2a.{self::Class1::field1}{core::int});
self::expect(2, c2a.{self::Class1::field2}{core::int});
@@ -146,7 +146,7 @@
self::Class1 c2e = f2a(field2: 87, field1: 42){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(42, c2e.{self::Class1::field1}{core::int});
self::expect(87, c2e.{self::Class1::field2}{core::int});
- ({field1: core::int, field2: core::int}) → self::Class1 f2b = #C8;
+ ({field1: core::int, field2: core::int}) → self::Class1 f2b = #C16;
self::Class1 c3a = f2b(){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(1, c3a.{self::Class1::field1}{core::int});
self::expect(2, c3a.{self::Class1::field2}{core::int});
@@ -162,7 +162,7 @@
self::Class1 c3e = f2b(field2: 87, field1: 42){({field1: core::int, field2: core::int}) → self::Class1};
self::expect(42, c3e.{self::Class1::field1}{core::int});
self::expect(87, c3e.{self::Class1::field2}{core::int});
- ({field1: core::int}) → self::Class1 f2c = #C9;
+ ({field1: core::int}) → self::Class1 f2c = #C17;
self::Class1 c4a = f2c(){({field1: core::int}) → self::Class1};
self::expect(1, c4a.{self::Class1::field1}{core::int});
self::expect(2, c4a.{self::Class1::field2}{core::int});
@@ -174,7 +174,7 @@
f2c(field1: 42, field2: 87); // error
^^^^^^" in f2c{<inapplicable>}.(field1: 42, field2: 87);
};
- ({field2: core::int}) → self::Class1 f2d = #C10;
+ ({field2: core::int}) → self::Class1 f2d = #C18;
self::Class1 c5a = f2d(){({field2: core::int}) → self::Class1};
self::expect(1, c5a.{self::Class1::field1}{core::int});
self::expect(2, c5a.{self::Class1::field2}{core::int});
@@ -186,7 +186,7 @@
f2d(field1: 42, field2: 87); // error
^^^^^^" in f2d{<inapplicable>}.(field1: 42, field2: 87);
};
- () → self::Class1 f2e = #C11;
+ () → self::Class1 f2e = #C19;
self::Class1 c6a = f2e(){() → self::Class1};
self::expect(1, c6a.{self::Class1::field1}{core::int});
self::expect(2, c6a.{self::Class1::field2}{core::int});
@@ -206,7 +206,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C12}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C20}) → dynamic {
try {
f(){() → dynamic};
}
@@ -221,16 +221,24 @@
}
constants {
- #C1 = 1
- #C2 = 2
- #C3 = null
- #C4 = static-tearoff self::Class1::_#redirectPositionalSame#tearOff
- #C5 = static-tearoff self::Class1::_#redirectPositionalFewer1#tearOff
- #C6 = static-tearoff self::Class1::_#redirectPositionalFewer2#tearOff
- #C7 = static-tearoff self::Class1::_#redirectNamedSame#tearOff
- #C8 = static-tearoff self::Class1::_#redirectNamedReorder#tearOff
- #C9 = static-tearoff self::Class1::_#redirectNamedFewer1#tearOff
- #C10 = static-tearoff self::Class1::_#redirectNamedFewer2#tearOff
- #C11 = static-tearoff self::Class1::_#redirectNamedFewer3#tearOff
- #C12 = false
+ #C1 = constructor-tearoff self::Class1::redirectPositionalSame
+ #C2 = constructor-tearoff self::Class1::redirectPositionalFewer1
+ #C3 = constructor-tearoff self::Class1::redirectPositionalFewer2
+ #C4 = constructor-tearoff self::Class1::redirectNamedSame
+ #C5 = constructor-tearoff self::Class1::redirectNamedReorder
+ #C6 = constructor-tearoff self::Class1::redirectNamedFewer1
+ #C7 = constructor-tearoff self::Class1::redirectNamedFewer2
+ #C8 = constructor-tearoff self::Class1::redirectNamedFewer3
+ #C9 = 1
+ #C10 = 2
+ #C11 = null
+ #C12 = static-tearoff self::Class1::_#redirectPositionalSame#tearOff
+ #C13 = static-tearoff self::Class1::_#redirectPositionalFewer1#tearOff
+ #C14 = static-tearoff self::Class1::_#redirectPositionalFewer2#tearOff
+ #C15 = static-tearoff self::Class1::_#redirectNamedSame#tearOff
+ #C16 = static-tearoff self::Class1::_#redirectNamedReorder#tearOff
+ #C17 = static-tearoff self::Class1::_#redirectNamedFewer1#tearOff
+ #C18 = static-tearoff self::Class1::_#redirectNamedFewer2#tearOff
+ #C19 = static-tearoff self::Class1::_#redirectNamedFewer3#tearOff
+ #C20 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.strong.expect
index 3f74e4e..01b742d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.strong.expect
@@ -7,20 +7,20 @@
part typedef_from_part.dart;
typedef B<S extends core::Object? = dynamic> = self::Class<S%, core::int>;
class Class<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •(self::Class::S% a, self::Class::T% b) → self::Class<self::Class::S%, self::Class::T%>
: super core::Object::•()
;
- constructor named(self::Class::S% a, [self::Class::T? b = #C1, core::int c = #C2]) → self::Class<self::Class::S%, self::Class::T%>
+ constructor named(self::Class::S% a, [self::Class::T? b = #C2, core::int c = #C3]) → self::Class<self::Class::S%, self::Class::T%>
: super core::Object::•()
;
static method _#new#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#new#tearOff::S% a, self::Class::_#new#tearOff::T% b) → self::Class<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>
return new self::Class::•<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>(a, b);
- static method _#named#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#named#tearOff::S% a, [self::Class::_#named#tearOff::T? b = #C1, core::int c = #C2]) → self::Class<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>
+ static method _#named#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#named#tearOff::S% a, [self::Class::_#named#tearOff::T? b = #C2, core::int c = #C3]) → self::Class<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>
return new self::Class::named<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>(a, b, c);
- static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b = #C1, core::int c = #C2}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
+ static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b = #C2, core::int c = #C3}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
return new self::Class::named<self::Class::fact::S%, self::Class::fact::T%>(a, b, c);
- static method _#fact#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#fact#tearOff::S% a, {self::Class::_#fact#tearOff::T? b = #C1, core::int c = #C2}) → self::Class<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>
+ static method _#fact#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#fact#tearOff::S% a, {self::Class::_#fact#tearOff::T? b = #C2, core::int c = #C3}) → self::Class<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>
return self::Class::fact<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>(a, b: b, c: c);
static factory redirect<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::redirect::S% a) → self::Class<self::Class::redirect::S%, self::Class::redirect::T%>
return new self::Class::named<self::Class::redirect::S%, self::Class::redirect::T%>(a);
@@ -28,10 +28,10 @@
return new self::Class::named<self::Class::_#redirect#tearOff::S%, self::Class::_#redirect#tearOff::T%>(a);
}
static method main() → dynamic {
- <T extends core::Object? = dynamic>(T%, core::String) → self::Class<T%, core::String> aNew = #C3;
- <T extends core::Object? = dynamic>(T%, [core::String?, core::int]) → self::Class<T%, core::String> aNamed = #C4;
- <T extends core::Object? = dynamic>(T%, {b: core::String?, c: core::int}) → self::Class<T%, core::String> aFact = #C5;
- <T extends core::Object? = dynamic>(T%) → self::Class<T%, core::String> aRedirect = #C6;
+ <T extends core::Object? = dynamic>(T%, core::String) → self::Class<T%, core::String> aNew = #C4;
+ <T extends core::Object? = dynamic>(T%, [core::String?, core::int]) → self::Class<T%, core::String> aNamed = #C5;
+ <T extends core::Object? = dynamic>(T%, {b: core::String?, c: core::int}) → self::Class<T%, core::String> aFact = #C6;
+ <T extends core::Object? = dynamic>(T%) → self::Class<T%, core::String> aRedirect = #C7;
aNew<core::String>("", ""){(core::String, core::String) → self::Class<core::String, core::String>};
aNew<core::int>(0, ""){(core::int, core::String) → self::Class<core::int, core::String>};
aNamed<core::String>(""){(core::String, [core::String?, core::int]) → self::Class<core::String, core::String>};
@@ -56,10 +56,10 @@
aFactInst(true, c: 87){(core::bool, {b: core::String?, c: core::int}) → self::Class<core::bool, core::String>};
aFactInst(false, c: 87, b: ""){(core::bool, {b: core::String?, c: core::int}) → self::Class<core::bool, core::String>};
aRedirectInst(true){(core::bool) → self::Class<core::bool, core::String>};
- <S extends core::Object? = dynamic>(S%, core::int) → self::Class<S%, core::int> bNew = #C7;
- <S extends core::Object? = dynamic>(S%, [core::int?, core::int]) → self::Class<S%, core::int> bNamed = #C8;
- <S extends core::Object? = dynamic>(S%, {b: core::int?, c: core::int}) → self::Class<S%, core::int> bFact = #C9;
- <S extends core::Object? = dynamic>(S%) → self::Class<S%, core::int> bRedirect = #C10;
+ <S extends core::Object? = dynamic>(S%, core::int) → self::Class<S%, core::int> bNew = #C8;
+ <S extends core::Object? = dynamic>(S%, [core::int?, core::int]) → self::Class<S%, core::int> bNamed = #C9;
+ <S extends core::Object? = dynamic>(S%, {b: core::int?, c: core::int}) → self::Class<S%, core::int> bFact = #C10;
+ <S extends core::Object? = dynamic>(S%) → self::Class<S%, core::int> bRedirect = #C11;
bNew<core::String>("", 0){(core::String, core::int) → self::Class<core::String, core::int>};
bNew<core::int>(0, 0){(core::int, core::int) → self::Class<core::int, core::int>};
bNamed<core::String>(""){(core::String, [core::int?, core::int]) → self::Class<core::String, core::int>};
@@ -87,9 +87,9 @@
}
static method _#B#new#tearOff<S extends core::Object? = dynamic>(self::_#B#new#tearOff::S% a, core::int b) → self::Class<self::_#B#new#tearOff::S%, core::int>
return new self::Class::•<self::_#B#new#tearOff::S%, core::int>(a, b);
-static method _#B#named#tearOff<S extends core::Object? = dynamic>(self::_#B#named#tearOff::S% a, [core::int? b = #C1, core::int c = #C2]) → self::Class<self::_#B#named#tearOff::S%, core::int>
+static method _#B#named#tearOff<S extends core::Object? = dynamic>(self::_#B#named#tearOff::S% a, [core::int? b = #C2, core::int c = #C3]) → self::Class<self::_#B#named#tearOff::S%, core::int>
return new self::Class::named<self::_#B#named#tearOff::S%, core::int>(a, b, c);
-static method _#B#fact#tearOff<S extends core::Object? = dynamic>(self::_#B#fact#tearOff::S% a, {core::int? b = #C1, core::int c = #C2}) → self::Class<self::_#B#fact#tearOff::S%, core::int>
+static method _#B#fact#tearOff<S extends core::Object? = dynamic>(self::_#B#fact#tearOff::S% a, {core::int? b = #C2, core::int c = #C3}) → self::Class<self::_#B#fact#tearOff::S%, core::int>
return self::Class::fact<self::_#B#fact#tearOff::S%, core::int>(a, b: b, c: c);
static method _#B#redirect#tearOff<S extends core::Object? = dynamic>(self::_#B#redirect#tearOff::S% a) → self::Class<self::_#B#redirect#tearOff::S%, core::int>
return self::Class::_#redirect#tearOff<self::_#B#redirect#tearOff::S%, core::int>(a);
@@ -104,22 +104,23 @@
typedef A<T extends core::Object? = dynamic> = self::Class<T%, core::String>;
static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#new#tearOff<T extends core::Object? = dynamic>(self2::_#A#new#tearOff::T% a, core::String b) → self::Class<self2::_#A#new#tearOff::T%, core::String>
return new self::Class::•<self2::_#A#new#tearOff::T%, core::String>(a, b);
-static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#named#tearOff<T extends core::Object? = dynamic>(self2::_#A#named#tearOff::T% a, [core::String? b = #C1, core::int c = #C2]) → self::Class<self2::_#A#named#tearOff::T%, core::String>
+static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#named#tearOff<T extends core::Object? = dynamic>(self2::_#A#named#tearOff::T% a, [core::String? b = #C2, core::int c = #C3]) → self::Class<self2::_#A#named#tearOff::T%, core::String>
return new self::Class::named<self2::_#A#named#tearOff::T%, core::String>(a, b, c);
-static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#fact#tearOff<T extends core::Object? = dynamic>(self2::_#A#fact#tearOff::T% a, {core::String? b = #C1, core::int c = #C2}) → self::Class<self2::_#A#fact#tearOff::T%, core::String>
+static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#fact#tearOff<T extends core::Object? = dynamic>(self2::_#A#fact#tearOff::T% a, {core::String? b = #C2, core::int c = #C3}) → self::Class<self2::_#A#fact#tearOff::T%, core::String>
return self::Class::fact<self2::_#A#fact#tearOff::T%, core::String>(a, b: b, c: c);
static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#redirect#tearOff<T extends core::Object? = dynamic>(self2::_#A#redirect#tearOff::T% a) → self::Class<self2::_#A#redirect#tearOff::T%, core::String>
return self::Class::_#redirect#tearOff<self2::_#A#redirect#tearOff::T%, core::String>(a);
constants {
- #C1 = null
- #C2 = 42
- #C3 = static-tearoff self2::_#A#new#tearOff
- #C4 = static-tearoff self2::_#A#named#tearOff
- #C5 = static-tearoff self2::_#A#fact#tearOff
- #C6 = static-tearoff self2::_#A#redirect#tearOff
- #C7 = static-tearoff self::_#B#new#tearOff
- #C8 = static-tearoff self::_#B#named#tearOff
- #C9 = static-tearoff self::_#B#fact#tearOff
- #C10 = static-tearoff self::_#B#redirect#tearOff
+ #C1 = constructor-tearoff self::Class::redirect
+ #C2 = null
+ #C3 = 42
+ #C4 = static-tearoff self2::_#A#new#tearOff
+ #C5 = static-tearoff self2::_#A#named#tearOff
+ #C6 = static-tearoff self2::_#A#fact#tearOff
+ #C7 = static-tearoff self2::_#A#redirect#tearOff
+ #C8 = static-tearoff self::_#B#new#tearOff
+ #C9 = static-tearoff self::_#B#named#tearOff
+ #C10 = static-tearoff self::_#B#fact#tearOff
+ #C11 = static-tearoff self::_#B#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.strong.transformed.expect
index 3f74e4e..01b742d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.strong.transformed.expect
@@ -7,20 +7,20 @@
part typedef_from_part.dart;
typedef B<S extends core::Object? = dynamic> = self::Class<S%, core::int>;
class Class<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •(self::Class::S% a, self::Class::T% b) → self::Class<self::Class::S%, self::Class::T%>
: super core::Object::•()
;
- constructor named(self::Class::S% a, [self::Class::T? b = #C1, core::int c = #C2]) → self::Class<self::Class::S%, self::Class::T%>
+ constructor named(self::Class::S% a, [self::Class::T? b = #C2, core::int c = #C3]) → self::Class<self::Class::S%, self::Class::T%>
: super core::Object::•()
;
static method _#new#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#new#tearOff::S% a, self::Class::_#new#tearOff::T% b) → self::Class<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>
return new self::Class::•<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>(a, b);
- static method _#named#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#named#tearOff::S% a, [self::Class::_#named#tearOff::T? b = #C1, core::int c = #C2]) → self::Class<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>
+ static method _#named#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#named#tearOff::S% a, [self::Class::_#named#tearOff::T? b = #C2, core::int c = #C3]) → self::Class<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>
return new self::Class::named<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>(a, b, c);
- static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b = #C1, core::int c = #C2}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
+ static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b = #C2, core::int c = #C3}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
return new self::Class::named<self::Class::fact::S%, self::Class::fact::T%>(a, b, c);
- static method _#fact#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#fact#tearOff::S% a, {self::Class::_#fact#tearOff::T? b = #C1, core::int c = #C2}) → self::Class<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>
+ static method _#fact#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#fact#tearOff::S% a, {self::Class::_#fact#tearOff::T? b = #C2, core::int c = #C3}) → self::Class<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>
return self::Class::fact<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>(a, b: b, c: c);
static factory redirect<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::redirect::S% a) → self::Class<self::Class::redirect::S%, self::Class::redirect::T%>
return new self::Class::named<self::Class::redirect::S%, self::Class::redirect::T%>(a);
@@ -28,10 +28,10 @@
return new self::Class::named<self::Class::_#redirect#tearOff::S%, self::Class::_#redirect#tearOff::T%>(a);
}
static method main() → dynamic {
- <T extends core::Object? = dynamic>(T%, core::String) → self::Class<T%, core::String> aNew = #C3;
- <T extends core::Object? = dynamic>(T%, [core::String?, core::int]) → self::Class<T%, core::String> aNamed = #C4;
- <T extends core::Object? = dynamic>(T%, {b: core::String?, c: core::int}) → self::Class<T%, core::String> aFact = #C5;
- <T extends core::Object? = dynamic>(T%) → self::Class<T%, core::String> aRedirect = #C6;
+ <T extends core::Object? = dynamic>(T%, core::String) → self::Class<T%, core::String> aNew = #C4;
+ <T extends core::Object? = dynamic>(T%, [core::String?, core::int]) → self::Class<T%, core::String> aNamed = #C5;
+ <T extends core::Object? = dynamic>(T%, {b: core::String?, c: core::int}) → self::Class<T%, core::String> aFact = #C6;
+ <T extends core::Object? = dynamic>(T%) → self::Class<T%, core::String> aRedirect = #C7;
aNew<core::String>("", ""){(core::String, core::String) → self::Class<core::String, core::String>};
aNew<core::int>(0, ""){(core::int, core::String) → self::Class<core::int, core::String>};
aNamed<core::String>(""){(core::String, [core::String?, core::int]) → self::Class<core::String, core::String>};
@@ -56,10 +56,10 @@
aFactInst(true, c: 87){(core::bool, {b: core::String?, c: core::int}) → self::Class<core::bool, core::String>};
aFactInst(false, c: 87, b: ""){(core::bool, {b: core::String?, c: core::int}) → self::Class<core::bool, core::String>};
aRedirectInst(true){(core::bool) → self::Class<core::bool, core::String>};
- <S extends core::Object? = dynamic>(S%, core::int) → self::Class<S%, core::int> bNew = #C7;
- <S extends core::Object? = dynamic>(S%, [core::int?, core::int]) → self::Class<S%, core::int> bNamed = #C8;
- <S extends core::Object? = dynamic>(S%, {b: core::int?, c: core::int}) → self::Class<S%, core::int> bFact = #C9;
- <S extends core::Object? = dynamic>(S%) → self::Class<S%, core::int> bRedirect = #C10;
+ <S extends core::Object? = dynamic>(S%, core::int) → self::Class<S%, core::int> bNew = #C8;
+ <S extends core::Object? = dynamic>(S%, [core::int?, core::int]) → self::Class<S%, core::int> bNamed = #C9;
+ <S extends core::Object? = dynamic>(S%, {b: core::int?, c: core::int}) → self::Class<S%, core::int> bFact = #C10;
+ <S extends core::Object? = dynamic>(S%) → self::Class<S%, core::int> bRedirect = #C11;
bNew<core::String>("", 0){(core::String, core::int) → self::Class<core::String, core::int>};
bNew<core::int>(0, 0){(core::int, core::int) → self::Class<core::int, core::int>};
bNamed<core::String>(""){(core::String, [core::int?, core::int]) → self::Class<core::String, core::int>};
@@ -87,9 +87,9 @@
}
static method _#B#new#tearOff<S extends core::Object? = dynamic>(self::_#B#new#tearOff::S% a, core::int b) → self::Class<self::_#B#new#tearOff::S%, core::int>
return new self::Class::•<self::_#B#new#tearOff::S%, core::int>(a, b);
-static method _#B#named#tearOff<S extends core::Object? = dynamic>(self::_#B#named#tearOff::S% a, [core::int? b = #C1, core::int c = #C2]) → self::Class<self::_#B#named#tearOff::S%, core::int>
+static method _#B#named#tearOff<S extends core::Object? = dynamic>(self::_#B#named#tearOff::S% a, [core::int? b = #C2, core::int c = #C3]) → self::Class<self::_#B#named#tearOff::S%, core::int>
return new self::Class::named<self::_#B#named#tearOff::S%, core::int>(a, b, c);
-static method _#B#fact#tearOff<S extends core::Object? = dynamic>(self::_#B#fact#tearOff::S% a, {core::int? b = #C1, core::int c = #C2}) → self::Class<self::_#B#fact#tearOff::S%, core::int>
+static method _#B#fact#tearOff<S extends core::Object? = dynamic>(self::_#B#fact#tearOff::S% a, {core::int? b = #C2, core::int c = #C3}) → self::Class<self::_#B#fact#tearOff::S%, core::int>
return self::Class::fact<self::_#B#fact#tearOff::S%, core::int>(a, b: b, c: c);
static method _#B#redirect#tearOff<S extends core::Object? = dynamic>(self::_#B#redirect#tearOff::S% a) → self::Class<self::_#B#redirect#tearOff::S%, core::int>
return self::Class::_#redirect#tearOff<self::_#B#redirect#tearOff::S%, core::int>(a);
@@ -104,22 +104,23 @@
typedef A<T extends core::Object? = dynamic> = self::Class<T%, core::String>;
static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#new#tearOff<T extends core::Object? = dynamic>(self2::_#A#new#tearOff::T% a, core::String b) → self::Class<self2::_#A#new#tearOff::T%, core::String>
return new self::Class::•<self2::_#A#new#tearOff::T%, core::String>(a, b);
-static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#named#tearOff<T extends core::Object? = dynamic>(self2::_#A#named#tearOff::T% a, [core::String? b = #C1, core::int c = #C2]) → self::Class<self2::_#A#named#tearOff::T%, core::String>
+static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#named#tearOff<T extends core::Object? = dynamic>(self2::_#A#named#tearOff::T% a, [core::String? b = #C2, core::int c = #C3]) → self::Class<self2::_#A#named#tearOff::T%, core::String>
return new self::Class::named<self2::_#A#named#tearOff::T%, core::String>(a, b, c);
-static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#fact#tearOff<T extends core::Object? = dynamic>(self2::_#A#fact#tearOff::T% a, {core::String? b = #C1, core::int c = #C2}) → self::Class<self2::_#A#fact#tearOff::T%, core::String>
+static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#fact#tearOff<T extends core::Object? = dynamic>(self2::_#A#fact#tearOff::T% a, {core::String? b = #C2, core::int c = #C3}) → self::Class<self2::_#A#fact#tearOff::T%, core::String>
return self::Class::fact<self2::_#A#fact#tearOff::T%, core::String>(a, b: b, c: c);
static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#redirect#tearOff<T extends core::Object? = dynamic>(self2::_#A#redirect#tearOff::T% a) → self::Class<self2::_#A#redirect#tearOff::T%, core::String>
return self::Class::_#redirect#tearOff<self2::_#A#redirect#tearOff::T%, core::String>(a);
constants {
- #C1 = null
- #C2 = 42
- #C3 = static-tearoff self2::_#A#new#tearOff
- #C4 = static-tearoff self2::_#A#named#tearOff
- #C5 = static-tearoff self2::_#A#fact#tearOff
- #C6 = static-tearoff self2::_#A#redirect#tearOff
- #C7 = static-tearoff self::_#B#new#tearOff
- #C8 = static-tearoff self::_#B#named#tearOff
- #C9 = static-tearoff self::_#B#fact#tearOff
- #C10 = static-tearoff self::_#B#redirect#tearOff
+ #C1 = constructor-tearoff self::Class::redirect
+ #C2 = null
+ #C3 = 42
+ #C4 = static-tearoff self2::_#A#new#tearOff
+ #C5 = static-tearoff self2::_#A#named#tearOff
+ #C6 = static-tearoff self2::_#A#fact#tearOff
+ #C7 = static-tearoff self2::_#A#redirect#tearOff
+ #C8 = static-tearoff self::_#B#new#tearOff
+ #C9 = static-tearoff self::_#B#named#tearOff
+ #C10 = static-tearoff self::_#B#fact#tearOff
+ #C11 = static-tearoff self::_#B#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.expect
index 3f74e4e..01b742d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.expect
@@ -7,20 +7,20 @@
part typedef_from_part.dart;
typedef B<S extends core::Object? = dynamic> = self::Class<S%, core::int>;
class Class<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •(self::Class::S% a, self::Class::T% b) → self::Class<self::Class::S%, self::Class::T%>
: super core::Object::•()
;
- constructor named(self::Class::S% a, [self::Class::T? b = #C1, core::int c = #C2]) → self::Class<self::Class::S%, self::Class::T%>
+ constructor named(self::Class::S% a, [self::Class::T? b = #C2, core::int c = #C3]) → self::Class<self::Class::S%, self::Class::T%>
: super core::Object::•()
;
static method _#new#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#new#tearOff::S% a, self::Class::_#new#tearOff::T% b) → self::Class<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>
return new self::Class::•<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>(a, b);
- static method _#named#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#named#tearOff::S% a, [self::Class::_#named#tearOff::T? b = #C1, core::int c = #C2]) → self::Class<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>
+ static method _#named#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#named#tearOff::S% a, [self::Class::_#named#tearOff::T? b = #C2, core::int c = #C3]) → self::Class<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>
return new self::Class::named<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>(a, b, c);
- static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b = #C1, core::int c = #C2}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
+ static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b = #C2, core::int c = #C3}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
return new self::Class::named<self::Class::fact::S%, self::Class::fact::T%>(a, b, c);
- static method _#fact#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#fact#tearOff::S% a, {self::Class::_#fact#tearOff::T? b = #C1, core::int c = #C2}) → self::Class<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>
+ static method _#fact#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#fact#tearOff::S% a, {self::Class::_#fact#tearOff::T? b = #C2, core::int c = #C3}) → self::Class<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>
return self::Class::fact<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>(a, b: b, c: c);
static factory redirect<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::redirect::S% a) → self::Class<self::Class::redirect::S%, self::Class::redirect::T%>
return new self::Class::named<self::Class::redirect::S%, self::Class::redirect::T%>(a);
@@ -28,10 +28,10 @@
return new self::Class::named<self::Class::_#redirect#tearOff::S%, self::Class::_#redirect#tearOff::T%>(a);
}
static method main() → dynamic {
- <T extends core::Object? = dynamic>(T%, core::String) → self::Class<T%, core::String> aNew = #C3;
- <T extends core::Object? = dynamic>(T%, [core::String?, core::int]) → self::Class<T%, core::String> aNamed = #C4;
- <T extends core::Object? = dynamic>(T%, {b: core::String?, c: core::int}) → self::Class<T%, core::String> aFact = #C5;
- <T extends core::Object? = dynamic>(T%) → self::Class<T%, core::String> aRedirect = #C6;
+ <T extends core::Object? = dynamic>(T%, core::String) → self::Class<T%, core::String> aNew = #C4;
+ <T extends core::Object? = dynamic>(T%, [core::String?, core::int]) → self::Class<T%, core::String> aNamed = #C5;
+ <T extends core::Object? = dynamic>(T%, {b: core::String?, c: core::int}) → self::Class<T%, core::String> aFact = #C6;
+ <T extends core::Object? = dynamic>(T%) → self::Class<T%, core::String> aRedirect = #C7;
aNew<core::String>("", ""){(core::String, core::String) → self::Class<core::String, core::String>};
aNew<core::int>(0, ""){(core::int, core::String) → self::Class<core::int, core::String>};
aNamed<core::String>(""){(core::String, [core::String?, core::int]) → self::Class<core::String, core::String>};
@@ -56,10 +56,10 @@
aFactInst(true, c: 87){(core::bool, {b: core::String?, c: core::int}) → self::Class<core::bool, core::String>};
aFactInst(false, c: 87, b: ""){(core::bool, {b: core::String?, c: core::int}) → self::Class<core::bool, core::String>};
aRedirectInst(true){(core::bool) → self::Class<core::bool, core::String>};
- <S extends core::Object? = dynamic>(S%, core::int) → self::Class<S%, core::int> bNew = #C7;
- <S extends core::Object? = dynamic>(S%, [core::int?, core::int]) → self::Class<S%, core::int> bNamed = #C8;
- <S extends core::Object? = dynamic>(S%, {b: core::int?, c: core::int}) → self::Class<S%, core::int> bFact = #C9;
- <S extends core::Object? = dynamic>(S%) → self::Class<S%, core::int> bRedirect = #C10;
+ <S extends core::Object? = dynamic>(S%, core::int) → self::Class<S%, core::int> bNew = #C8;
+ <S extends core::Object? = dynamic>(S%, [core::int?, core::int]) → self::Class<S%, core::int> bNamed = #C9;
+ <S extends core::Object? = dynamic>(S%, {b: core::int?, c: core::int}) → self::Class<S%, core::int> bFact = #C10;
+ <S extends core::Object? = dynamic>(S%) → self::Class<S%, core::int> bRedirect = #C11;
bNew<core::String>("", 0){(core::String, core::int) → self::Class<core::String, core::int>};
bNew<core::int>(0, 0){(core::int, core::int) → self::Class<core::int, core::int>};
bNamed<core::String>(""){(core::String, [core::int?, core::int]) → self::Class<core::String, core::int>};
@@ -87,9 +87,9 @@
}
static method _#B#new#tearOff<S extends core::Object? = dynamic>(self::_#B#new#tearOff::S% a, core::int b) → self::Class<self::_#B#new#tearOff::S%, core::int>
return new self::Class::•<self::_#B#new#tearOff::S%, core::int>(a, b);
-static method _#B#named#tearOff<S extends core::Object? = dynamic>(self::_#B#named#tearOff::S% a, [core::int? b = #C1, core::int c = #C2]) → self::Class<self::_#B#named#tearOff::S%, core::int>
+static method _#B#named#tearOff<S extends core::Object? = dynamic>(self::_#B#named#tearOff::S% a, [core::int? b = #C2, core::int c = #C3]) → self::Class<self::_#B#named#tearOff::S%, core::int>
return new self::Class::named<self::_#B#named#tearOff::S%, core::int>(a, b, c);
-static method _#B#fact#tearOff<S extends core::Object? = dynamic>(self::_#B#fact#tearOff::S% a, {core::int? b = #C1, core::int c = #C2}) → self::Class<self::_#B#fact#tearOff::S%, core::int>
+static method _#B#fact#tearOff<S extends core::Object? = dynamic>(self::_#B#fact#tearOff::S% a, {core::int? b = #C2, core::int c = #C3}) → self::Class<self::_#B#fact#tearOff::S%, core::int>
return self::Class::fact<self::_#B#fact#tearOff::S%, core::int>(a, b: b, c: c);
static method _#B#redirect#tearOff<S extends core::Object? = dynamic>(self::_#B#redirect#tearOff::S% a) → self::Class<self::_#B#redirect#tearOff::S%, core::int>
return self::Class::_#redirect#tearOff<self::_#B#redirect#tearOff::S%, core::int>(a);
@@ -104,22 +104,23 @@
typedef A<T extends core::Object? = dynamic> = self::Class<T%, core::String>;
static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#new#tearOff<T extends core::Object? = dynamic>(self2::_#A#new#tearOff::T% a, core::String b) → self::Class<self2::_#A#new#tearOff::T%, core::String>
return new self::Class::•<self2::_#A#new#tearOff::T%, core::String>(a, b);
-static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#named#tearOff<T extends core::Object? = dynamic>(self2::_#A#named#tearOff::T% a, [core::String? b = #C1, core::int c = #C2]) → self::Class<self2::_#A#named#tearOff::T%, core::String>
+static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#named#tearOff<T extends core::Object? = dynamic>(self2::_#A#named#tearOff::T% a, [core::String? b = #C2, core::int c = #C3]) → self::Class<self2::_#A#named#tearOff::T%, core::String>
return new self::Class::named<self2::_#A#named#tearOff::T%, core::String>(a, b, c);
-static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#fact#tearOff<T extends core::Object? = dynamic>(self2::_#A#fact#tearOff::T% a, {core::String? b = #C1, core::int c = #C2}) → self::Class<self2::_#A#fact#tearOff::T%, core::String>
+static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#fact#tearOff<T extends core::Object? = dynamic>(self2::_#A#fact#tearOff::T% a, {core::String? b = #C2, core::int c = #C3}) → self::Class<self2::_#A#fact#tearOff::T%, core::String>
return self::Class::fact<self2::_#A#fact#tearOff::T%, core::String>(a, b: b, c: c);
static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#redirect#tearOff<T extends core::Object? = dynamic>(self2::_#A#redirect#tearOff::T% a) → self::Class<self2::_#A#redirect#tearOff::T%, core::String>
return self::Class::_#redirect#tearOff<self2::_#A#redirect#tearOff::T%, core::String>(a);
constants {
- #C1 = null
- #C2 = 42
- #C3 = static-tearoff self2::_#A#new#tearOff
- #C4 = static-tearoff self2::_#A#named#tearOff
- #C5 = static-tearoff self2::_#A#fact#tearOff
- #C6 = static-tearoff self2::_#A#redirect#tearOff
- #C7 = static-tearoff self::_#B#new#tearOff
- #C8 = static-tearoff self::_#B#named#tearOff
- #C9 = static-tearoff self::_#B#fact#tearOff
- #C10 = static-tearoff self::_#B#redirect#tearOff
+ #C1 = constructor-tearoff self::Class::redirect
+ #C2 = null
+ #C3 = 42
+ #C4 = static-tearoff self2::_#A#new#tearOff
+ #C5 = static-tearoff self2::_#A#named#tearOff
+ #C6 = static-tearoff self2::_#A#fact#tearOff
+ #C7 = static-tearoff self2::_#A#redirect#tearOff
+ #C8 = static-tearoff self::_#B#new#tearOff
+ #C9 = static-tearoff self::_#B#named#tearOff
+ #C10 = static-tearoff self::_#B#fact#tearOff
+ #C11 = static-tearoff self::_#B#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect
index d0d9059..9f1b30a 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect
@@ -52,3 +52,8 @@
return self::Class::fact<self2::_#A#fact#tearOff::T%, core::String>(a, b: b, c: c);
static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#redirect#tearOff<T extends core::Object? = dynamic>(self2::_#A#redirect#tearOff::T% a) → self::Class<self2::_#A#redirect#tearOff::T%, core::String>
return self::Class::_#redirect#tearOff<self2::_#A#redirect#tearOff::T%, core::String>(a);
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///typedef_from.dart:75:7 -> ConstructorTearOffConstant(Class.redirect)
+Extra constant evaluation: evaluated: 43, effectively constant: 1
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.transformed.expect
index 3f74e4e..01b742d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.transformed.expect
@@ -7,20 +7,20 @@
part typedef_from_part.dart;
typedef B<S extends core::Object? = dynamic> = self::Class<S%, core::int>;
class Class<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •(self::Class::S% a, self::Class::T% b) → self::Class<self::Class::S%, self::Class::T%>
: super core::Object::•()
;
- constructor named(self::Class::S% a, [self::Class::T? b = #C1, core::int c = #C2]) → self::Class<self::Class::S%, self::Class::T%>
+ constructor named(self::Class::S% a, [self::Class::T? b = #C2, core::int c = #C3]) → self::Class<self::Class::S%, self::Class::T%>
: super core::Object::•()
;
static method _#new#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#new#tearOff::S% a, self::Class::_#new#tearOff::T% b) → self::Class<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>
return new self::Class::•<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>(a, b);
- static method _#named#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#named#tearOff::S% a, [self::Class::_#named#tearOff::T? b = #C1, core::int c = #C2]) → self::Class<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>
+ static method _#named#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#named#tearOff::S% a, [self::Class::_#named#tearOff::T? b = #C2, core::int c = #C3]) → self::Class<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>
return new self::Class::named<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>(a, b, c);
- static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b = #C1, core::int c = #C2}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
+ static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b = #C2, core::int c = #C3}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
return new self::Class::named<self::Class::fact::S%, self::Class::fact::T%>(a, b, c);
- static method _#fact#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#fact#tearOff::S% a, {self::Class::_#fact#tearOff::T? b = #C1, core::int c = #C2}) → self::Class<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>
+ static method _#fact#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#fact#tearOff::S% a, {self::Class::_#fact#tearOff::T? b = #C2, core::int c = #C3}) → self::Class<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>
return self::Class::fact<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>(a, b: b, c: c);
static factory redirect<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::redirect::S% a) → self::Class<self::Class::redirect::S%, self::Class::redirect::T%>
return new self::Class::named<self::Class::redirect::S%, self::Class::redirect::T%>(a);
@@ -28,10 +28,10 @@
return new self::Class::named<self::Class::_#redirect#tearOff::S%, self::Class::_#redirect#tearOff::T%>(a);
}
static method main() → dynamic {
- <T extends core::Object? = dynamic>(T%, core::String) → self::Class<T%, core::String> aNew = #C3;
- <T extends core::Object? = dynamic>(T%, [core::String?, core::int]) → self::Class<T%, core::String> aNamed = #C4;
- <T extends core::Object? = dynamic>(T%, {b: core::String?, c: core::int}) → self::Class<T%, core::String> aFact = #C5;
- <T extends core::Object? = dynamic>(T%) → self::Class<T%, core::String> aRedirect = #C6;
+ <T extends core::Object? = dynamic>(T%, core::String) → self::Class<T%, core::String> aNew = #C4;
+ <T extends core::Object? = dynamic>(T%, [core::String?, core::int]) → self::Class<T%, core::String> aNamed = #C5;
+ <T extends core::Object? = dynamic>(T%, {b: core::String?, c: core::int}) → self::Class<T%, core::String> aFact = #C6;
+ <T extends core::Object? = dynamic>(T%) → self::Class<T%, core::String> aRedirect = #C7;
aNew<core::String>("", ""){(core::String, core::String) → self::Class<core::String, core::String>};
aNew<core::int>(0, ""){(core::int, core::String) → self::Class<core::int, core::String>};
aNamed<core::String>(""){(core::String, [core::String?, core::int]) → self::Class<core::String, core::String>};
@@ -56,10 +56,10 @@
aFactInst(true, c: 87){(core::bool, {b: core::String?, c: core::int}) → self::Class<core::bool, core::String>};
aFactInst(false, c: 87, b: ""){(core::bool, {b: core::String?, c: core::int}) → self::Class<core::bool, core::String>};
aRedirectInst(true){(core::bool) → self::Class<core::bool, core::String>};
- <S extends core::Object? = dynamic>(S%, core::int) → self::Class<S%, core::int> bNew = #C7;
- <S extends core::Object? = dynamic>(S%, [core::int?, core::int]) → self::Class<S%, core::int> bNamed = #C8;
- <S extends core::Object? = dynamic>(S%, {b: core::int?, c: core::int}) → self::Class<S%, core::int> bFact = #C9;
- <S extends core::Object? = dynamic>(S%) → self::Class<S%, core::int> bRedirect = #C10;
+ <S extends core::Object? = dynamic>(S%, core::int) → self::Class<S%, core::int> bNew = #C8;
+ <S extends core::Object? = dynamic>(S%, [core::int?, core::int]) → self::Class<S%, core::int> bNamed = #C9;
+ <S extends core::Object? = dynamic>(S%, {b: core::int?, c: core::int}) → self::Class<S%, core::int> bFact = #C10;
+ <S extends core::Object? = dynamic>(S%) → self::Class<S%, core::int> bRedirect = #C11;
bNew<core::String>("", 0){(core::String, core::int) → self::Class<core::String, core::int>};
bNew<core::int>(0, 0){(core::int, core::int) → self::Class<core::int, core::int>};
bNamed<core::String>(""){(core::String, [core::int?, core::int]) → self::Class<core::String, core::int>};
@@ -87,9 +87,9 @@
}
static method _#B#new#tearOff<S extends core::Object? = dynamic>(self::_#B#new#tearOff::S% a, core::int b) → self::Class<self::_#B#new#tearOff::S%, core::int>
return new self::Class::•<self::_#B#new#tearOff::S%, core::int>(a, b);
-static method _#B#named#tearOff<S extends core::Object? = dynamic>(self::_#B#named#tearOff::S% a, [core::int? b = #C1, core::int c = #C2]) → self::Class<self::_#B#named#tearOff::S%, core::int>
+static method _#B#named#tearOff<S extends core::Object? = dynamic>(self::_#B#named#tearOff::S% a, [core::int? b = #C2, core::int c = #C3]) → self::Class<self::_#B#named#tearOff::S%, core::int>
return new self::Class::named<self::_#B#named#tearOff::S%, core::int>(a, b, c);
-static method _#B#fact#tearOff<S extends core::Object? = dynamic>(self::_#B#fact#tearOff::S% a, {core::int? b = #C1, core::int c = #C2}) → self::Class<self::_#B#fact#tearOff::S%, core::int>
+static method _#B#fact#tearOff<S extends core::Object? = dynamic>(self::_#B#fact#tearOff::S% a, {core::int? b = #C2, core::int c = #C3}) → self::Class<self::_#B#fact#tearOff::S%, core::int>
return self::Class::fact<self::_#B#fact#tearOff::S%, core::int>(a, b: b, c: c);
static method _#B#redirect#tearOff<S extends core::Object? = dynamic>(self::_#B#redirect#tearOff::S% a) → self::Class<self::_#B#redirect#tearOff::S%, core::int>
return self::Class::_#redirect#tearOff<self::_#B#redirect#tearOff::S%, core::int>(a);
@@ -104,22 +104,23 @@
typedef A<T extends core::Object? = dynamic> = self::Class<T%, core::String>;
static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#new#tearOff<T extends core::Object? = dynamic>(self2::_#A#new#tearOff::T% a, core::String b) → self::Class<self2::_#A#new#tearOff::T%, core::String>
return new self::Class::•<self2::_#A#new#tearOff::T%, core::String>(a, b);
-static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#named#tearOff<T extends core::Object? = dynamic>(self2::_#A#named#tearOff::T% a, [core::String? b = #C1, core::int c = #C2]) → self::Class<self2::_#A#named#tearOff::T%, core::String>
+static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#named#tearOff<T extends core::Object? = dynamic>(self2::_#A#named#tearOff::T% a, [core::String? b = #C2, core::int c = #C3]) → self::Class<self2::_#A#named#tearOff::T%, core::String>
return new self::Class::named<self2::_#A#named#tearOff::T%, core::String>(a, b, c);
-static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#fact#tearOff<T extends core::Object? = dynamic>(self2::_#A#fact#tearOff::T% a, {core::String? b = #C1, core::int c = #C2}) → self::Class<self2::_#A#fact#tearOff::T%, core::String>
+static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#fact#tearOff<T extends core::Object? = dynamic>(self2::_#A#fact#tearOff::T% a, {core::String? b = #C2, core::int c = #C3}) → self::Class<self2::_#A#fact#tearOff::T%, core::String>
return self::Class::fact<self2::_#A#fact#tearOff::T%, core::String>(a, b: b, c: c);
static method /* from org-dartlang-testcase:///typedef_from.dart */ _#A#redirect#tearOff<T extends core::Object? = dynamic>(self2::_#A#redirect#tearOff::T% a) → self::Class<self2::_#A#redirect#tearOff::T%, core::String>
return self::Class::_#redirect#tearOff<self2::_#A#redirect#tearOff::T%, core::String>(a);
constants {
- #C1 = null
- #C2 = 42
- #C3 = static-tearoff self2::_#A#new#tearOff
- #C4 = static-tearoff self2::_#A#named#tearOff
- #C5 = static-tearoff self2::_#A#fact#tearOff
- #C6 = static-tearoff self2::_#A#redirect#tearOff
- #C7 = static-tearoff self::_#B#new#tearOff
- #C8 = static-tearoff self::_#B#named#tearOff
- #C9 = static-tearoff self::_#B#fact#tearOff
- #C10 = static-tearoff self::_#B#redirect#tearOff
+ #C1 = constructor-tearoff self::Class::redirect
+ #C2 = null
+ #C3 = 42
+ #C4 = static-tearoff self2::_#A#new#tearOff
+ #C5 = static-tearoff self2::_#A#named#tearOff
+ #C6 = static-tearoff self2::_#A#fact#tearOff
+ #C7 = static-tearoff self2::_#A#redirect#tearOff
+ #C8 = static-tearoff self::_#B#new#tearOff
+ #C9 = static-tearoff self::_#B#named#tearOff
+ #C10 = static-tearoff self::_#B#fact#tearOff
+ #C11 = static-tearoff self::_#B#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.strong.expect
index 90eb13b..402ad31 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.strong.expect
@@ -84,7 +84,7 @@
typedef F<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
typedef G<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C11]/*isLegacy*/;
constructor •() → mai::A<mai::A::T%>
: super core::Object::•()
;
@@ -108,10 +108,10 @@
static field dynamic F_named_lib = #C6;
static field dynamic F_fact_lib = #C7;
static field dynamic F_redirect_lib = #C8;
-static field dynamic G_new_lib = #C11;
-static field dynamic G_named_lib = #C12;
-static field dynamic G_fact_lib = #C13;
-static field dynamic G_redirect_lib = #C14;
+static field dynamic G_new_lib = #C12;
+static field dynamic G_named_lib = #C13;
+static field dynamic G_fact_lib = #C14;
+static field dynamic G_redirect_lib = #C15;
static method _#F#new#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → mai::A<mai::_#F#new#tearOff::Y%>
return new mai::A::•<mai::_#F#new#tearOff::Y%>();
static method _#F#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(mai::_#F#named#tearOff::Y% a, [core::int? b = #C9]) → mai::A<mai::_#F#named#tearOff::Y%>
@@ -140,8 +140,9 @@
#C8 = static-tearoff mai::_#F#redirect#tearOff
#C9 = null
#C10 = 42
- #C11 = static-tearoff mai::_#G#new#tearOff
- #C12 = static-tearoff mai::_#G#named#tearOff
- #C13 = static-tearoff mai::_#G#fact#tearOff
- #C14 = static-tearoff mai::_#G#redirect#tearOff
+ #C11 = constructor-tearoff mai::A::redirect
+ #C12 = static-tearoff mai::_#G#new#tearOff
+ #C13 = static-tearoff mai::_#G#named#tearOff
+ #C14 = static-tearoff mai::_#G#fact#tearOff
+ #C15 = static-tearoff mai::_#G#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.strong.transformed.expect
index 90eb13b..402ad31 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.strong.transformed.expect
@@ -84,7 +84,7 @@
typedef F<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
typedef G<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C11]/*isLegacy*/;
constructor •() → mai::A<mai::A::T%>
: super core::Object::•()
;
@@ -108,10 +108,10 @@
static field dynamic F_named_lib = #C6;
static field dynamic F_fact_lib = #C7;
static field dynamic F_redirect_lib = #C8;
-static field dynamic G_new_lib = #C11;
-static field dynamic G_named_lib = #C12;
-static field dynamic G_fact_lib = #C13;
-static field dynamic G_redirect_lib = #C14;
+static field dynamic G_new_lib = #C12;
+static field dynamic G_named_lib = #C13;
+static field dynamic G_fact_lib = #C14;
+static field dynamic G_redirect_lib = #C15;
static method _#F#new#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → mai::A<mai::_#F#new#tearOff::Y%>
return new mai::A::•<mai::_#F#new#tearOff::Y%>();
static method _#F#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(mai::_#F#named#tearOff::Y% a, [core::int? b = #C9]) → mai::A<mai::_#F#named#tearOff::Y%>
@@ -140,8 +140,9 @@
#C8 = static-tearoff mai::_#F#redirect#tearOff
#C9 = null
#C10 = 42
- #C11 = static-tearoff mai::_#G#new#tearOff
- #C12 = static-tearoff mai::_#G#named#tearOff
- #C13 = static-tearoff mai::_#G#fact#tearOff
- #C14 = static-tearoff mai::_#G#redirect#tearOff
+ #C11 = constructor-tearoff mai::A::redirect
+ #C12 = static-tearoff mai::_#G#new#tearOff
+ #C13 = static-tearoff mai::_#G#named#tearOff
+ #C14 = static-tearoff mai::_#G#fact#tearOff
+ #C15 = static-tearoff mai::_#G#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.expect
index 90eb13b..402ad31 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.expect
@@ -84,7 +84,7 @@
typedef F<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
typedef G<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C11]/*isLegacy*/;
constructor •() → mai::A<mai::A::T%>
: super core::Object::•()
;
@@ -108,10 +108,10 @@
static field dynamic F_named_lib = #C6;
static field dynamic F_fact_lib = #C7;
static field dynamic F_redirect_lib = #C8;
-static field dynamic G_new_lib = #C11;
-static field dynamic G_named_lib = #C12;
-static field dynamic G_fact_lib = #C13;
-static field dynamic G_redirect_lib = #C14;
+static field dynamic G_new_lib = #C12;
+static field dynamic G_named_lib = #C13;
+static field dynamic G_fact_lib = #C14;
+static field dynamic G_redirect_lib = #C15;
static method _#F#new#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → mai::A<mai::_#F#new#tearOff::Y%>
return new mai::A::•<mai::_#F#new#tearOff::Y%>();
static method _#F#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(mai::_#F#named#tearOff::Y% a, [core::int? b = #C9]) → mai::A<mai::_#F#named#tearOff::Y%>
@@ -140,8 +140,9 @@
#C8 = static-tearoff mai::_#F#redirect#tearOff
#C9 = null
#C10 = 42
- #C11 = static-tearoff mai::_#G#new#tearOff
- #C12 = static-tearoff mai::_#G#named#tearOff
- #C13 = static-tearoff mai::_#G#fact#tearOff
- #C14 = static-tearoff mai::_#G#redirect#tearOff
+ #C11 = constructor-tearoff mai::A::redirect
+ #C12 = static-tearoff mai::_#G#new#tearOff
+ #C13 = static-tearoff mai::_#G#named#tearOff
+ #C14 = static-tearoff mai::_#G#fact#tearOff
+ #C15 = static-tearoff mai::_#G#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect
index 0e4f276..6e66217 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect
@@ -34,7 +34,7 @@
typedef F<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
typedef G<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → mai::A<mai::A::T%>
;
constructor named(mai::A::T% a, [core::int? b]) → mai::A<mai::A::T%>
@@ -76,3 +76,7 @@
return mai::A::fact<mai::_#G#fact#tearOff::Y%>(a, b: b, c: c);
static method _#G#redirect#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → mai::A<mai::_#G#redirect#tearOff::Y%>
return mai::A::_#redirect#tearOff<mai::_#G#redirect#tearOff::Y%>();
+
+constants {
+ #C1 = constructor-tearoff mai::A::redirect
+}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.transformed.expect
index 90eb13b..402ad31 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.transformed.expect
@@ -84,7 +84,7 @@
typedef F<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
typedef G<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = mai::A<Y%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[mai::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C11]/*isLegacy*/;
constructor •() → mai::A<mai::A::T%>
: super core::Object::•()
;
@@ -108,10 +108,10 @@
static field dynamic F_named_lib = #C6;
static field dynamic F_fact_lib = #C7;
static field dynamic F_redirect_lib = #C8;
-static field dynamic G_new_lib = #C11;
-static field dynamic G_named_lib = #C12;
-static field dynamic G_fact_lib = #C13;
-static field dynamic G_redirect_lib = #C14;
+static field dynamic G_new_lib = #C12;
+static field dynamic G_named_lib = #C13;
+static field dynamic G_fact_lib = #C14;
+static field dynamic G_redirect_lib = #C15;
static method _#F#new#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → mai::A<mai::_#F#new#tearOff::Y%>
return new mai::A::•<mai::_#F#new#tearOff::Y%>();
static method _#F#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(mai::_#F#named#tearOff::Y% a, [core::int? b = #C9]) → mai::A<mai::_#F#named#tearOff::Y%>
@@ -140,8 +140,9 @@
#C8 = static-tearoff mai::_#F#redirect#tearOff
#C9 = null
#C10 = 42
- #C11 = static-tearoff mai::_#G#new#tearOff
- #C12 = static-tearoff mai::_#G#named#tearOff
- #C13 = static-tearoff mai::_#G#fact#tearOff
- #C14 = static-tearoff mai::_#G#redirect#tearOff
+ #C11 = constructor-tearoff mai::A::redirect
+ #C12 = static-tearoff mai::_#G#new#tearOff
+ #C13 = static-tearoff mai::_#G#named#tearOff
+ #C14 = static-tearoff mai::_#G#fact#tearOff
+ #C15 = static-tearoff mai::_#G#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.strong.expect
index 81462df..6da94c4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.strong.expect
@@ -84,7 +84,7 @@
typedef F<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = typ::A<Y%>;
typedef G<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = typ::A<Y%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[typ::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C11]/*isLegacy*/;
constructor •() → typ::A<typ::A::T%>
: super core::Object::•()
;
@@ -108,10 +108,10 @@
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> F_named_lib = #C6;
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> F_fact_lib = #C7;
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> F_redirect_lib = #C8;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_new_lib = #C11;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> G_named_lib = #C12;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> G_fact_lib = #C13;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_redirect_lib = #C14;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_new_lib = #C12;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> G_named_lib = #C13;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> G_fact_lib = #C14;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_redirect_lib = #C15;
static method _#F#new#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<typ::_#F#new#tearOff::Y%>
return new typ::A::•<typ::_#F#new#tearOff::Y%>();
static method _#F#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(typ::_#F#named#tearOff::Y% a, [core::int? b = #C9]) → typ::A<typ::_#F#named#tearOff::Y%>
@@ -140,8 +140,9 @@
#C8 = static-tearoff typ::_#F#redirect#tearOff
#C9 = null
#C10 = 42
- #C11 = static-tearoff typ::_#G#new#tearOff
- #C12 = static-tearoff typ::_#G#named#tearOff
- #C13 = static-tearoff typ::_#G#fact#tearOff
- #C14 = static-tearoff typ::_#G#redirect#tearOff
+ #C11 = constructor-tearoff typ::A::redirect
+ #C12 = static-tearoff typ::_#G#new#tearOff
+ #C13 = static-tearoff typ::_#G#named#tearOff
+ #C14 = static-tearoff typ::_#G#fact#tearOff
+ #C15 = static-tearoff typ::_#G#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.strong.transformed.expect
index 81462df..6da94c4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.strong.transformed.expect
@@ -84,7 +84,7 @@
typedef F<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = typ::A<Y%>;
typedef G<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = typ::A<Y%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[typ::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C11]/*isLegacy*/;
constructor •() → typ::A<typ::A::T%>
: super core::Object::•()
;
@@ -108,10 +108,10 @@
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> F_named_lib = #C6;
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> F_fact_lib = #C7;
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> F_redirect_lib = #C8;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_new_lib = #C11;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> G_named_lib = #C12;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> G_fact_lib = #C13;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_redirect_lib = #C14;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_new_lib = #C12;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> G_named_lib = #C13;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> G_fact_lib = #C14;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_redirect_lib = #C15;
static method _#F#new#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<typ::_#F#new#tearOff::Y%>
return new typ::A::•<typ::_#F#new#tearOff::Y%>();
static method _#F#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(typ::_#F#named#tearOff::Y% a, [core::int? b = #C9]) → typ::A<typ::_#F#named#tearOff::Y%>
@@ -140,8 +140,9 @@
#C8 = static-tearoff typ::_#F#redirect#tearOff
#C9 = null
#C10 = 42
- #C11 = static-tearoff typ::_#G#new#tearOff
- #C12 = static-tearoff typ::_#G#named#tearOff
- #C13 = static-tearoff typ::_#G#fact#tearOff
- #C14 = static-tearoff typ::_#G#redirect#tearOff
+ #C11 = constructor-tearoff typ::A::redirect
+ #C12 = static-tearoff typ::_#G#new#tearOff
+ #C13 = static-tearoff typ::_#G#named#tearOff
+ #C14 = static-tearoff typ::_#G#fact#tearOff
+ #C15 = static-tearoff typ::_#G#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.expect
index 81462df..6da94c4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.expect
@@ -84,7 +84,7 @@
typedef F<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = typ::A<Y%>;
typedef G<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = typ::A<Y%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[typ::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C11]/*isLegacy*/;
constructor •() → typ::A<typ::A::T%>
: super core::Object::•()
;
@@ -108,10 +108,10 @@
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> F_named_lib = #C6;
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> F_fact_lib = #C7;
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> F_redirect_lib = #C8;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_new_lib = #C11;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> G_named_lib = #C12;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> G_fact_lib = #C13;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_redirect_lib = #C14;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_new_lib = #C12;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> G_named_lib = #C13;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> G_fact_lib = #C14;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_redirect_lib = #C15;
static method _#F#new#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<typ::_#F#new#tearOff::Y%>
return new typ::A::•<typ::_#F#new#tearOff::Y%>();
static method _#F#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(typ::_#F#named#tearOff::Y% a, [core::int? b = #C9]) → typ::A<typ::_#F#named#tearOff::Y%>
@@ -140,8 +140,9 @@
#C8 = static-tearoff typ::_#F#redirect#tearOff
#C9 = null
#C10 = 42
- #C11 = static-tearoff typ::_#G#new#tearOff
- #C12 = static-tearoff typ::_#G#named#tearOff
- #C13 = static-tearoff typ::_#G#fact#tearOff
- #C14 = static-tearoff typ::_#G#redirect#tearOff
+ #C11 = constructor-tearoff typ::A::redirect
+ #C12 = static-tearoff typ::_#G#new#tearOff
+ #C13 = static-tearoff typ::_#G#named#tearOff
+ #C14 = static-tearoff typ::_#G#fact#tearOff
+ #C15 = static-tearoff typ::_#G#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect
index b6ebfa4..2fdb0b1 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect
@@ -76,3 +76,8 @@
return typ::A::fact<typ::_#G#fact#tearOff::Y%>(a, b: b, c: c);
static method _#G#redirect#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<typ::_#G#redirect#tearOff::Y%>
return typ::A::_#redirect#tearOff<typ::_#G#redirect#tearOff::Y%>();
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///typedef_identical_lib.dart:5:7 -> ConstructorTearOffConstant(A.redirect)
+Extra constant evaluation: evaluated: 39, effectively constant: 1
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.transformed.expect
index 81462df..6da94c4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.transformed.expect
@@ -84,7 +84,7 @@
typedef F<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = typ::A<Y%>;
typedef G<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = typ::A<Y%>;
class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[typ::A::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C11]/*isLegacy*/;
constructor •() → typ::A<typ::A::T%>
: super core::Object::•()
;
@@ -108,10 +108,10 @@
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> F_named_lib = #C6;
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> F_fact_lib = #C7;
static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> F_redirect_lib = #C8;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_new_lib = #C11;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> G_named_lib = #C12;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> G_fact_lib = #C13;
-static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_redirect_lib = #C14;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_new_lib = #C12;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, [core::int?]) → typ::A<Y%> G_named_lib = #C13;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(Y%, {b: core::int?, c: core::int}) → typ::A<Y%> G_fact_lib = #C14;
+static field <unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<Y%> G_redirect_lib = #C15;
static method _#F#new#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → typ::A<typ::_#F#new#tearOff::Y%>
return new typ::A::•<typ::_#F#new#tearOff::Y%>();
static method _#F#named#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(typ::_#F#named#tearOff::Y% a, [core::int? b = #C9]) → typ::A<typ::_#F#named#tearOff::Y%>
@@ -140,8 +140,9 @@
#C8 = static-tearoff typ::_#F#redirect#tearOff
#C9 = null
#C10 = 42
- #C11 = static-tearoff typ::_#G#new#tearOff
- #C12 = static-tearoff typ::_#G#named#tearOff
- #C13 = static-tearoff typ::_#G#fact#tearOff
- #C14 = static-tearoff typ::_#G#redirect#tearOff
+ #C11 = constructor-tearoff typ::A::redirect
+ #C12 = static-tearoff typ::_#G#new#tearOff
+ #C13 = static-tearoff typ::_#G#named#tearOff
+ #C14 = static-tearoff typ::_#G#fact#tearOff
+ #C15 = static-tearoff typ::_#G#redirect#tearOff
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.strong.expect
index 2e24a01..109a904 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.strong.expect
@@ -319,11 +319,11 @@
#C1 = static-tearoff self::A::_#new#tearOff
#C2 = static-tearoff self::_#DA2#new#tearOff
#C3 = static-tearoff self::B::_#new#tearOff
- #C4 = instantiation self::B::_#new#tearOff <core::String>
+ #C4 = instantiation #C3 <core::String>
#C5 = static-tearoff self::B::_#foo#tearOff
- #C6 = instantiation self::B::_#foo#tearOff <core::String>
+ #C6 = instantiation #C5 <core::String>
#C7 = static-tearoff self::B::_#bar#tearOff
- #C8 = instantiation self::B::_#bar#tearOff <core::String>
+ #C8 = instantiation #C7 <core::String>
#C9 = static-tearoff self::_#DB2#new#tearOff
#C10 = static-tearoff self::_#DB3#new#tearOff
#C11 = false
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.strong.transformed.expect
index 64496be..71410d3 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.strong.transformed.expect
@@ -319,11 +319,11 @@
#C1 = static-tearoff self::A::_#new#tearOff
#C2 = static-tearoff self::_#DA2#new#tearOff
#C3 = static-tearoff self::B::_#new#tearOff
- #C4 = instantiation self::B::_#new#tearOff <core::String>
+ #C4 = instantiation #C3 <core::String>
#C5 = static-tearoff self::B::_#foo#tearOff
- #C6 = instantiation self::B::_#foo#tearOff <core::String>
+ #C6 = instantiation #C5 <core::String>
#C7 = static-tearoff self::B::_#bar#tearOff
- #C8 = instantiation self::B::_#bar#tearOff <core::String>
+ #C8 = instantiation #C7 <core::String>
#C9 = static-tearoff self::_#DB2#new#tearOff
#C10 = static-tearoff self::_#DB3#new#tearOff
#C11 = false
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.weak.expect
index b0722a9..9e50e01 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.weak.expect
@@ -319,11 +319,11 @@
#C1 = static-tearoff self::A::_#new#tearOff
#C2 = static-tearoff self::_#DA2#new#tearOff
#C3 = static-tearoff self::B::_#new#tearOff
- #C4 = instantiation self::B::_#new#tearOff <core::String*>
+ #C4 = instantiation #C3 <core::String*>
#C5 = static-tearoff self::B::_#foo#tearOff
- #C6 = instantiation self::B::_#foo#tearOff <core::String*>
+ #C6 = instantiation #C5 <core::String*>
#C7 = static-tearoff self::B::_#bar#tearOff
- #C8 = instantiation self::B::_#bar#tearOff <core::String*>
+ #C8 = instantiation #C7 <core::String*>
#C9 = static-tearoff self::_#DB2#new#tearOff
#C10 = static-tearoff self::_#DB3#new#tearOff
#C11 = false
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.weak.transformed.expect
index 3242407..f1fcdc5 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart.weak.transformed.expect
@@ -319,11 +319,11 @@
#C1 = static-tearoff self::A::_#new#tearOff
#C2 = static-tearoff self::_#DA2#new#tearOff
#C3 = static-tearoff self::B::_#new#tearOff
- #C4 = instantiation self::B::_#new#tearOff <core::String*>
+ #C4 = instantiation #C3 <core::String*>
#C5 = static-tearoff self::B::_#foo#tearOff
- #C6 = instantiation self::B::_#foo#tearOff <core::String*>
+ #C6 = instantiation #C5 <core::String*>
#C7 = static-tearoff self::B::_#bar#tearOff
- #C8 = instantiation self::B::_#bar#tearOff <core::String*>
+ #C8 = instantiation #C7 <core::String*>
#C9 = static-tearoff self::_#DB2#new#tearOff
#C10 = static-tearoff self::_#DB3#new#tearOff
#C11 = false
diff --git a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.strong.expect
index 47537c5..713b894 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.strong.expect
@@ -41,8 +41,8 @@
}
class Class<T extends core::Object? = dynamic> extends core::Object implements self::Interface {
field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirectingFactory]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::Class<self::Class::T%>
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
constructor named(core::int field) → self::Class<self::Class::T%>
@@ -59,7 +59,7 @@
abstract class Mixin<S extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
}
class NamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> = self::Class<self::NamedMixinApplication::T%> with self::Mixin<self::NamedMixinApplication::S%> {
- synthetic constructor •([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
@@ -70,7 +70,7 @@
;
}
abstract class AbstractNamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> = self::Class<self::AbstractNamedMixinApplication::T%> with self::Mixin<self::AbstractNamedMixinApplication::S%> {
- synthetic constructor •([core::int field = #C1]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
@@ -80,9 +80,9 @@
: super self::Class::redirectingGenerative(field)
;
}
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
static method test() → dynamic {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart:26:25: Error: Member not found: 'fact'.
NamedMixinApplication.fact;
@@ -107,23 +107,24 @@
^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
- #C5;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
#C6;
#C7;
+ #C8;
([core::int]) → self::NamedMixinApplication<core::int, core::String> n1 = f1<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n2 = f2<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n3 = f3<core::int, core::String>;
}
constants {
- #C1 = 0
- #C2 = constructor-tearoff self::NamedMixinApplication::•
- #C3 = constructor-tearoff self::NamedMixinApplication::named
- #C4 = constructor-tearoff self::NamedMixinApplication::redirectingGenerative
- #C5 = instantiation self::NamedMixinApplication::• <core::int, core::String>
- #C6 = instantiation self::NamedMixinApplication::named <core::int, core::String>
- #C7 = instantiation self::NamedMixinApplication::redirectingGenerative <core::int, core::String>
+ #C1 = constructor-tearoff self::Class::redirectingFactory
+ #C2 = 0
+ #C3 = constructor-tearoff self::NamedMixinApplication::•
+ #C4 = constructor-tearoff self::NamedMixinApplication::named
+ #C5 = constructor-tearoff self::NamedMixinApplication::redirectingGenerative
+ #C6 = instantiation #C3 <core::int, core::String>
+ #C7 = instantiation #C4 <core::int, core::String>
+ #C8 = instantiation #C5 <core::int, core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.strong.transformed.expect
index 6e9a6ef..e1f62d1 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.strong.transformed.expect
@@ -41,8 +41,8 @@
}
class Class<T extends core::Object? = dynamic> extends core::Object implements self::Interface {
field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirectingFactory]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::Class<self::Class::T%>
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
constructor named(core::int field) → self::Class<self::Class::T%>
@@ -59,7 +59,7 @@
abstract class Mixin<S extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
}
class NamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends self::Class<self::NamedMixinApplication::T%> implements self::Mixin<self::NamedMixinApplication::S%> /*isEliminatedMixin*/ {
- synthetic constructor •([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
@@ -70,7 +70,7 @@
;
}
abstract class AbstractNamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends self::Class<self::AbstractNamedMixinApplication::T%> implements self::Mixin<self::AbstractNamedMixinApplication::S%> /*isEliminatedMixin*/ {
- synthetic constructor •([core::int field = #C1]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
@@ -80,9 +80,9 @@
: super self::Class::redirectingGenerative(field)
;
}
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
static method test() → dynamic {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart:26:25: Error: Member not found: 'fact'.
NamedMixinApplication.fact;
@@ -107,23 +107,24 @@
^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
- #C5;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
#C6;
#C7;
+ #C8;
([core::int]) → self::NamedMixinApplication<core::int, core::String> n1 = f1<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n2 = f2<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n3 = f3<core::int, core::String>;
}
constants {
- #C1 = 0
- #C2 = constructor-tearoff self::NamedMixinApplication::•
- #C3 = constructor-tearoff self::NamedMixinApplication::named
- #C4 = constructor-tearoff self::NamedMixinApplication::redirectingGenerative
- #C5 = instantiation self::NamedMixinApplication::• <core::int, core::String>
- #C6 = instantiation self::NamedMixinApplication::named <core::int, core::String>
- #C7 = instantiation self::NamedMixinApplication::redirectingGenerative <core::int, core::String>
+ #C1 = constructor-tearoff self::Class::redirectingFactory
+ #C2 = 0
+ #C3 = constructor-tearoff self::NamedMixinApplication::•
+ #C4 = constructor-tearoff self::NamedMixinApplication::named
+ #C5 = constructor-tearoff self::NamedMixinApplication::redirectingGenerative
+ #C6 = instantiation #C3 <core::int, core::String>
+ #C7 = instantiation #C4 <core::int, core::String>
+ #C8 = instantiation #C5 <core::int, core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.expect
index 7db9ced..911cbda 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.expect
@@ -41,8 +41,8 @@
}
class Class<T extends core::Object? = dynamic> extends core::Object implements self::Interface {
field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirectingFactory]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::Class<self::Class::T%>
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
constructor named(core::int field) → self::Class<self::Class::T%>
@@ -59,7 +59,7 @@
abstract class Mixin<S extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
}
class NamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> = self::Class<self::NamedMixinApplication::T%> with self::Mixin<self::NamedMixinApplication::S%> {
- synthetic constructor •([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
@@ -70,7 +70,7 @@
;
}
abstract class AbstractNamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> = self::Class<self::AbstractNamedMixinApplication::T%> with self::Mixin<self::AbstractNamedMixinApplication::S%> {
- synthetic constructor •([core::int field = #C1]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
@@ -80,9 +80,9 @@
: super self::Class::redirectingGenerative(field)
;
}
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
static method test() → dynamic {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart:26:25: Error: Member not found: 'fact'.
NamedMixinApplication.fact;
@@ -107,23 +107,24 @@
^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
- #C5;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
#C6;
#C7;
+ #C8;
([core::int]) → self::NamedMixinApplication<core::int, core::String> n1 = f1<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n2 = f2<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n3 = f3<core::int, core::String>;
}
constants {
- #C1 = 0
- #C2 = constructor-tearoff self::NamedMixinApplication::•
- #C3 = constructor-tearoff self::NamedMixinApplication::named
- #C4 = constructor-tearoff self::NamedMixinApplication::redirectingGenerative
- #C5 = instantiation self::NamedMixinApplication::• <core::int*, core::String*>
- #C6 = instantiation self::NamedMixinApplication::named <core::int*, core::String*>
- #C7 = instantiation self::NamedMixinApplication::redirectingGenerative <core::int*, core::String*>
+ #C1 = constructor-tearoff self::Class::redirectingFactory
+ #C2 = 0
+ #C3 = constructor-tearoff self::NamedMixinApplication::•
+ #C4 = constructor-tearoff self::NamedMixinApplication::named
+ #C5 = constructor-tearoff self::NamedMixinApplication::redirectingGenerative
+ #C6 = instantiation #C3 <core::int*, core::String*>
+ #C7 = instantiation #C4 <core::int*, core::String*>
+ #C8 = instantiation #C5 <core::int*, core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.outline.expect
index 74af4ae..99e5f30 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.outline.expect
@@ -52,3 +52,8 @@
;
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///named_mixin_application.dart:9:7 -> ConstructorTearOffConstant(Class.redirectingFactory)
+Extra constant evaluation: evaluated: 10, effectively constant: 1
diff --git a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.transformed.expect
index 9b266ff..ec985b8 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart.weak.transformed.expect
@@ -41,8 +41,8 @@
}
class Class<T extends core::Object? = dynamic> extends core::Object implements self::Interface {
field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirectingFactory]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::Class<self::Class::T%>
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
constructor named(core::int field) → self::Class<self::Class::T%>
@@ -59,7 +59,7 @@
abstract class Mixin<S extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
}
class NamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends self::Class<self::NamedMixinApplication::T%> implements self::Mixin<self::NamedMixinApplication::S%> /*isEliminatedMixin*/ {
- synthetic constructor •([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
@@ -70,7 +70,7 @@
;
}
abstract class AbstractNamedMixinApplication<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends self::Class<self::AbstractNamedMixinApplication::T%> implements self::Mixin<self::AbstractNamedMixinApplication::S%> /*isEliminatedMixin*/ {
- synthetic constructor •([core::int field = #C1]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
+ synthetic constructor •([core::int field = #C2]) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
: super self::Class::•(field)
;
synthetic constructor named(core::int field) → self::AbstractNamedMixinApplication<self::AbstractNamedMixinApplication::T%, self::AbstractNamedMixinApplication::S%>
@@ -80,9 +80,9 @@
: super self::Class::redirectingGenerative(field)
;
}
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
-static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+static field <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
static method test() → dynamic {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/named_mixin_application.dart:26:25: Error: Member not found: 'fact'.
NamedMixinApplication.fact;
@@ -107,23 +107,24 @@
^^^^^^^^^^^^^^^^^^";
}
static method main() → dynamic {
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C2;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C3;
- <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C4;
- #C5;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int]) → self::NamedMixinApplication<T%, S%> f1 = #C3;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f2 = #C4;
+ <T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int) → self::NamedMixinApplication<T%, S%> f3 = #C5;
#C6;
#C7;
+ #C8;
([core::int]) → self::NamedMixinApplication<core::int, core::String> n1 = f1<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n2 = f2<core::int, core::String>;
(core::int) → self::NamedMixinApplication<core::int, core::String> n3 = f3<core::int, core::String>;
}
constants {
- #C1 = 0
- #C2 = constructor-tearoff self::NamedMixinApplication::•
- #C3 = constructor-tearoff self::NamedMixinApplication::named
- #C4 = constructor-tearoff self::NamedMixinApplication::redirectingGenerative
- #C5 = instantiation self::NamedMixinApplication::• <core::int*, core::String*>
- #C6 = instantiation self::NamedMixinApplication::named <core::int*, core::String*>
- #C7 = instantiation self::NamedMixinApplication::redirectingGenerative <core::int*, core::String*>
+ #C1 = constructor-tearoff self::Class::redirectingFactory
+ #C2 = 0
+ #C3 = constructor-tearoff self::NamedMixinApplication::•
+ #C4 = constructor-tearoff self::NamedMixinApplication::named
+ #C5 = constructor-tearoff self::NamedMixinApplication::redirectingGenerative
+ #C6 = instantiation #C3 <core::int*, core::String*>
+ #C7 = instantiation #C4 <core::int*, core::String*>
+ #C8 = instantiation #C5 <core::int*, core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.strong.expect
index 952cefe..9f6be91 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.strong.expect
@@ -57,5 +57,5 @@
#C1 = constructor-tearoff self::A::foo1
#C2 = constructor-tearoff self::A::foo2
#C3 = constructor-tearoff self::A::•
- #C4 = static-tearoff self::A::bar1
+ #C4 = constructor-tearoff self::A::bar1
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.strong.transformed.expect
index 952cefe..9f6be91 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.strong.transformed.expect
@@ -57,5 +57,5 @@
#C1 = constructor-tearoff self::A::foo1
#C2 = constructor-tearoff self::A::foo2
#C3 = constructor-tearoff self::A::•
- #C4 = static-tearoff self::A::bar1
+ #C4 = constructor-tearoff self::A::bar1
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.weak.expect
index 952cefe..9f6be91 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.weak.expect
@@ -57,5 +57,5 @@
#C1 = constructor-tearoff self::A::foo1
#C2 = constructor-tearoff self::A::foo2
#C3 = constructor-tearoff self::A::•
- #C4 = static-tearoff self::A::bar1
+ #C4 = constructor-tearoff self::A::bar1
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.weak.transformed.expect
index 952cefe..9f6be91 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_with_context.dart.weak.transformed.expect
@@ -57,5 +57,5 @@
#C1 = constructor-tearoff self::A::foo1
#C2 = constructor-tearoff self::A::foo2
#C3 = constructor-tearoff self::A::•
- #C4 = static-tearoff self::A::bar1
+ #C4 = constructor-tearoff self::A::bar1
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.strong.expect
index 5d000f0..22aef61 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.strong.expect
@@ -60,5 +60,5 @@
constants {
#C1 = constructor-tearoff self::A::foo
#C2 = constructor-tearoff self::A::•
- #C3 = static-tearoff self::A::bar
+ #C3 = constructor-tearoff self::A::bar
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.strong.transformed.expect
index 5d000f0..22aef61 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.strong.transformed.expect
@@ -60,5 +60,5 @@
constants {
#C1 = constructor-tearoff self::A::foo
#C2 = constructor-tearoff self::A::•
- #C3 = static-tearoff self::A::bar
+ #C3 = constructor-tearoff self::A::bar
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.weak.expect
index 5d000f0..22aef61 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.weak.expect
@@ -60,5 +60,5 @@
constants {
#C1 = constructor-tearoff self::A::foo
#C2 = constructor-tearoff self::A::•
- #C3 = static-tearoff self::A::bar
+ #C3 = constructor-tearoff self::A::bar
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.weak.transformed.expect
index 5d000f0..22aef61 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/nongeneric_tearoff_without_context.dart.weak.transformed.expect
@@ -60,5 +60,5 @@
constants {
#C1 = constructor-tearoff self::A::foo
#C2 = constructor-tearoff self::A::•
- #C3 = static-tearoff self::A::bar
+ #C3 = constructor-tearoff self::A::bar
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.expect
index ce55163..e0b61a8 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.expect
@@ -59,8 +59,8 @@
constants {
#C1 = static-tearoff self::UnresolvedClass
#C2 = static-tearoff self::unresolved_prefix::UnresolvedClass
- #C3 = instantiation self::UnresolvedClass <core::int>
- #C4 = instantiation self::unresolved_prefix::UnresolvedClass <core::int>
+ #C3 = instantiation #C1 <core::int>
+ #C4 = instantiation #C2 <core::int>
#C5 = static-tearoff self::resolved_prefix::UnresolvedClass
- #C6 = instantiation self::resolved_prefix::UnresolvedClass <core::int>
+ #C6 = instantiation #C5 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.transformed.expect
index ce55163..e0b61a8 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.strong.transformed.expect
@@ -59,8 +59,8 @@
constants {
#C1 = static-tearoff self::UnresolvedClass
#C2 = static-tearoff self::unresolved_prefix::UnresolvedClass
- #C3 = instantiation self::UnresolvedClass <core::int>
- #C4 = instantiation self::unresolved_prefix::UnresolvedClass <core::int>
+ #C3 = instantiation #C1 <core::int>
+ #C4 = instantiation #C2 <core::int>
#C5 = static-tearoff self::resolved_prefix::UnresolvedClass
- #C6 = instantiation self::resolved_prefix::UnresolvedClass <core::int>
+ #C6 = instantiation #C5 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.expect
index 07ba725..b3fb9eb 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.expect
@@ -59,8 +59,8 @@
constants {
#C1 = static-tearoff self::UnresolvedClass
#C2 = static-tearoff self::unresolved_prefix::UnresolvedClass
- #C3 = instantiation self::UnresolvedClass <core::int*>
- #C4 = instantiation self::unresolved_prefix::UnresolvedClass <core::int*>
+ #C3 = instantiation #C1 <core::int*>
+ #C4 = instantiation #C2 <core::int*>
#C5 = static-tearoff self::resolved_prefix::UnresolvedClass
- #C6 = instantiation self::resolved_prefix::UnresolvedClass <core::int*>
+ #C6 = instantiation #C5 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.transformed.expect
index 07ba725..b3fb9eb 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/not_unresolved_constructor_invocation.dart.weak.transformed.expect
@@ -59,8 +59,8 @@
constants {
#C1 = static-tearoff self::UnresolvedClass
#C2 = static-tearoff self::unresolved_prefix::UnresolvedClass
- #C3 = instantiation self::UnresolvedClass <core::int*>
- #C4 = instantiation self::unresolved_prefix::UnresolvedClass <core::int*>
+ #C3 = instantiation #C1 <core::int*>
+ #C4 = instantiation #C2 <core::int*>
#C5 = static-tearoff self::resolved_prefix::UnresolvedClass
- #C6 = instantiation self::resolved_prefix::UnresolvedClass <core::int*>
+ #C6 = instantiation #C5 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.strong.expect
index 0ed236c..4e40f0b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.strong.expect
@@ -10,7 +10,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirectingFactory, self::A::redirectingFactoryChild, self::A::redirectingTwice]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3]/*isLegacy*/;
constructor •() → self::A
: super core::Object::•()
;
@@ -27,9 +27,9 @@
;
}
static method test() → dynamic {
- () → self::A f1 = #C1;
- () → self::A f2 = #C2;
- () → self::A f3 = #C3;
+ () → self::A f1 = #C4;
+ () → self::A f2 = #C5;
+ () → self::A f3 = #C6;
self::A x1 = f1(){() → self::A};
self::B x2 = f2(){() → self::A} as{ForNonNullableByDefault} self::B;
self::A x3;
@@ -39,7 +39,10 @@
return self::test();
constants {
- #C1 = redirecting-factory-tearoff self::A::redirectingFactory
- #C2 = redirecting-factory-tearoff self::A::redirectingFactoryChild
- #C3 = redirecting-factory-tearoff self::A::redirectingTwice
+ #C1 = constructor-tearoff self::A::redirectingFactory
+ #C2 = constructor-tearoff self::A::redirectingFactoryChild
+ #C3 = constructor-tearoff self::A::redirectingTwice
+ #C4 = redirecting-factory-tearoff self::A::redirectingFactory
+ #C5 = redirecting-factory-tearoff self::A::redirectingFactoryChild
+ #C6 = redirecting-factory-tearoff self::A::redirectingTwice
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.strong.transformed.expect
index 0ed236c..4e40f0b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.strong.transformed.expect
@@ -10,7 +10,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirectingFactory, self::A::redirectingFactoryChild, self::A::redirectingTwice]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3]/*isLegacy*/;
constructor •() → self::A
: super core::Object::•()
;
@@ -27,9 +27,9 @@
;
}
static method test() → dynamic {
- () → self::A f1 = #C1;
- () → self::A f2 = #C2;
- () → self::A f3 = #C3;
+ () → self::A f1 = #C4;
+ () → self::A f2 = #C5;
+ () → self::A f3 = #C6;
self::A x1 = f1(){() → self::A};
self::B x2 = f2(){() → self::A} as{ForNonNullableByDefault} self::B;
self::A x3;
@@ -39,7 +39,10 @@
return self::test();
constants {
- #C1 = redirecting-factory-tearoff self::A::redirectingFactory
- #C2 = redirecting-factory-tearoff self::A::redirectingFactoryChild
- #C3 = redirecting-factory-tearoff self::A::redirectingTwice
+ #C1 = constructor-tearoff self::A::redirectingFactory
+ #C2 = constructor-tearoff self::A::redirectingFactoryChild
+ #C3 = constructor-tearoff self::A::redirectingTwice
+ #C4 = redirecting-factory-tearoff self::A::redirectingFactory
+ #C5 = redirecting-factory-tearoff self::A::redirectingFactoryChild
+ #C6 = redirecting-factory-tearoff self::A::redirectingTwice
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.expect
index 0ed236c..4e40f0b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.expect
@@ -10,7 +10,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirectingFactory, self::A::redirectingFactoryChild, self::A::redirectingTwice]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3]/*isLegacy*/;
constructor •() → self::A
: super core::Object::•()
;
@@ -27,9 +27,9 @@
;
}
static method test() → dynamic {
- () → self::A f1 = #C1;
- () → self::A f2 = #C2;
- () → self::A f3 = #C3;
+ () → self::A f1 = #C4;
+ () → self::A f2 = #C5;
+ () → self::A f3 = #C6;
self::A x1 = f1(){() → self::A};
self::B x2 = f2(){() → self::A} as{ForNonNullableByDefault} self::B;
self::A x3;
@@ -39,7 +39,10 @@
return self::test();
constants {
- #C1 = redirecting-factory-tearoff self::A::redirectingFactory
- #C2 = redirecting-factory-tearoff self::A::redirectingFactoryChild
- #C3 = redirecting-factory-tearoff self::A::redirectingTwice
+ #C1 = constructor-tearoff self::A::redirectingFactory
+ #C2 = constructor-tearoff self::A::redirectingFactoryChild
+ #C3 = constructor-tearoff self::A::redirectingTwice
+ #C4 = redirecting-factory-tearoff self::A::redirectingFactory
+ #C5 = redirecting-factory-tearoff self::A::redirectingFactoryChild
+ #C6 = redirecting-factory-tearoff self::A::redirectingTwice
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.outline.expect
index 0b5088f..91c4c77 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.outline.expect
@@ -21,3 +21,10 @@
;
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_constructors.dart:5:7 -> ConstructorTearOffConstant(A.redirectingFactory)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_constructors.dart:5:7 -> ConstructorTearOffConstant(A.redirectingFactoryChild)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_constructors.dart:5:7 -> ConstructorTearOffConstant(A.redirectingTwice)
+Extra constant evaluation: evaluated: 7, effectively constant: 3
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.transformed.expect
index 0ed236c..4e40f0b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_constructors.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirectingFactory, self::A::redirectingFactoryChild, self::A::redirectingTwice]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3]/*isLegacy*/;
constructor •() → self::A
: super core::Object::•()
;
@@ -27,9 +27,9 @@
;
}
static method test() → dynamic {
- () → self::A f1 = #C1;
- () → self::A f2 = #C2;
- () → self::A f3 = #C3;
+ () → self::A f1 = #C4;
+ () → self::A f2 = #C5;
+ () → self::A f3 = #C6;
self::A x1 = f1(){() → self::A};
self::B x2 = f2(){() → self::A} as{ForNonNullableByDefault} self::B;
self::A x3;
@@ -39,7 +39,10 @@
return self::test();
constants {
- #C1 = redirecting-factory-tearoff self::A::redirectingFactory
- #C2 = redirecting-factory-tearoff self::A::redirectingFactoryChild
- #C3 = redirecting-factory-tearoff self::A::redirectingTwice
+ #C1 = constructor-tearoff self::A::redirectingFactory
+ #C2 = constructor-tearoff self::A::redirectingFactoryChild
+ #C3 = constructor-tearoff self::A::redirectingTwice
+ #C4 = redirecting-factory-tearoff self::A::redirectingFactory
+ #C5 = redirecting-factory-tearoff self::A::redirectingFactoryChild
+ #C6 = redirecting-factory-tearoff self::A::redirectingTwice
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.strong.expect
index 1ff3758..05e5e9d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.strong.expect
@@ -46,7 +46,7 @@
import "dart:core" as core;
class Class1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1
: super core::Object::•()
;
@@ -54,7 +54,7 @@
return new self::Class1::_();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor __() → self::Class2
: super core::Object::•()
;
@@ -65,7 +65,7 @@
}
class Class3 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _(core::int field) → self::Class3
: self::Class3::field = field, super core::Object::•()
;
@@ -74,32 +74,32 @@
}
class Class4 extends core::Object {
final field core::int? field;
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
- constructor _([core::int? field = #C1]) → self::Class4
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _([core::int? field = #C5]) → self::Class4
: self::Class4::field = field, super core::Object::•()
;
- static factory •([core::int? field = #C1]) → self::Class4
+ static factory •([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
}
class Class5 extends core::Object {
final field core::int field1;
final field core::int? field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
- constructor _(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ constructor _(core::int field1, [core::int? field2 = #C5]) → self::Class5
: self::Class5::field1 = field1, self::Class5::field2 = field2, super core::Object::•()
;
- static factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static factory •(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
}
class Class6 extends core::Object {
final field core::int field1;
final field core::int? field2;
final field core::int field3;
- static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
- constructor _(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
+ constructor _(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
: self::Class6::field1 = field1, self::Class6::field2 = field2, self::Class6::field3 = field3, super core::Object::•()
;
- static factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static factory •(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
}
class Class7a extends core::Object implements self::Class7b {
@@ -108,7 +108,7 @@
;
}
class Class7b extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
static factory •() → self::Class7b
return new self::Class7a::•();
}
@@ -118,7 +118,7 @@
;
}
class Class8b<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class8b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::•::T%>
return new self::Class8a::•<self::Class8b::•::T%>();
}
@@ -129,23 +129,23 @@
self::testArgs();
}
static method testNoArgs() → dynamic {
- () → self::Class1 f1a = #C2;
+ () → self::Class1 f1a = #C10;
self::Class1 c1a = f1a(){() → self::Class1};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1);
- dynamic f1b = #C2;
+ dynamic f1b = #C10;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} self::Class1);
self::expect(true, core::identical(f1a, f1b));
- () → self::Class2 f2a = #C3;
+ () → self::Class2 f2a = #C11;
self::Class2 c2a = f2a(){() → self::Class2};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2);
- dynamic f2b = #C3;
+ dynamic f2b = #C11;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} self::Class2);
self::expect(true, core::identical(f2a, f2b));
}
static method testArgs() → dynamic {
- (core::int) → self::Class3 f3a = #C4;
+ (core::int) → self::Class3 f3a = #C12;
self::Class3 c3a = f3a(42){(core::int) → self::Class3};
self::expect(42, c3a.{self::Class3::field}{core::int});
() → Null {
@@ -157,12 +157,12 @@
f3a(42, 87); // error
^" in f3a{<inapplicable>}.(42, 87);
};
- dynamic f3b = #C4;
+ dynamic f3b = #C12;
dynamic c3b = f3b{dynamic}.call(87);
self::expect(87, c3b{dynamic}.field);
self::throws(() → dynamic => f3b{dynamic}.call());
self::throws(() → dynamic => f3b{dynamic}.call(42, 87));
- ([core::int?]) → self::Class4 f4a = #C5;
+ ([core::int?]) → self::Class4 f4a = #C13;
self::Class4 c4a = f4a(){([core::int?]) → self::Class4};
self::expect(null, c4a.{self::Class4::field}{core::int?});
self::Class4 c4b = f4a(42){([core::int?]) → self::Class4};
@@ -173,9 +173,9 @@
f4a(42, 87); // error
^" in f4a{<inapplicable>}.(42, 87);
};
- dynamic f4b = #C5;
+ dynamic f4b = #C13;
self::throws(() → dynamic => f4b{dynamic}.call(42, 87));
- (core::int, [core::int?]) → self::Class5 f5a = #C6;
+ (core::int, [core::int?]) → self::Class5 f5a = #C14;
self::Class5 c5a = f5a(42){(core::int, [core::int?]) → self::Class5};
self::expect(42, c5a.{self::Class5::field1}{core::int});
self::expect(null, c5a.{self::Class5::field2}{core::int?});
@@ -191,10 +191,10 @@
f5a(42, 87, 123); // error
^" in f5a{<inapplicable>}.(42, 87, 123);
};
- dynamic f5b = #C6;
+ dynamic f5b = #C14;
self::throws(() → dynamic => f5b{dynamic}.call());
self::throws(() → dynamic => f5b{dynamic}.call(42, 87, 123));
- (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C7;
+ (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C15;
self::Class6 c6a = f6a(42, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
self::expect(42, c6a.{self::Class6::field1}{core::int});
self::expect(null, c6a.{self::Class6::field2}{core::int?});
@@ -222,16 +222,16 @@
self::expect(87, c6c.{self::Class6::field1}{core::int});
self::expect(123, c6c.{self::Class6::field2}{core::int?});
self::expect(42, c6c.{self::Class6::field3}{core::int});
- dynamic f6b = #C7;
+ dynamic f6b = #C15;
self::throws(() → dynamic => f6b{dynamic}.call());
self::throws(() → dynamic => f6b{dynamic}.call(42), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(42, 87), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(field1: 87, field2: 87));
- () → self::Class7b f7a = #C8;
+ () → self::Class7b f7a = #C16;
self::Class7b c7a = f7a(){() → self::Class7b};
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7a);
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7b);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C9;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C17;
self::Class8b<dynamic> c8a = f8a<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -244,7 +244,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C10}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C18}) → dynamic {
try {
f(){() → dynamic};
}
@@ -259,14 +259,22 @@
}
constants {
- #C1 = null
- #C2 = redirecting-factory-tearoff self::Class1::•
- #C3 = redirecting-factory-tearoff self::Class2::named
- #C4 = redirecting-factory-tearoff self::Class3::•
- #C5 = redirecting-factory-tearoff self::Class4::•
- #C6 = redirecting-factory-tearoff self::Class5::•
- #C7 = redirecting-factory-tearoff self::Class6::•
- #C8 = redirecting-factory-tearoff self::Class7b::•
- #C9 = redirecting-factory-tearoff self::Class8b::•
- #C10 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::named
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = null
+ #C6 = constructor-tearoff self::Class5::•
+ #C7 = constructor-tearoff self::Class6::•
+ #C8 = constructor-tearoff self::Class7b::•
+ #C9 = constructor-tearoff self::Class8b::•
+ #C10 = redirecting-factory-tearoff self::Class1::•
+ #C11 = redirecting-factory-tearoff self::Class2::named
+ #C12 = redirecting-factory-tearoff self::Class3::•
+ #C13 = redirecting-factory-tearoff self::Class4::•
+ #C14 = redirecting-factory-tearoff self::Class5::•
+ #C15 = redirecting-factory-tearoff self::Class6::•
+ #C16 = redirecting-factory-tearoff self::Class7b::•
+ #C17 = redirecting-factory-tearoff self::Class8b::•
+ #C18 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.strong.transformed.expect
index 83c7798..c321ab5 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.strong.transformed.expect
@@ -46,7 +46,7 @@
import "dart:core" as core;
class Class1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1
: super core::Object::•()
;
@@ -54,7 +54,7 @@
return new self::Class1::_();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor __() → self::Class2
: super core::Object::•()
;
@@ -65,7 +65,7 @@
}
class Class3 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _(core::int field) → self::Class3
: self::Class3::field = field, super core::Object::•()
;
@@ -74,32 +74,32 @@
}
class Class4 extends core::Object {
final field core::int? field;
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
- constructor _([core::int? field = #C1]) → self::Class4
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _([core::int? field = #C5]) → self::Class4
: self::Class4::field = field, super core::Object::•()
;
- static factory •([core::int? field = #C1]) → self::Class4
+ static factory •([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
}
class Class5 extends core::Object {
final field core::int field1;
final field core::int? field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
- constructor _(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ constructor _(core::int field1, [core::int? field2 = #C5]) → self::Class5
: self::Class5::field1 = field1, self::Class5::field2 = field2, super core::Object::•()
;
- static factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static factory •(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
}
class Class6 extends core::Object {
final field core::int field1;
final field core::int? field2;
final field core::int field3;
- static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
- constructor _(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
+ constructor _(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
: self::Class6::field1 = field1, self::Class6::field2 = field2, self::Class6::field3 = field3, super core::Object::•()
;
- static factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static factory •(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
}
class Class7a extends core::Object implements self::Class7b {
@@ -108,7 +108,7 @@
;
}
class Class7b extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
static factory •() → self::Class7b
return new self::Class7a::•();
}
@@ -118,7 +118,7 @@
;
}
class Class8b<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class8b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::•::T%>
return new self::Class8a::•<self::Class8b::•::T%>();
}
@@ -129,23 +129,23 @@
self::testArgs();
}
static method testNoArgs() → dynamic {
- () → self::Class1 f1a = #C2;
+ () → self::Class1 f1a = #C10;
self::Class1 c1a = f1a(){() → self::Class1};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1);
- dynamic f1b = #C2;
+ dynamic f1b = #C10;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} self::Class1);
self::expect(true, core::identical(f1a, f1b));
- () → self::Class2 f2a = #C3;
+ () → self::Class2 f2a = #C11;
self::Class2 c2a = f2a(){() → self::Class2};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2);
- dynamic f2b = #C3;
+ dynamic f2b = #C11;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} self::Class2);
self::expect(true, core::identical(f2a, f2b));
}
static method testArgs() → dynamic {
- (core::int) → self::Class3 f3a = #C4;
+ (core::int) → self::Class3 f3a = #C12;
self::Class3 c3a = f3a(42){(core::int) → self::Class3};
self::expect(42, c3a.{self::Class3::field}{core::int});
() → Null {
@@ -157,12 +157,12 @@
f3a(42, 87); // error
^" in f3a{<inapplicable>}.(42, 87);
};
- dynamic f3b = #C4;
+ dynamic f3b = #C12;
dynamic c3b = f3b{dynamic}.call(87);
self::expect(87, c3b{dynamic}.field);
self::throws(() → dynamic => f3b{dynamic}.call());
self::throws(() → dynamic => f3b{dynamic}.call(42, 87));
- ([core::int?]) → self::Class4 f4a = #C5;
+ ([core::int?]) → self::Class4 f4a = #C13;
self::Class4 c4a = f4a(){([core::int?]) → self::Class4};
self::expect(null, c4a.{self::Class4::field}{core::int?});
self::Class4 c4b = f4a(42){([core::int?]) → self::Class4};
@@ -173,9 +173,9 @@
f4a(42, 87); // error
^" in f4a{<inapplicable>}.(42, 87);
};
- dynamic f4b = #C5;
+ dynamic f4b = #C13;
self::throws(() → dynamic => f4b{dynamic}.call(42, 87));
- (core::int, [core::int?]) → self::Class5 f5a = #C6;
+ (core::int, [core::int?]) → self::Class5 f5a = #C14;
self::Class5 c5a = f5a(42){(core::int, [core::int?]) → self::Class5};
self::expect(42, c5a.{self::Class5::field1}{core::int});
self::expect(null, c5a.{self::Class5::field2}{core::int?});
@@ -191,10 +191,10 @@
f5a(42, 87, 123); // error
^" in f5a{<inapplicable>}.(42, 87, 123);
};
- dynamic f5b = #C6;
+ dynamic f5b = #C14;
self::throws(() → dynamic => f5b{dynamic}.call());
self::throws(() → dynamic => f5b{dynamic}.call(42, 87, 123));
- (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C7;
+ (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C15;
self::Class6 c6a = f6a(42, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
self::expect(42, c6a.{self::Class6::field1}{core::int});
self::expect(null, c6a.{self::Class6::field2}{core::int?});
@@ -222,16 +222,16 @@
self::expect(87, c6c.{self::Class6::field1}{core::int});
self::expect(123, c6c.{self::Class6::field2}{core::int?});
self::expect(42, c6c.{self::Class6::field3}{core::int});
- dynamic f6b = #C7;
+ dynamic f6b = #C15;
self::throws(() → dynamic => f6b{dynamic}.call());
self::throws(() → dynamic => f6b{dynamic}.call(42), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(42, 87), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(field1: 87, field2: 87));
- () → self::Class7b f7a = #C8;
+ () → self::Class7b f7a = #C16;
self::Class7b c7a = f7a(){() → self::Class7b};
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7a);
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7b);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C9;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C17;
self::Class8b<dynamic> c8a = f8a<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -244,7 +244,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C10}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C18}) → dynamic {
try {
f(){() → dynamic};
}
@@ -259,14 +259,22 @@
}
constants {
- #C1 = null
- #C2 = redirecting-factory-tearoff self::Class1::•
- #C3 = redirecting-factory-tearoff self::Class2::named
- #C4 = redirecting-factory-tearoff self::Class3::•
- #C5 = redirecting-factory-tearoff self::Class4::•
- #C6 = redirecting-factory-tearoff self::Class5::•
- #C7 = redirecting-factory-tearoff self::Class6::•
- #C8 = redirecting-factory-tearoff self::Class7b::•
- #C9 = redirecting-factory-tearoff self::Class8b::•
- #C10 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::named
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = null
+ #C6 = constructor-tearoff self::Class5::•
+ #C7 = constructor-tearoff self::Class6::•
+ #C8 = constructor-tearoff self::Class7b::•
+ #C9 = constructor-tearoff self::Class8b::•
+ #C10 = redirecting-factory-tearoff self::Class1::•
+ #C11 = redirecting-factory-tearoff self::Class2::named
+ #C12 = redirecting-factory-tearoff self::Class3::•
+ #C13 = redirecting-factory-tearoff self::Class4::•
+ #C14 = redirecting-factory-tearoff self::Class5::•
+ #C15 = redirecting-factory-tearoff self::Class6::•
+ #C16 = redirecting-factory-tearoff self::Class7b::•
+ #C17 = redirecting-factory-tearoff self::Class8b::•
+ #C18 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.expect
index 1ff3758..05e5e9d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.expect
@@ -46,7 +46,7 @@
import "dart:core" as core;
class Class1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1
: super core::Object::•()
;
@@ -54,7 +54,7 @@
return new self::Class1::_();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor __() → self::Class2
: super core::Object::•()
;
@@ -65,7 +65,7 @@
}
class Class3 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _(core::int field) → self::Class3
: self::Class3::field = field, super core::Object::•()
;
@@ -74,32 +74,32 @@
}
class Class4 extends core::Object {
final field core::int? field;
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
- constructor _([core::int? field = #C1]) → self::Class4
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _([core::int? field = #C5]) → self::Class4
: self::Class4::field = field, super core::Object::•()
;
- static factory •([core::int? field = #C1]) → self::Class4
+ static factory •([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
}
class Class5 extends core::Object {
final field core::int field1;
final field core::int? field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
- constructor _(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ constructor _(core::int field1, [core::int? field2 = #C5]) → self::Class5
: self::Class5::field1 = field1, self::Class5::field2 = field2, super core::Object::•()
;
- static factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static factory •(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
}
class Class6 extends core::Object {
final field core::int field1;
final field core::int? field2;
final field core::int field3;
- static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
- constructor _(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
+ constructor _(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
: self::Class6::field1 = field1, self::Class6::field2 = field2, self::Class6::field3 = field3, super core::Object::•()
;
- static factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static factory •(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
}
class Class7a extends core::Object implements self::Class7b {
@@ -108,7 +108,7 @@
;
}
class Class7b extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
static factory •() → self::Class7b
return new self::Class7a::•();
}
@@ -118,7 +118,7 @@
;
}
class Class8b<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class8b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::•::T%>
return new self::Class8a::•<self::Class8b::•::T%>();
}
@@ -129,23 +129,23 @@
self::testArgs();
}
static method testNoArgs() → dynamic {
- () → self::Class1 f1a = #C2;
+ () → self::Class1 f1a = #C10;
self::Class1 c1a = f1a(){() → self::Class1};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1);
- dynamic f1b = #C2;
+ dynamic f1b = #C10;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} self::Class1);
self::expect(true, core::identical(f1a, f1b));
- () → self::Class2 f2a = #C3;
+ () → self::Class2 f2a = #C11;
self::Class2 c2a = f2a(){() → self::Class2};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2);
- dynamic f2b = #C3;
+ dynamic f2b = #C11;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} self::Class2);
self::expect(true, core::identical(f2a, f2b));
}
static method testArgs() → dynamic {
- (core::int) → self::Class3 f3a = #C4;
+ (core::int) → self::Class3 f3a = #C12;
self::Class3 c3a = f3a(42){(core::int) → self::Class3};
self::expect(42, c3a.{self::Class3::field}{core::int});
() → Null {
@@ -157,12 +157,12 @@
f3a(42, 87); // error
^" in f3a{<inapplicable>}.(42, 87);
};
- dynamic f3b = #C4;
+ dynamic f3b = #C12;
dynamic c3b = f3b{dynamic}.call(87);
self::expect(87, c3b{dynamic}.field);
self::throws(() → dynamic => f3b{dynamic}.call());
self::throws(() → dynamic => f3b{dynamic}.call(42, 87));
- ([core::int?]) → self::Class4 f4a = #C5;
+ ([core::int?]) → self::Class4 f4a = #C13;
self::Class4 c4a = f4a(){([core::int?]) → self::Class4};
self::expect(null, c4a.{self::Class4::field}{core::int?});
self::Class4 c4b = f4a(42){([core::int?]) → self::Class4};
@@ -173,9 +173,9 @@
f4a(42, 87); // error
^" in f4a{<inapplicable>}.(42, 87);
};
- dynamic f4b = #C5;
+ dynamic f4b = #C13;
self::throws(() → dynamic => f4b{dynamic}.call(42, 87));
- (core::int, [core::int?]) → self::Class5 f5a = #C6;
+ (core::int, [core::int?]) → self::Class5 f5a = #C14;
self::Class5 c5a = f5a(42){(core::int, [core::int?]) → self::Class5};
self::expect(42, c5a.{self::Class5::field1}{core::int});
self::expect(null, c5a.{self::Class5::field2}{core::int?});
@@ -191,10 +191,10 @@
f5a(42, 87, 123); // error
^" in f5a{<inapplicable>}.(42, 87, 123);
};
- dynamic f5b = #C6;
+ dynamic f5b = #C14;
self::throws(() → dynamic => f5b{dynamic}.call());
self::throws(() → dynamic => f5b{dynamic}.call(42, 87, 123));
- (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C7;
+ (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C15;
self::Class6 c6a = f6a(42, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
self::expect(42, c6a.{self::Class6::field1}{core::int});
self::expect(null, c6a.{self::Class6::field2}{core::int?});
@@ -222,16 +222,16 @@
self::expect(87, c6c.{self::Class6::field1}{core::int});
self::expect(123, c6c.{self::Class6::field2}{core::int?});
self::expect(42, c6c.{self::Class6::field3}{core::int});
- dynamic f6b = #C7;
+ dynamic f6b = #C15;
self::throws(() → dynamic => f6b{dynamic}.call());
self::throws(() → dynamic => f6b{dynamic}.call(42), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(42, 87), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(field1: 87, field2: 87));
- () → self::Class7b f7a = #C8;
+ () → self::Class7b f7a = #C16;
self::Class7b c7a = f7a(){() → self::Class7b};
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7a);
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7b);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C9;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C17;
self::Class8b<dynamic> c8a = f8a<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -244,7 +244,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C10}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C18}) → dynamic {
try {
f(){() → dynamic};
}
@@ -259,14 +259,22 @@
}
constants {
- #C1 = null
- #C2 = redirecting-factory-tearoff self::Class1::•
- #C3 = redirecting-factory-tearoff self::Class2::named
- #C4 = redirecting-factory-tearoff self::Class3::•
- #C5 = redirecting-factory-tearoff self::Class4::•
- #C6 = redirecting-factory-tearoff self::Class5::•
- #C7 = redirecting-factory-tearoff self::Class6::•
- #C8 = redirecting-factory-tearoff self::Class7b::•
- #C9 = redirecting-factory-tearoff self::Class8b::•
- #C10 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::named
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = null
+ #C6 = constructor-tearoff self::Class5::•
+ #C7 = constructor-tearoff self::Class6::•
+ #C8 = constructor-tearoff self::Class7b::•
+ #C9 = constructor-tearoff self::Class8b::•
+ #C10 = redirecting-factory-tearoff self::Class1::•
+ #C11 = redirecting-factory-tearoff self::Class2::named
+ #C12 = redirecting-factory-tearoff self::Class3::•
+ #C13 = redirecting-factory-tearoff self::Class4::•
+ #C14 = redirecting-factory-tearoff self::Class5::•
+ #C15 = redirecting-factory-tearoff self::Class6::•
+ #C16 = redirecting-factory-tearoff self::Class7b::•
+ #C17 = redirecting-factory-tearoff self::Class8b::•
+ #C18 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect
index 3714e57..7d012c0 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect
@@ -82,3 +82,15 @@
;
static method throws(() → dynamic f, {core::bool inSoundModeOnly}) → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:13:7 -> ConstructorTearOffConstant(Class1.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:18:7 -> ConstructorTearOffConstant(Class2.named)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:46:7 -> ConstructorTearOffConstant(Class3.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:53:7 -> ConstructorTearOffConstant(Class4.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:60:7 -> ConstructorTearOffConstant(Class5.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:68:7 -> ConstructorTearOffConstant(Class6.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:82:7 -> ConstructorTearOffConstant(Class7b.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_tear_off.dart:90:7 -> ConstructorTearOffConstant(Class8b.)
+Extra constant evaluation: evaluated: 31, effectively constant: 8
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.transformed.expect
index 83c7798..c321ab5 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.transformed.expect
@@ -46,7 +46,7 @@
import "dart:core" as core;
class Class1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1
: super core::Object::•()
;
@@ -54,7 +54,7 @@
return new self::Class1::_();
}
class Class2 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor __() → self::Class2
: super core::Object::•()
;
@@ -65,7 +65,7 @@
}
class Class3 extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
constructor _(core::int field) → self::Class3
: self::Class3::field = field, super core::Object::•()
;
@@ -74,32 +74,32 @@
}
class Class4 extends core::Object {
final field core::int? field;
- static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
- constructor _([core::int? field = #C1]) → self::Class4
+ static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+ constructor _([core::int? field = #C5]) → self::Class4
: self::Class4::field = field, super core::Object::•()
;
- static factory •([core::int? field = #C1]) → self::Class4
+ static factory •([core::int? field = #C5]) → self::Class4
return new self::Class4::_(field);
}
class Class5 extends core::Object {
final field core::int field1;
final field core::int? field2;
- static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
- constructor _(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ constructor _(core::int field1, [core::int? field2 = #C5]) → self::Class5
: self::Class5::field1 = field1, self::Class5::field2 = field2, super core::Object::•()
;
- static factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5
+ static factory •(core::int field1, [core::int? field2 = #C5]) → self::Class5
return new self::Class5::_(field1, field2);
}
class Class6 extends core::Object {
final field core::int field1;
final field core::int? field2;
final field core::int field3;
- static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
- constructor _(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
+ constructor _(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
: self::Class6::field1 = field1, self::Class6::field2 = field2, self::Class6::field3 = field3, super core::Object::•()
;
- static factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
+ static factory •(core::int field1, {core::int? field2 = #C5, required core::int field3 = #C5}) → self::Class6
return new self::Class6::_(field1, field2: field2, field3: field3);
}
class Class7a extends core::Object implements self::Class7b {
@@ -108,7 +108,7 @@
;
}
class Class7b extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
static factory •() → self::Class7b
return new self::Class7a::•();
}
@@ -118,7 +118,7 @@
;
}
class Class8b<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class8b::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C9]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::•::T%>
return new self::Class8a::•<self::Class8b::•::T%>();
}
@@ -129,23 +129,23 @@
self::testArgs();
}
static method testNoArgs() → dynamic {
- () → self::Class1 f1a = #C2;
+ () → self::Class1 f1a = #C10;
self::Class1 c1a = f1a(){() → self::Class1};
self::expect(true, c1a is{ForNonNullableByDefault} self::Class1);
- dynamic f1b = #C2;
+ dynamic f1b = #C10;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} self::Class1);
self::expect(true, core::identical(f1a, f1b));
- () → self::Class2 f2a = #C3;
+ () → self::Class2 f2a = #C11;
self::Class2 c2a = f2a(){() → self::Class2};
self::expect(true, c2a is{ForNonNullableByDefault} self::Class2);
- dynamic f2b = #C3;
+ dynamic f2b = #C11;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} self::Class2);
self::expect(true, core::identical(f2a, f2b));
}
static method testArgs() → dynamic {
- (core::int) → self::Class3 f3a = #C4;
+ (core::int) → self::Class3 f3a = #C12;
self::Class3 c3a = f3a(42){(core::int) → self::Class3};
self::expect(42, c3a.{self::Class3::field}{core::int});
() → Null {
@@ -157,12 +157,12 @@
f3a(42, 87); // error
^" in f3a{<inapplicable>}.(42, 87);
};
- dynamic f3b = #C4;
+ dynamic f3b = #C12;
dynamic c3b = f3b{dynamic}.call(87);
self::expect(87, c3b{dynamic}.field);
self::throws(() → dynamic => f3b{dynamic}.call());
self::throws(() → dynamic => f3b{dynamic}.call(42, 87));
- ([core::int?]) → self::Class4 f4a = #C5;
+ ([core::int?]) → self::Class4 f4a = #C13;
self::Class4 c4a = f4a(){([core::int?]) → self::Class4};
self::expect(null, c4a.{self::Class4::field}{core::int?});
self::Class4 c4b = f4a(42){([core::int?]) → self::Class4};
@@ -173,9 +173,9 @@
f4a(42, 87); // error
^" in f4a{<inapplicable>}.(42, 87);
};
- dynamic f4b = #C5;
+ dynamic f4b = #C13;
self::throws(() → dynamic => f4b{dynamic}.call(42, 87));
- (core::int, [core::int?]) → self::Class5 f5a = #C6;
+ (core::int, [core::int?]) → self::Class5 f5a = #C14;
self::Class5 c5a = f5a(42){(core::int, [core::int?]) → self::Class5};
self::expect(42, c5a.{self::Class5::field1}{core::int});
self::expect(null, c5a.{self::Class5::field2}{core::int?});
@@ -191,10 +191,10 @@
f5a(42, 87, 123); // error
^" in f5a{<inapplicable>}.(42, 87, 123);
};
- dynamic f5b = #C6;
+ dynamic f5b = #C14;
self::throws(() → dynamic => f5b{dynamic}.call());
self::throws(() → dynamic => f5b{dynamic}.call(42, 87, 123));
- (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C7;
+ (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C15;
self::Class6 c6a = f6a(42, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
self::expect(42, c6a.{self::Class6::field1}{core::int});
self::expect(null, c6a.{self::Class6::field2}{core::int?});
@@ -222,16 +222,16 @@
self::expect(87, c6c.{self::Class6::field1}{core::int});
self::expect(123, c6c.{self::Class6::field2}{core::int?});
self::expect(42, c6c.{self::Class6::field3}{core::int});
- dynamic f6b = #C7;
+ dynamic f6b = #C15;
self::throws(() → dynamic => f6b{dynamic}.call());
self::throws(() → dynamic => f6b{dynamic}.call(42), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(42, 87), inSoundModeOnly: true);
self::throws(() → dynamic => f6b{dynamic}.call(field1: 87, field2: 87));
- () → self::Class7b f7a = #C8;
+ () → self::Class7b f7a = #C16;
self::Class7b c7a = f7a(){() → self::Class7b};
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7a);
self::expect(true, c7a is{ForNonNullableByDefault} self::Class7b);
- <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C9;
+ <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C17;
self::Class8b<dynamic> c8a = f8a<dynamic>(){() → self::Class8b<dynamic>};
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8a<dynamic>);
self::expect(true, c8a is{ForNonNullableByDefault} self::Class8b<dynamic>);
@@ -244,7 +244,7 @@
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
-static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C10}) → dynamic {
+static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C18}) → dynamic {
try {
f(){() → dynamic};
}
@@ -259,14 +259,22 @@
}
constants {
- #C1 = null
- #C2 = redirecting-factory-tearoff self::Class1::•
- #C3 = redirecting-factory-tearoff self::Class2::named
- #C4 = redirecting-factory-tearoff self::Class3::•
- #C5 = redirecting-factory-tearoff self::Class4::•
- #C6 = redirecting-factory-tearoff self::Class5::•
- #C7 = redirecting-factory-tearoff self::Class6::•
- #C8 = redirecting-factory-tearoff self::Class7b::•
- #C9 = redirecting-factory-tearoff self::Class8b::•
- #C10 = false
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = constructor-tearoff self::Class2::named
+ #C3 = constructor-tearoff self::Class3::•
+ #C4 = constructor-tearoff self::Class4::•
+ #C5 = null
+ #C6 = constructor-tearoff self::Class5::•
+ #C7 = constructor-tearoff self::Class6::•
+ #C8 = constructor-tearoff self::Class7b::•
+ #C9 = constructor-tearoff self::Class8b::•
+ #C10 = redirecting-factory-tearoff self::Class1::•
+ #C11 = redirecting-factory-tearoff self::Class2::named
+ #C12 = redirecting-factory-tearoff self::Class3::•
+ #C13 = redirecting-factory-tearoff self::Class4::•
+ #C14 = redirecting-factory-tearoff self::Class5::•
+ #C15 = redirecting-factory-tearoff self::Class6::•
+ #C16 = redirecting-factory-tearoff self::Class7b::•
+ #C17 = redirecting-factory-tearoff self::Class8b::•
+ #C18 = false
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.strong.expect
index ba3e087..a3ee0a4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.strong.expect
@@ -83,5 +83,5 @@
constants {
#C1 = static-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::int>
+ #C2 = instantiation #C1 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.strong.transformed.expect
index ba3e087..a3ee0a4 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.strong.transformed.expect
@@ -83,5 +83,5 @@
constants {
#C1 = static-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::int>
+ #C2 = instantiation #C1 <core::int>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.weak.expect
index 59bdc1d..6f79e9e 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.weak.expect
@@ -83,5 +83,5 @@
constants {
#C1 = static-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::int*>
+ #C2 = instantiation #C1 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.weak.transformed.expect
index 59bdc1d..6f79e9e 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/static_tearoff_from_instantiated_class.dart.weak.transformed.expect
@@ -83,5 +83,5 @@
constants {
#C1 = static-tearoff self::A::foo
- #C2 = instantiation self::A::foo <core::int*>
+ #C2 = instantiation #C1 <core::int*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.strong.expect
index 6c0edc7..fb71a2b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.strong.expect
@@ -125,17 +125,17 @@
constants {
#C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <>
+ #C2 = instantiation #C1 <>
#C3 = constructor-tearoff self::B::•
- #C4 = instantiation self::B::• <core::String>
+ #C4 = instantiation #C3 <core::String>
#C5 = constructor-tearoff self::B::foo
- #C6 = instantiation self::B::foo <core::String>
- #C7 = static-tearoff self::B::bar
- #C8 = instantiation self::B::bar <core::String>
- #C9 = instantiation self::B::• <core::num>
- #C10 = instantiation self::B::foo <core::num>
- #C11 = instantiation self::B::bar <core::num>
+ #C6 = instantiation #C5 <core::String>
+ #C7 = constructor-tearoff self::B::bar
+ #C8 = instantiation #C7 <core::String>
+ #C9 = instantiation #C3 <core::num>
+ #C10 = instantiation #C5 <core::num>
+ #C11 = instantiation #C7 <core::num>
#C12 = typedef-tearoff <X extends core::num>.(#C3<X>)
#C13 = typedef-tearoff <X extends core::num, unrelated Y extends core::String>.(#C3<X>)
- #C14 = instantiation self::B::• <Never>
+ #C14 = instantiation #C3 <Never>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.strong.transformed.expect
index 9c2c674..d5b1440 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.strong.transformed.expect
@@ -125,17 +125,17 @@
constants {
#C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <>
+ #C2 = instantiation #C1 <>
#C3 = constructor-tearoff self::B::•
- #C4 = instantiation self::B::• <core::String>
+ #C4 = instantiation #C3 <core::String>
#C5 = constructor-tearoff self::B::foo
- #C6 = instantiation self::B::foo <core::String>
- #C7 = static-tearoff self::B::bar
- #C8 = instantiation self::B::bar <core::String>
- #C9 = instantiation self::B::• <core::num>
- #C10 = instantiation self::B::foo <core::num>
- #C11 = instantiation self::B::bar <core::num>
+ #C6 = instantiation #C5 <core::String>
+ #C7 = constructor-tearoff self::B::bar
+ #C8 = instantiation #C7 <core::String>
+ #C9 = instantiation #C3 <core::num>
+ #C10 = instantiation #C5 <core::num>
+ #C11 = instantiation #C7 <core::num>
#C12 = typedef-tearoff <X extends core::num>.(#C3<X>)
#C13 = typedef-tearoff <X extends core::num, unrelated Y extends core::String>.(#C3<X>)
- #C14 = instantiation self::B::• <Never>
+ #C14 = instantiation #C3 <Never>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.weak.expect
index 8de913d..f075526 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.weak.expect
@@ -125,17 +125,17 @@
constants {
#C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <>
+ #C2 = instantiation #C1 <>
#C3 = constructor-tearoff self::B::•
- #C4 = instantiation self::B::• <core::String*>
+ #C4 = instantiation #C3 <core::String*>
#C5 = constructor-tearoff self::B::foo
- #C6 = instantiation self::B::foo <core::String*>
- #C7 = static-tearoff self::B::bar
- #C8 = instantiation self::B::bar <core::String*>
- #C9 = instantiation self::B::• <core::num*>
- #C10 = instantiation self::B::foo <core::num*>
- #C11 = instantiation self::B::bar <core::num*>
+ #C6 = instantiation #C5 <core::String*>
+ #C7 = constructor-tearoff self::B::bar
+ #C8 = instantiation #C7 <core::String*>
+ #C9 = instantiation #C3 <core::num*>
+ #C10 = instantiation #C5 <core::num*>
+ #C11 = instantiation #C7 <core::num*>
#C12 = typedef-tearoff <X extends core::num>.(#C3<X>)
#C13 = typedef-tearoff <X extends core::num, unrelated Y extends core::String>.(#C3<X>)
- #C14 = instantiation self::B::• <Never*>
+ #C14 = instantiation #C3 <Never*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.weak.transformed.expect
index 82dceb0..e9462e1 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/typedef_tearoffs.dart.weak.transformed.expect
@@ -125,17 +125,17 @@
constants {
#C1 = constructor-tearoff self::A::•
- #C2 = instantiation self::A::• <>
+ #C2 = instantiation #C1 <>
#C3 = constructor-tearoff self::B::•
- #C4 = instantiation self::B::• <core::String*>
+ #C4 = instantiation #C3 <core::String*>
#C5 = constructor-tearoff self::B::foo
- #C6 = instantiation self::B::foo <core::String*>
- #C7 = static-tearoff self::B::bar
- #C8 = instantiation self::B::bar <core::String*>
- #C9 = instantiation self::B::• <core::num*>
- #C10 = instantiation self::B::foo <core::num*>
- #C11 = instantiation self::B::bar <core::num*>
+ #C6 = instantiation #C5 <core::String*>
+ #C7 = constructor-tearoff self::B::bar
+ #C8 = instantiation #C7 <core::String*>
+ #C9 = instantiation #C3 <core::num*>
+ #C10 = instantiation #C5 <core::num*>
+ #C11 = instantiation #C7 <core::num*>
#C12 = typedef-tearoff <X extends core::num>.(#C3<X>)
#C13 = typedef-tearoff <X extends core::num, unrelated Y extends core::String>.(#C3<X>)
- #C14 = instantiation self::B::• <Never*>
+ #C14 = instantiation #C3 <Never*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.strong.expect
index 87df92f..34009a6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirectingFactory, self::A::redirectingFactoryChild]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
constructor •() → self::A
: super core::Object::•()
;
@@ -33,20 +33,20 @@
}
static method test() → dynamic {
new self::D::•(1);
- #C2;
+ #C4;
new self::C::•(1);
- () → self::A f1 = #C3;
- () → self::B f2 = #C4;
- (core::int) → self::C f3 = #C5;
- (core::int) → self::D f4 = #C6;
+ () → self::A f1 = #C5;
+ () → self::B f2 = #C6;
+ (core::int) → self::C f3 = #C7;
+ (core::int) → self::D f4 = #C8;
f1(){() → self::A};
f2(){() → self::B};
f3(1){(core::int) → self::C};
f4(1){(core::int) → self::D};
- () → self::A g1 = #C3;
- () → self::B g2 = #C4;
- (core::int) → self::C g3 = #C5;
- (core::int) → self::D g4 = #C6;
+ () → self::A g1 = #C5;
+ () → self::B g2 = #C6;
+ (core::int) → self::C g3 = #C7;
+ (core::int) → self::D g4 = #C8;
g1(){() → self::A};
g2(){() → self::B};
g3(1){(core::int) → self::C};
@@ -55,12 +55,14 @@
static method main() → dynamic {}
constants {
- #C1 = 1
- #C2 = self::C {x:#C1}
- #C3 = constructor-tearoff self::A::•
- #C4 = constructor-tearoff self::B::•
- #C5 = constructor-tearoff self::C::•
- #C6 = constructor-tearoff self::D::•
+ #C1 = constructor-tearoff self::A::redirectingFactory
+ #C2 = constructor-tearoff self::A::redirectingFactoryChild
+ #C3 = 1
+ #C4 = self::C {x:#C3}
+ #C5 = constructor-tearoff self::A::•
+ #C6 = constructor-tearoff self::B::•
+ #C7 = constructor-tearoff self::C::•
+ #C8 = constructor-tearoff self::D::•
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.strong.transformed.expect
index 87df92f..34009a6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirectingFactory, self::A::redirectingFactoryChild]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
constructor •() → self::A
: super core::Object::•()
;
@@ -33,20 +33,20 @@
}
static method test() → dynamic {
new self::D::•(1);
- #C2;
+ #C4;
new self::C::•(1);
- () → self::A f1 = #C3;
- () → self::B f2 = #C4;
- (core::int) → self::C f3 = #C5;
- (core::int) → self::D f4 = #C6;
+ () → self::A f1 = #C5;
+ () → self::B f2 = #C6;
+ (core::int) → self::C f3 = #C7;
+ (core::int) → self::D f4 = #C8;
f1(){() → self::A};
f2(){() → self::B};
f3(1){(core::int) → self::C};
f4(1){(core::int) → self::D};
- () → self::A g1 = #C3;
- () → self::B g2 = #C4;
- (core::int) → self::C g3 = #C5;
- (core::int) → self::D g4 = #C6;
+ () → self::A g1 = #C5;
+ () → self::B g2 = #C6;
+ (core::int) → self::C g3 = #C7;
+ (core::int) → self::D g4 = #C8;
g1(){() → self::A};
g2(){() → self::B};
g3(1){(core::int) → self::C};
@@ -55,12 +55,14 @@
static method main() → dynamic {}
constants {
- #C1 = 1
- #C2 = self::C {x:#C1}
- #C3 = constructor-tearoff self::A::•
- #C4 = constructor-tearoff self::B::•
- #C5 = constructor-tearoff self::C::•
- #C6 = constructor-tearoff self::D::•
+ #C1 = constructor-tearoff self::A::redirectingFactory
+ #C2 = constructor-tearoff self::A::redirectingFactoryChild
+ #C3 = 1
+ #C4 = self::C {x:#C3}
+ #C5 = constructor-tearoff self::A::•
+ #C6 = constructor-tearoff self::B::•
+ #C7 = constructor-tearoff self::C::•
+ #C8 = constructor-tearoff self::D::•
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.expect
index 87df92f..34009a6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirectingFactory, self::A::redirectingFactoryChild]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
constructor •() → self::A
: super core::Object::•()
;
@@ -33,20 +33,20 @@
}
static method test() → dynamic {
new self::D::•(1);
- #C2;
+ #C4;
new self::C::•(1);
- () → self::A f1 = #C3;
- () → self::B f2 = #C4;
- (core::int) → self::C f3 = #C5;
- (core::int) → self::D f4 = #C6;
+ () → self::A f1 = #C5;
+ () → self::B f2 = #C6;
+ (core::int) → self::C f3 = #C7;
+ (core::int) → self::D f4 = #C8;
f1(){() → self::A};
f2(){() → self::B};
f3(1){(core::int) → self::C};
f4(1){(core::int) → self::D};
- () → self::A g1 = #C3;
- () → self::B g2 = #C4;
- (core::int) → self::C g3 = #C5;
- (core::int) → self::D g4 = #C6;
+ () → self::A g1 = #C5;
+ () → self::B g2 = #C6;
+ (core::int) → self::C g3 = #C7;
+ (core::int) → self::D g4 = #C8;
g1(){() → self::A};
g2(){() → self::B};
g3(1){(core::int) → self::C};
@@ -55,12 +55,14 @@
static method main() → dynamic {}
constants {
- #C1 = 1
- #C2 = self::C {x:#C1}
- #C3 = constructor-tearoff self::A::•
- #C4 = constructor-tearoff self::B::•
- #C5 = constructor-tearoff self::C::•
- #C6 = constructor-tearoff self::D::•
+ #C1 = constructor-tearoff self::A::redirectingFactory
+ #C2 = constructor-tearoff self::A::redirectingFactoryChild
+ #C3 = 1
+ #C4 = self::C {x:#C3}
+ #C5 = constructor-tearoff self::A::•
+ #C6 = constructor-tearoff self::B::•
+ #C7 = constructor-tearoff self::C::•
+ #C8 = constructor-tearoff self::D::•
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.outline.expect
index 0041523..c11e3fa 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.outline.expect
@@ -31,3 +31,9 @@
;
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///unnamed_constructor.dart:5:7 -> ConstructorTearOffConstant(A.redirectingFactory)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///unnamed_constructor.dart:5:7 -> ConstructorTearOffConstant(A.redirectingFactoryChild)
+Extra constant evaluation: evaluated: 6, effectively constant: 2
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.transformed.expect
index 87df92f..34009a6 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/unnamed_constructor.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redirectingFactory, self::A::redirectingFactoryChild]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
constructor •() → self::A
: super core::Object::•()
;
@@ -33,20 +33,20 @@
}
static method test() → dynamic {
new self::D::•(1);
- #C2;
+ #C4;
new self::C::•(1);
- () → self::A f1 = #C3;
- () → self::B f2 = #C4;
- (core::int) → self::C f3 = #C5;
- (core::int) → self::D f4 = #C6;
+ () → self::A f1 = #C5;
+ () → self::B f2 = #C6;
+ (core::int) → self::C f3 = #C7;
+ (core::int) → self::D f4 = #C8;
f1(){() → self::A};
f2(){() → self::B};
f3(1){(core::int) → self::C};
f4(1){(core::int) → self::D};
- () → self::A g1 = #C3;
- () → self::B g2 = #C4;
- (core::int) → self::C g3 = #C5;
- (core::int) → self::D g4 = #C6;
+ () → self::A g1 = #C5;
+ () → self::B g2 = #C6;
+ (core::int) → self::C g3 = #C7;
+ (core::int) → self::D g4 = #C8;
g1(){() → self::A};
g2(){() → self::B};
g3(1){(core::int) → self::C};
@@ -55,12 +55,14 @@
static method main() → dynamic {}
constants {
- #C1 = 1
- #C2 = self::C {x:#C1}
- #C3 = constructor-tearoff self::A::•
- #C4 = constructor-tearoff self::B::•
- #C5 = constructor-tearoff self::C::•
- #C6 = constructor-tearoff self::D::•
+ #C1 = constructor-tearoff self::A::redirectingFactory
+ #C2 = constructor-tearoff self::A::redirectingFactoryChild
+ #C3 = 1
+ #C4 = self::C {x:#C3}
+ #C5 = constructor-tearoff self::A::•
+ #C6 = constructor-tearoff self::B::•
+ #C7 = constructor-tearoff self::C::•
+ #C8 = constructor-tearoff self::D::•
}
diff --git a/pkg/front_end/testcases/dartdevc/issue47108.dart.strong.expect b/pkg/front_end/testcases/dartdevc/issue47108.dart.strong.expect
index fb9bcc0..177dd51 100644
--- a/pkg/front_end/testcases/dartdevc/issue47108.dart.strong.expect
+++ b/pkg/front_end/testcases/dartdevc/issue47108.dart.strong.expect
@@ -19,6 +19,6 @@
constants {
#C1 = static-tearoff self::C::_#new#tearOff
- #C2 = instantiation self::C::_#new#tearOff <core::int>
- #C3 = instantiation self::C::_#new#tearOff <core::String>
+ #C2 = instantiation #C1 <core::int>
+ #C3 = instantiation #C1 <core::String>
}
diff --git a/pkg/front_end/testcases/dartdevc/issue47108.dart.strong.transformed.expect b/pkg/front_end/testcases/dartdevc/issue47108.dart.strong.transformed.expect
index bae63cb..acaab65 100644
--- a/pkg/front_end/testcases/dartdevc/issue47108.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/dartdevc/issue47108.dart.strong.transformed.expect
@@ -19,8 +19,8 @@
constants {
#C1 = static-tearoff self::C::_#new#tearOff
- #C2 = instantiation self::C::_#new#tearOff <core::int>
- #C3 = instantiation self::C::_#new#tearOff <core::String>
+ #C2 = instantiation #C1 <core::int>
+ #C3 = instantiation #C1 <core::String>
}
Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/dartdevc/issue47108.dart.weak.expect b/pkg/front_end/testcases/dartdevc/issue47108.dart.weak.expect
index 04f3df1..39841ce 100644
--- a/pkg/front_end/testcases/dartdevc/issue47108.dart.weak.expect
+++ b/pkg/front_end/testcases/dartdevc/issue47108.dart.weak.expect
@@ -19,6 +19,6 @@
constants {
#C1 = static-tearoff self::C::_#new#tearOff
- #C2 = instantiation self::C::_#new#tearOff <core::int*>
- #C3 = instantiation self::C::_#new#tearOff <core::String*>
+ #C2 = instantiation #C1 <core::int*>
+ #C3 = instantiation #C1 <core::String*>
}
diff --git a/pkg/front_end/testcases/dartdevc/issue47108.dart.weak.transformed.expect b/pkg/front_end/testcases/dartdevc/issue47108.dart.weak.transformed.expect
index 0f3b2dc..3e71f95 100644
--- a/pkg/front_end/testcases/dartdevc/issue47108.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/dartdevc/issue47108.dart.weak.transformed.expect
@@ -19,8 +19,8 @@
constants {
#C1 = static-tearoff self::C::_#new#tearOff
- #C2 = instantiation self::C::_#new#tearOff <core::int*>
- #C3 = instantiation self::C::_#new#tearOff <core::String*>
+ #C2 = instantiation #C1 <core::int*>
+ #C3 = instantiation #C1 <core::String*>
}
Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.expect b/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.expect
index 36647b1..d76d693 100644
--- a/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.expect
@@ -25,7 +25,7 @@
;
}
abstract class B extends core::Object implements self::A {
- static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •() → self::B
return invalid-expression "pkg/front_end/testcases/general/abstract_instantiation.dart:8:17: Error: The constructor function type 'A Function()' isn't a subtype of 'B Function()'.
- 'A' is from 'pkg/front_end/testcases/general/abstract_instantiation.dart'.
@@ -42,3 +42,7 @@
^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.outline.expect b/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.outline.expect
index ff08754..8f5d709 100644
--- a/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.outline.expect
@@ -32,3 +32,8 @@
;
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///abstract_instantiation.dart:7:16 -> ConstructorTearOffConstant(B.)
+Extra constant evaluation: evaluated: 2, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.transformed.expect
index 36647b1..d76d693 100644
--- a/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/abstract_instantiation.dart.weak.transformed.expect
@@ -25,7 +25,7 @@
;
}
abstract class B extends core::Object implements self::A {
- static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •() → self::B
return invalid-expression "pkg/front_end/testcases/general/abstract_instantiation.dart:8:17: Error: The constructor function type 'A Function()' isn't a subtype of 'B Function()'.
- 'A' is from 'pkg/front_end/testcases/general/abstract_instantiation.dart'.
@@ -42,3 +42,7 @@
^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/general/constants/potentially_constant_type.dart.weak.expect b/pkg/front_end/testcases/general/constants/potentially_constant_type.dart.weak.expect
index e7b3e08..35d93a3 100644
--- a/pkg/front_end/testcases/general/constants/potentially_constant_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/potentially_constant_type.dart.weak.expect
@@ -651,11 +651,11 @@
#C24 = static-tearoff self3::id
#C25 = constructor-tearoff self3::Class::•
#C26 = <self3::Class<invalid-type>*>[]
- #C27 = instantiation self3::Class::• <core::int*>
+ #C27 = instantiation #C25 <core::int*>
#C28 = TypeLiteralConstant(self3::Class<invalid-type>*)
- #C29 = instantiation self3::id <invalid-type>
- #C30 = instantiation self3::Class::• <invalid-type>
- #C31 = instantiation self3::id <self3::Class<invalid-type>*>
+ #C29 = instantiation #C24 <invalid-type>
+ #C30 = instantiation #C25 <invalid-type>
+ #C31 = instantiation #C24 <self3::Class<invalid-type>*>
#C32 = <core::Type*>[#C28]
#C33 = <(invalid-type) →* invalid-type>[#C29]
#C34 = <self3::Class<invalid-type>*>[#C8]
diff --git a/pkg/front_end/testcases/general/constants/potentially_constant_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/potentially_constant_type.dart.weak.transformed.expect
index e7b3e08..35d93a3 100644
--- a/pkg/front_end/testcases/general/constants/potentially_constant_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/potentially_constant_type.dart.weak.transformed.expect
@@ -651,11 +651,11 @@
#C24 = static-tearoff self3::id
#C25 = constructor-tearoff self3::Class::•
#C26 = <self3::Class<invalid-type>*>[]
- #C27 = instantiation self3::Class::• <core::int*>
+ #C27 = instantiation #C25 <core::int*>
#C28 = TypeLiteralConstant(self3::Class<invalid-type>*)
- #C29 = instantiation self3::id <invalid-type>
- #C30 = instantiation self3::Class::• <invalid-type>
- #C31 = instantiation self3::id <self3::Class<invalid-type>*>
+ #C29 = instantiation #C24 <invalid-type>
+ #C30 = instantiation #C25 <invalid-type>
+ #C31 = instantiation #C24 <self3::Class<invalid-type>*>
#C32 = <core::Type*>[#C28]
#C33 = <(invalid-type) →* invalid-type>[#C29]
#C34 = <self3::Class<invalid-type>*>[#C8]
diff --git a/pkg/front_end/testcases/general/constants/various.dart.weak.expect b/pkg/front_end/testcases/general/constants/various.dart.weak.expect
index 62853b9..9fa5cbe 100644
--- a/pkg/front_end/testcases/general/constants/various.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/various.dart.weak.expect
@@ -630,7 +630,7 @@
#C19 = self::ClassWithTypeArguments<core::int*, core::int*, core::int*> {}
#C20 = self::ClassWithTypeArguments<dynamic, dynamic, dynamic> {}
#C21 = static-tearoff self::id1
- #C22 = instantiation self::id1 <core::int*>
+ #C22 = instantiation #C21 <core::int*>
}
diff --git a/pkg/front_end/testcases/general/constants/various.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/various.dart.weak.transformed.expect
index 9d9530c..37e4135 100644
--- a/pkg/front_end/testcases/general/constants/various.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/various.dart.weak.transformed.expect
@@ -630,7 +630,7 @@
#C19 = self::ClassWithTypeArguments<core::int*, core::int*, core::int*> {}
#C20 = self::ClassWithTypeArguments<dynamic, dynamic, dynamic> {}
#C21 = static-tearoff self::id1
- #C22 = instantiation self::id1 <core::int*>
+ #C22 = instantiation #C21 <core::int*>
}
Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect
index 942009a..d4686ed 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect
@@ -104,7 +104,7 @@
constants {
#C1 = TypeLiteralConstant(core::Object*)
#C2 = static-tearoff var::id1
- #C3 = instantiation var::id1 <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = 0
#C5 = var::Class<core::int*> {field:#C4}
#C6 = 42
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect
index 6a48cb7..43ae6e3 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect
@@ -104,7 +104,7 @@
constants {
#C1 = TypeLiteralConstant(core::Object*)
#C2 = static-tearoff var::id1
- #C3 = instantiation var::id1 <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = 0
#C5 = var::Class<core::int*> {field:#C4}
#C6 = 42
diff --git a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.expect b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.expect
index d0e5d30..0cdd47c 100644
--- a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.expect
@@ -26,23 +26,24 @@
@#C1
class Class extends core::Object {
final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */;
- static final field dynamic _redirecting# = <dynamic>[test::Class::redirect]/*isLegacy*/;
- const constructor _internal({core::bool defaultValue = #C2}) → test::Class
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+ const constructor _internal({core::bool defaultValue = #C3}) → test::Class
: test::Class::defaultValue = defaultValue, super core::Object::•()
;
@#C1
- static factory /* from org-dartlang-testcase:///patch_lib.dart */ fact({core::bool defaultValue = #C3}) → test::Class
+ static factory /* from org-dartlang-testcase:///patch_lib.dart */ fact({core::bool defaultValue = #C4}) → test::Class
return new test::Class::_internal(defaultValue: defaultValue);
@#C1
- static factory /* from org-dartlang-testcase:///patch_lib.dart */ constFact({core::bool defaultValue = #C3}) → test::Class
+ static factory /* from org-dartlang-testcase:///patch_lib.dart */ constFact({core::bool defaultValue = #C4}) → test::Class
return throw "unsupported";
@#C1
- static factory /* from org-dartlang-testcase:///patch_lib.dart */ redirect({core::bool defaultValue = #C3}) → test::Class
+ static factory /* from org-dartlang-testcase:///patch_lib.dart */ redirect({core::bool defaultValue = #C4}) → test::Class
return new test::Class::_internal(defaultValue: defaultValue);
}
constants {
#C1 = _in::_Patch {}
- #C2 = false
- #C3 = true
+ #C2 = constructor-tearoff test::Class::redirect
+ #C3 = false
+ #C4 = true
}
diff --git a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect
index 8534e61..639b7a5 100644
--- a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect
@@ -35,4 +35,5 @@
Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:8:27 -> InstanceConstant(const _Patch{})
Evaluated: StaticGet @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const _Patch{})
Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:22:17 -> InstanceConstant(const _Patch{})
-Extra constant evaluation: evaluated: 9, effectively constant: 4
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///origin_lib.dart:5:7 -> ConstructorTearOffConstant(Class.redirect)
+Extra constant evaluation: evaluated: 9, effectively constant: 5
diff --git a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.transformed.expect
index d0e5d30..0cdd47c 100644
--- a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.transformed.expect
@@ -26,23 +26,24 @@
@#C1
class Class extends core::Object {
final field core::bool defaultValue /* from org-dartlang-testcase:///patch_lib.dart */;
- static final field dynamic _redirecting# = <dynamic>[test::Class::redirect]/*isLegacy*/;
- const constructor _internal({core::bool defaultValue = #C2}) → test::Class
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+ const constructor _internal({core::bool defaultValue = #C3}) → test::Class
: test::Class::defaultValue = defaultValue, super core::Object::•()
;
@#C1
- static factory /* from org-dartlang-testcase:///patch_lib.dart */ fact({core::bool defaultValue = #C3}) → test::Class
+ static factory /* from org-dartlang-testcase:///patch_lib.dart */ fact({core::bool defaultValue = #C4}) → test::Class
return new test::Class::_internal(defaultValue: defaultValue);
@#C1
- static factory /* from org-dartlang-testcase:///patch_lib.dart */ constFact({core::bool defaultValue = #C3}) → test::Class
+ static factory /* from org-dartlang-testcase:///patch_lib.dart */ constFact({core::bool defaultValue = #C4}) → test::Class
return throw "unsupported";
@#C1
- static factory /* from org-dartlang-testcase:///patch_lib.dart */ redirect({core::bool defaultValue = #C3}) → test::Class
+ static factory /* from org-dartlang-testcase:///patch_lib.dart */ redirect({core::bool defaultValue = #C4}) → test::Class
return new test::Class::_internal(defaultValue: defaultValue);
}
constants {
#C1 = _in::_Patch {}
- #C2 = false
- #C3 = true
+ #C2 = constructor-tearoff test::Class::redirect
+ #C3 = false
+ #C4 = true
}
diff --git a/pkg/front_end/testcases/general/identical_instantiated_function_tearoffs.dart.weak.expect b/pkg/front_end/testcases/general/identical_instantiated_function_tearoffs.dart.weak.expect
index 1f6296f..d1b803d 100644
--- a/pkg/front_end/testcases/general/identical_instantiated_function_tearoffs.dart.weak.expect
+++ b/pkg/front_end/testcases/general/identical_instantiated_function_tearoffs.dart.weak.expect
@@ -23,5 +23,5 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int*>
+ #C2 = instantiation #C1 <core::int*>
}
diff --git a/pkg/front_end/testcases/general/identical_instantiated_function_tearoffs.dart.weak.transformed.expect b/pkg/front_end/testcases/general/identical_instantiated_function_tearoffs.dart.weak.transformed.expect
index 6aa6e81..c29de20 100644
--- a/pkg/front_end/testcases/general/identical_instantiated_function_tearoffs.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/identical_instantiated_function_tearoffs.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
constants {
#C1 = static-tearoff self::id
- #C2 = instantiation self::id <core::int*>
+ #C2 = instantiation #C1 <core::int*>
}
Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/general/invalid_cast.dart.weak.expect b/pkg/front_end/testcases/general/invalid_cast.dart.weak.expect
index a73f4c5..6d764be 100644
--- a/pkg/front_end/testcases/general/invalid_cast.dart.weak.expect
+++ b/pkg/front_end/testcases/general/invalid_cast.dart.weak.expect
@@ -65,7 +65,7 @@
import "dart:core" as core;
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::fact2];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::C*
: super core::Object::•()
;
@@ -140,12 +140,12 @@
- 'Object' is from 'dart:core'.
Change the type of the method or the context in which it is used.
void Function(Object) i = C.staticFunction;
- ^" in #C1;
+ ^" in #C2;
(core::Object*) →* void j = invalid-expression "pkg/front_end/testcases/general/invalid_cast.dart:31:29: Error: The top level function has type 'void Function(int)' that isn't of expected type 'void Function(Object)'.
- 'Object' is from 'dart:core'.
Change the type of the function or the context in which it is used.
void Function(Object) j = topLevelFunction;
- ^" in #C2;
+ ^" in #C3;
(core::Object*) →* void k = invalid-expression "pkg/front_end/testcases/general/invalid_cast.dart:32:29: Error: The local function has type 'void Function(int)' that isn't of expected type 'void Function(Object)'.
- 'Object' is from 'dart:core'.
Change the type of the function or the context in which it is used.
@@ -162,13 +162,14 @@
self::D* f = new self::D::•() as{TypeError} self::D*;
self::C* g = new self::C::nonFact();
self::C* h = new self::C::nonFact2();
- (core::int*) →* void i = #C1;
- (core::int*) →* void j = #C2;
+ (core::int*) →* void i = #C2;
+ (core::int*) →* void j = #C3;
(core::int*) →* void k = localFunction;
}
static method main() → dynamic {}
constants {
- #C1 = static-tearoff self::C::staticFunction
- #C2 = static-tearoff self::topLevelFunction
+ #C1 = constructor-tearoff self::C::fact2
+ #C2 = static-tearoff self::C::staticFunction
+ #C3 = static-tearoff self::topLevelFunction
}
diff --git a/pkg/front_end/testcases/general/invalid_cast.dart.weak.outline.expect b/pkg/front_end/testcases/general/invalid_cast.dart.weak.outline.expect
index 6da6ddb..fe7f848 100644
--- a/pkg/front_end/testcases/general/invalid_cast.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/invalid_cast.dart.weak.outline.expect
@@ -39,3 +39,8 @@
;
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///invalid_cast.dart:7:7 -> ConstructorTearOffConstant(C.fact2)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/invalid_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/general/invalid_cast.dart.weak.transformed.expect
index 7ea1c1e..d1ae432 100644
--- a/pkg/front_end/testcases/general/invalid_cast.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/invalid_cast.dart.weak.transformed.expect
@@ -65,7 +65,7 @@
import "dart:core" as core;
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::fact2];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::C*
: super core::Object::•()
;
@@ -140,12 +140,12 @@
- 'Object' is from 'dart:core'.
Change the type of the method or the context in which it is used.
void Function(Object) i = C.staticFunction;
- ^" in #C1;
+ ^" in #C2;
(core::Object*) →* void j = invalid-expression "pkg/front_end/testcases/general/invalid_cast.dart:31:29: Error: The top level function has type 'void Function(int)' that isn't of expected type 'void Function(Object)'.
- 'Object' is from 'dart:core'.
Change the type of the function or the context in which it is used.
void Function(Object) j = topLevelFunction;
- ^" in #C2;
+ ^" in #C3;
(core::Object*) →* void k = invalid-expression "pkg/front_end/testcases/general/invalid_cast.dart:32:29: Error: The local function has type 'void Function(int)' that isn't of expected type 'void Function(Object)'.
- 'Object' is from 'dart:core'.
Change the type of the function or the context in which it is used.
@@ -162,13 +162,14 @@
self::D* f = new self::D::•();
self::C* g = new self::C::nonFact();
self::C* h = new self::C::nonFact2();
- (core::int*) →* void i = #C1;
- (core::int*) →* void j = #C2;
+ (core::int*) →* void i = #C2;
+ (core::int*) →* void j = #C3;
(core::int*) →* void k = localFunction;
}
static method main() → dynamic {}
constants {
- #C1 = static-tearoff self::C::staticFunction
- #C2 = static-tearoff self::topLevelFunction
+ #C1 = constructor-tearoff self::C::fact2
+ #C2 = static-tearoff self::C::staticFunction
+ #C3 = static-tearoff self::topLevelFunction
}
diff --git a/pkg/front_end/testcases/general/issue34714.dart.weak.expect b/pkg/front_end/testcases/general/issue34714.dart.weak.expect
index bf4d0eb..c0cc024 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
return new self::B::•<self::A::•::T*>();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -33,3 +33,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+}
diff --git a/pkg/front_end/testcases/general/issue34714.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue34714.dart.weak.outline.expect
index 04afde7..6b16904 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.weak.outline.expect
@@ -33,3 +33,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue34714.dart:5:7 -> ConstructorTearOffConstant(A.)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/issue34714.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue34714.dart.weak.transformed.expect
index bf4d0eb..c0cc024 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
return new self::B::•<self::A::•::T*>();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -33,3 +33,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+}
diff --git a/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect b/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect
index d009d81..d657617 100644
--- a/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect
@@ -18,7 +18,7 @@
export "org-dartlang-testcase:///bar_lib.dart";
abstract class Foo extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[foo::Foo::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
const constructor •() → foo::Foo
: super core::Object::•()
;
@@ -42,6 +42,7 @@
constants {
#C1 = bar::Bar<dynamic> {}
#C2 = <foo::Foo*>{#C1}
+ #C3 = constructor-tearoff foo::Foo::bar
}
diff --git a/pkg/front_end/testcases/general/issue45003/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue45003/main.dart.weak.outline.expect
index 277bd57..c3b5d5f 100644
--- a/pkg/front_end/testcases/general/issue45003/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue45003/main.dart.weak.outline.expect
@@ -44,4 +44,5 @@
Extra constant evaluation status:
Evaluated: SetLiteral @ org-dartlang-testcase:///main.dart:7:27 -> SetConstant(const <Foo*>{const Bar<dynamic>{}})
-Extra constant evaluation: evaluated: 4, effectively constant: 1
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///foo_lib.dart:9:16 -> ConstructorTearOffConstant(Foo.bar)
+Extra constant evaluation: evaluated: 4, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect
index d009d81..d657617 100644
--- a/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
export "org-dartlang-testcase:///bar_lib.dart";
abstract class Foo extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[foo::Foo::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
const constructor •() → foo::Foo
: super core::Object::•()
;
@@ -42,6 +42,7 @@
constants {
#C1 = bar::Bar<dynamic> {}
#C2 = <foo::Foo*>{#C1}
+ #C3 = constructor-tearoff foo::Foo::bar
}
diff --git a/pkg/front_end/testcases/general/issue45003_2.dart.weak.expect b/pkg/front_end/testcases/general/issue45003_2.dart.weak.expect
index dcbf1e1..9e86d1c 100644
--- a/pkg/front_end/testcases/general/issue45003_2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45003_2.dart.weak.expect
@@ -13,7 +13,7 @@
;
}
abstract class A extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::A::foo]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
const constructor •() → self::A
: super core::Object::•()
;
@@ -24,6 +24,7 @@
constants {
#C1 = self::B<dynamic> {}
+ #C2 = constructor-tearoff self::A::foo
}
diff --git a/pkg/front_end/testcases/general/issue45003_2.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue45003_2.dart.weak.outline.expect
index a916713..771d13c 100644
--- a/pkg/front_end/testcases/general/issue45003_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue45003_2.dart.weak.outline.expect
@@ -26,4 +26,5 @@
Extra constant evaluation status:
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue45003_2.dart:6:30 -> InstanceConstant(const B<dynamic>{})
-Extra constant evaluation: evaluated: 4, effectively constant: 1
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue45003_2.dart:13:16 -> ConstructorTearOffConstant(A.foo)
+Extra constant evaluation: evaluated: 4, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/issue45003_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45003_2.dart.weak.transformed.expect
index dcbf1e1..9e86d1c 100644
--- a/pkg/front_end/testcases/general/issue45003_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45003_2.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
;
}
abstract class A extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::A::foo]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
const constructor •() → self::A
: super core::Object::•()
;
@@ -24,6 +24,7 @@
constants {
#C1 = self::B<dynamic> {}
+ #C2 = constructor-tearoff self::A::foo
}
diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect b/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect
index 651a6e4..d517647 100644
--- a/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect
@@ -31,7 +31,7 @@
@#C1
@#C4
class Array<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self2::Array::•];
+ static final field dynamic _redirecting# = <dynamic>[#C5];
@#C1
static factory /* from org-dartlang-testcase:///patch_lib.dart */ •<T extends core::Object* = dynamic>(core::int* foo) → self2::Array<self2::Array::•::T*>*
return new self2::_ArraySize::•<self2::Array::•::T*>(foo);
@@ -52,6 +52,7 @@
#C2 = "vm:entry-point"
#C3 = null
#C4 = core::pragma {name:#C2, options:#C3}
+ #C5 = constructor-tearoff self2::Array::•
}
diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue45101/main.dart.weak.outline.expect
index 7c8d05d..f06670d 100644
--- a/pkg/front_end/testcases/general/issue45101/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue45101/main.dart.weak.outline.expect
@@ -53,4 +53,5 @@
Evaluated: StaticGet @ org-dartlang-testcase:///origin_lib.dart:10:1 -> InstanceConstant(const _Patch{})
Evaluated: ConstructorInvocation @ (unknown position in org-dartlang-testcase:///origin_lib.dart) -> InstanceConstant(const pragma{pragma.name: "vm:entry-point", pragma.options: null})
Evaluated: StaticGet @ org-dartlang-testcase:///patch_lib.dart:14:17 -> InstanceConstant(const _Patch{})
-Extra constant evaluation: evaluated: 8, effectively constant: 3
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///origin_lib.dart:6:7 -> ConstructorTearOffConstant(Array.)
+Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect
index 651a6e4..d517647 100644
--- a/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect
@@ -31,7 +31,7 @@
@#C1
@#C4
class Array<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self2::Array::•];
+ static final field dynamic _redirecting# = <dynamic>[#C5];
@#C1
static factory /* from org-dartlang-testcase:///patch_lib.dart */ •<T extends core::Object* = dynamic>(core::int* foo) → self2::Array<self2::Array::•::T*>*
return new self2::_ArraySize::•<self2::Array::•::T*>(foo);
@@ -52,6 +52,7 @@
#C2 = "vm:entry-point"
#C3 = null
#C4 = core::pragma {name:#C2, options:#C3}
+ #C5 = constructor-tearoff self2::Array::•
}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.weak.expect b/pkg/front_end/testcases/general/issue46334.dart.weak.expect
index 2fd5dea..e0ea5d7 100644
--- a/pkg/front_end/testcases/general/issue46334.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue46334.dart.weak.expect
@@ -10,10 +10,14 @@
import "dart:core" as core;
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •() → self::C
return invalid-expression "pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
factory C() = C;
^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect
index 2ac4318..ccca97c 100644
--- a/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue46334.dart.weak.outline.expect
@@ -18,3 +18,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue46334.dart:5:7 -> ConstructorTearOffConstant(C.)
+Extra constant evaluation: evaluated: 2, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect
index 2fd5dea..e0ea5d7 100644
--- a/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue46334.dart.weak.transformed.expect
@@ -10,10 +10,14 @@
import "dart:core" as core;
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •() → self::C
return invalid-expression "pkg/front_end/testcases/general/issue46334.dart:6:11: Error: Cyclic definition of factory 'C'.
factory C() = C;
^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/general/issue47036.dart.weak.expect b/pkg/front_end/testcases/general/issue47036.dart.weak.expect
index e755d5a..706562c 100644
--- a/pkg/front_end/testcases/general/issue47036.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue47036.dart.weak.expect
@@ -9,28 +9,28 @@
;
}
class Settings extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Settings::•]/*isLegacy*/;
- static factory •({@#C2 self::Sidebar sidebar = #C3}) → self::Settings
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ static factory •({@#C3 self::Sidebar sidebar = #C4}) → self::Settings
return self::_SSettings::•(sidebar: sidebar);
}
class Sidebar extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Sidebar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C5]/*isLegacy*/;
static factory •() → self::Sidebar
return self::_SSidebar::•();
}
abstract class _SSettings extends core::Object implements self::Settings {
- static final field dynamic _redirecting# = <dynamic>[self::_SSettings::•]/*isLegacy*/;
- static factory •({self::Sidebar sidebar = #C3}) → self::_SSettings
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ static factory •({self::Sidebar sidebar = #C4}) → self::_SSettings
return new self::_$_SSettings::•(sidebar: sidebar);
}
class _$_SSettings extends core::Object implements self::_SSettings /*hasConstConstructor*/ {
final field self::Sidebar sidebar;
- const constructor •({self::Sidebar sidebar = #C1}) → self::_$_SSettings
+ const constructor •({self::Sidebar sidebar = #C2}) → self::_$_SSettings
: self::_$_SSettings::sidebar = sidebar, super core::Object::•()
;
}
abstract class _SSidebar extends core::Object implements self::Sidebar {
- static final field dynamic _redirecting# = <dynamic>[self::_SSidebar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
static factory •() → self::_SSidebar
return new self::_$_SSidebar::•();
}
@@ -42,9 +42,13 @@
static method main() → void {}
constants {
- #C1 = self::_$_SSidebar {}
- #C2 = self::Default {defaultValue:#C1}
- #C3 = null
+ #C1 = constructor-tearoff self::Settings::•
+ #C2 = self::_$_SSidebar {}
+ #C3 = self::Default {defaultValue:#C2}
+ #C4 = null
+ #C5 = constructor-tearoff self::Sidebar::•
+ #C6 = constructor-tearoff self::_SSettings::•
+ #C7 = constructor-tearoff self::_SSidebar::•
}
diff --git a/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect
index ebe57b3..bad6433 100644
--- a/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue47036.dart.weak.outline.expect
@@ -44,5 +44,9 @@
Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue47036.dart:11:7 -> ConstructorTearOffConstant(Settings.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue47036.dart:17:7 -> ConstructorTearOffConstant(Sidebar.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue47036.dart:21:16 -> ConstructorTearOffConstant(_SSettings.)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue47036.dart:26:44 -> InstanceConstant(const _$_SSidebar{})
-Extra constant evaluation: evaluated: 17, effectively constant: 1
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue47036.dart:31:16 -> ConstructorTearOffConstant(_SSidebar.)
+Extra constant evaluation: evaluated: 17, effectively constant: 5
diff --git a/pkg/front_end/testcases/general/issue47036.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue47036.dart.weak.transformed.expect
index e755d5a..706562c 100644
--- a/pkg/front_end/testcases/general/issue47036.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue47036.dart.weak.transformed.expect
@@ -9,28 +9,28 @@
;
}
class Settings extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Settings::•]/*isLegacy*/;
- static factory •({@#C2 self::Sidebar sidebar = #C3}) → self::Settings
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ static factory •({@#C3 self::Sidebar sidebar = #C4}) → self::Settings
return self::_SSettings::•(sidebar: sidebar);
}
class Sidebar extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Sidebar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C5]/*isLegacy*/;
static factory •() → self::Sidebar
return self::_SSidebar::•();
}
abstract class _SSettings extends core::Object implements self::Settings {
- static final field dynamic _redirecting# = <dynamic>[self::_SSettings::•]/*isLegacy*/;
- static factory •({self::Sidebar sidebar = #C3}) → self::_SSettings
+ static final field dynamic _redirecting# = <dynamic>[#C6]/*isLegacy*/;
+ static factory •({self::Sidebar sidebar = #C4}) → self::_SSettings
return new self::_$_SSettings::•(sidebar: sidebar);
}
class _$_SSettings extends core::Object implements self::_SSettings /*hasConstConstructor*/ {
final field self::Sidebar sidebar;
- const constructor •({self::Sidebar sidebar = #C1}) → self::_$_SSettings
+ const constructor •({self::Sidebar sidebar = #C2}) → self::_$_SSettings
: self::_$_SSettings::sidebar = sidebar, super core::Object::•()
;
}
abstract class _SSidebar extends core::Object implements self::Sidebar {
- static final field dynamic _redirecting# = <dynamic>[self::_SSidebar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
static factory •() → self::_SSidebar
return new self::_$_SSidebar::•();
}
@@ -42,9 +42,13 @@
static method main() → void {}
constants {
- #C1 = self::_$_SSidebar {}
- #C2 = self::Default {defaultValue:#C1}
- #C3 = null
+ #C1 = constructor-tearoff self::Settings::•
+ #C2 = self::_$_SSidebar {}
+ #C3 = self::Default {defaultValue:#C2}
+ #C4 = null
+ #C5 = constructor-tearoff self::Sidebar::•
+ #C6 = constructor-tearoff self::_SSettings::•
+ #C7 = constructor-tearoff self::_SSidebar::•
}
diff --git a/pkg/front_end/testcases/general/issue47339.dart.weak.expect b/pkg/front_end/testcases/general/issue47339.dart.weak.expect
index eb5e9b2..02f1b57 100644
--- a/pkg/front_end/testcases/general/issue47339.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue47339.dart.weak.expect
@@ -5,7 +5,7 @@
typedef Bar = self::Foo;
typedef BarGeneric<X extends core::Object? = dynamic> = self::FooGeneric<X%>;
class Foo extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::Foo::namedFactory]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
const constructor named() → self::Foo
: super core::Object::•()
;
@@ -13,22 +13,24 @@
return new self::Foo::named();
}
class FooGeneric<X extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::FooGeneric::namedFactory]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
const constructor named() → self::FooGeneric<self::FooGeneric::X%>
: super core::Object::•()
;
static factory namedFactory<X extends core::Object? = dynamic>() → self::FooGeneric<self::FooGeneric::namedFactory::X%>
return new self::FooGeneric::named<self::FooGeneric::namedFactory::X%>();
}
-static const field self::Foo bar = #C1;
-static const field self::Foo bar2 = #C1;
-static const field self::FooGeneric<core::int> barGeneric = #C2;
-static const field self::FooGeneric<core::int> barGeneric2 = #C2;
+static const field self::Foo bar = #C3;
+static const field self::Foo bar2 = #C3;
+static const field self::FooGeneric<core::int> barGeneric = #C4;
+static const field self::FooGeneric<core::int> barGeneric2 = #C4;
static method main() → dynamic {}
constants {
- #C1 = self::Foo {}
- #C2 = self::FooGeneric<core::int*> {}
+ #C1 = constructor-tearoff self::Foo::namedFactory
+ #C2 = constructor-tearoff self::FooGeneric::namedFactory
+ #C3 = self::Foo {}
+ #C4 = self::FooGeneric<core::int*> {}
}
diff --git a/pkg/front_end/testcases/general/issue47339.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue47339.dart.weak.outline.expect
index 0a83431..8e10651 100644
--- a/pkg/front_end/testcases/general/issue47339.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue47339.dart.weak.outline.expect
@@ -29,8 +29,10 @@
Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue47339.dart:5:7 -> ConstructorTearOffConstant(Foo.namedFactory)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue47339.dart:16:7 -> ConstructorTearOffConstant(FooGeneric.namedFactory)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue47339.dart:12:11 -> InstanceConstant(const Foo{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue47339.dart:14:22 -> InstanceConstant(const Foo{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue47339.dart:23:23 -> InstanceConstant(const FooGeneric<int*>{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue47339.dart:25:48 -> InstanceConstant(const FooGeneric<int*>{})
-Extra constant evaluation: evaluated: 10, effectively constant: 4
+Extra constant evaluation: evaluated: 10, effectively constant: 6
diff --git a/pkg/front_end/testcases/general/issue47339.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue47339.dart.weak.transformed.expect
index eb5e9b2..02f1b57 100644
--- a/pkg/front_end/testcases/general/issue47339.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue47339.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
typedef Bar = self::Foo;
typedef BarGeneric<X extends core::Object? = dynamic> = self::FooGeneric<X%>;
class Foo extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::Foo::namedFactory]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
const constructor named() → self::Foo
: super core::Object::•()
;
@@ -13,22 +13,24 @@
return new self::Foo::named();
}
class FooGeneric<X extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::FooGeneric::namedFactory]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
const constructor named() → self::FooGeneric<self::FooGeneric::X%>
: super core::Object::•()
;
static factory namedFactory<X extends core::Object? = dynamic>() → self::FooGeneric<self::FooGeneric::namedFactory::X%>
return new self::FooGeneric::named<self::FooGeneric::namedFactory::X%>();
}
-static const field self::Foo bar = #C1;
-static const field self::Foo bar2 = #C1;
-static const field self::FooGeneric<core::int> barGeneric = #C2;
-static const field self::FooGeneric<core::int> barGeneric2 = #C2;
+static const field self::Foo bar = #C3;
+static const field self::Foo bar2 = #C3;
+static const field self::FooGeneric<core::int> barGeneric = #C4;
+static const field self::FooGeneric<core::int> barGeneric2 = #C4;
static method main() → dynamic {}
constants {
- #C1 = self::Foo {}
- #C2 = self::FooGeneric<core::int*> {}
+ #C1 = constructor-tearoff self::Foo::namedFactory
+ #C2 = constructor-tearoff self::FooGeneric::namedFactory
+ #C3 = self::Foo {}
+ #C4 = self::FooGeneric<core::int*> {}
}
diff --git a/pkg/front_end/testcases/general/issue47462.dart b/pkg/front_end/testcases/general/issue47462.dart
new file mode 100644
index 0000000..17b9e38
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47462.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2021, 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.
+
+typedef MyList<T extends num> = List<T>;
+
+main() {
+ const c1 = MyList<num>.filled;
+ const c2 = MyList<num>.filled;
+ const c3 = (MyList.filled)<num>;
+
+ const c4 = identical(c1, c2);
+ const c5 = identical(c1, c3);
+
+ expect(true, c4);
+ expect(false, c5);
+
+ expect(true, identical(c1, c2));
+ expect(false, identical(c1, c3));
+
+ var v1 = MyList<num>.filled;
+ var v2 = MyList<num>.filled;
+ var v3 = (MyList.filled)<num>;
+
+ var v4 = identical(v1, v2);
+ var v5 = identical(v1, v3);
+
+ expect(true, v4);
+ expect(false, v5);
+
+ expect(true, identical(v1, v2));
+ expect(false, identical(v1, v3));
+}
+
+expect(expected, actual) {
+ if (expected != actual) throw 'Expected $expected, actual $actual';
+}
diff --git a/pkg/front_end/testcases/general/issue47462.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue47462.dart.textual_outline.expect
new file mode 100644
index 0000000..f4c644d
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47462.dart.textual_outline.expect
@@ -0,0 +1,3 @@
+typedef MyList<T extends num> = List<T>;
+main() {}
+expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/general/issue47462.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue47462.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f083298
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47462.dart.textual_outline_modelled.expect
@@ -0,0 +1,3 @@
+expect(expected, actual) {}
+main() {}
+typedef MyList<T extends num> = List<T>;
diff --git a/pkg/front_end/testcases/general/issue47462.dart.weak.expect b/pkg/front_end/testcases/general/issue47462.dart.weak.expect
new file mode 100644
index 0000000..2a6bd0b
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47462.dart.weak.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#new#tearOff<T extends core::num>([core::int? length = #C7]) → core::List<self::_#MyList#new#tearOff::T>
+ return core::List::•<self::_#MyList#new#tearOff::T>(length);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#filled#tearOff<T extends core::num>(core::int length, self::_#MyList#filled#tearOff::T fill, {core::bool growable = #C2}) → core::List<self::_#MyList#filled#tearOff::T>
+ return core::List::filled<self::_#MyList#filled#tearOff::T>(length, fill, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#empty#tearOff<T extends core::num>({core::bool growable = #C2}) → core::List<self::_#MyList#empty#tearOff::T>
+ return core::List::empty<self::_#MyList#empty#tearOff::T>(growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#from#tearOff<T extends core::num>(core::Iterable<dynamic> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#from#tearOff::T>
+ return core::List::from<self::_#MyList#from#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#of#tearOff<T extends core::num>(core::Iterable<self::_#MyList#of#tearOff::T> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#of#tearOff::T>
+ return core::List::of<self::_#MyList#of#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#generate#tearOff<T extends core::num>(core::int length, (core::int) → self::_#MyList#generate#tearOff::T generator, {core::bool growable = #C1}) → core::List<self::_#MyList#generate#tearOff::T>
+ return core::List::generate<self::_#MyList#generate#tearOff::T>(length, generator, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#unmodifiable#tearOff<T extends core::num>(core::Iterable<dynamic> elements) → core::List<self::_#MyList#unmodifiable#tearOff::T>
+ return core::List::unmodifiable<self::_#MyList#unmodifiable#tearOff::T>(elements);
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num*>
+ #C5 = static-tearoff self::_#MyList#filled#tearOff
+ #C6 = instantiation #C5 <core::num*>
+ #C7 = null
+}
diff --git a/pkg/front_end/testcases/general/issue47462.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue47462.dart.weak.outline.expect
new file mode 100644
index 0000000..b89a67b
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47462.dart.weak.outline.expect
@@ -0,0 +1,23 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic
+ ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+ ;
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#new#tearOff<T extends core::num>([core::int? length]) → core::List<self::_#MyList#new#tearOff::T>
+ return core::List::•<self::_#MyList#new#tearOff::T>(length);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#filled#tearOff<T extends core::num>(core::int length, self::_#MyList#filled#tearOff::T fill, {core::bool growable}) → core::List<self::_#MyList#filled#tearOff::T>
+ return core::List::filled<self::_#MyList#filled#tearOff::T>(length, fill, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#empty#tearOff<T extends core::num>({core::bool growable}) → core::List<self::_#MyList#empty#tearOff::T>
+ return core::List::empty<self::_#MyList#empty#tearOff::T>(growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#from#tearOff<T extends core::num>(core::Iterable<dynamic> elements, {core::bool growable}) → core::List<self::_#MyList#from#tearOff::T>
+ return core::List::from<self::_#MyList#from#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#of#tearOff<T extends core::num>(core::Iterable<self::_#MyList#of#tearOff::T> elements, {core::bool growable}) → core::List<self::_#MyList#of#tearOff::T>
+ return core::List::of<self::_#MyList#of#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#generate#tearOff<T extends core::num>(core::int length, (core::int) → self::_#MyList#generate#tearOff::T generator, {core::bool growable}) → core::List<self::_#MyList#generate#tearOff::T>
+ return core::List::generate<self::_#MyList#generate#tearOff::T>(length, generator, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#unmodifiable#tearOff<T extends core::num>(core::Iterable<dynamic> elements) → core::List<self::_#MyList#unmodifiable#tearOff::T>
+ return core::List::unmodifiable<self::_#MyList#unmodifiable#tearOff::T>(elements);
diff --git a/pkg/front_end/testcases/general/issue47462.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue47462.dart.weak.transformed.expect
new file mode 100644
index 0000000..9e2f5a1
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47462.dart.weak.transformed.expect
@@ -0,0 +1,53 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef MyList<T extends core::num> = core::List<T>;
+static method main() → dynamic {
+ self::expect(true, #C1);
+ self::expect(false, #C2);
+ self::expect(true, core::identical(#C4, #C4));
+ self::expect(false, core::identical(#C4, #C6));
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v1 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v2 = #C4;
+ (core::int, core::num, {growable: core::bool}) → core::List<core::num> v3 = #C6;
+ core::bool v4 = core::identical(v1, v2);
+ core::bool v5 = core::identical(v1, v3);
+ self::expect(true, v4);
+ self::expect(false, v5);
+ self::expect(true, core::identical(v1, v2));
+ self::expect(false, core::identical(v1, v3));
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+ if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
+ throw "Expected ${expected}, actual ${actual}";
+}
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#new#tearOff<T extends core::num>([core::int? length = #C7]) → core::List<self::_#MyList#new#tearOff::T>
+ return core::_List::•<self::_#MyList#new#tearOff::T>(length);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#filled#tearOff<T extends core::num>(core::int length, self::_#MyList#filled#tearOff::T fill, {core::bool growable = #C2}) → core::List<self::_#MyList#filled#tearOff::T>
+ return core::List::filled<self::_#MyList#filled#tearOff::T>(length, fill, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#empty#tearOff<T extends core::num>({core::bool growable = #C2}) → core::List<self::_#MyList#empty#tearOff::T>
+ return core::List::empty<self::_#MyList#empty#tearOff::T>(growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#from#tearOff<T extends core::num>(core::Iterable<dynamic> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#from#tearOff::T>
+ return core::List::from<self::_#MyList#from#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#of#tearOff<T extends core::num>(core::Iterable<self::_#MyList#of#tearOff::T> elements, {core::bool growable = #C1}) → core::List<self::_#MyList#of#tearOff::T>
+ return core::List::of<self::_#MyList#of#tearOff::T>(elements, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#generate#tearOff<T extends core::num>(core::int length, (core::int) → self::_#MyList#generate#tearOff::T generator, {core::bool growable = #C1}) → core::List<self::_#MyList#generate#tearOff::T>
+ return core::List::generate<self::_#MyList#generate#tearOff::T>(length, generator, growable: growable);
+static method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/array_patch.dart */ _#MyList#unmodifiable#tearOff<T extends core::num>(core::Iterable<dynamic> elements) → core::List<self::_#MyList#unmodifiable#tearOff::T>
+ return core::List::unmodifiable<self::_#MyList#unmodifiable#tearOff::T>(elements);
+
+constants {
+ #C1 = true
+ #C2 = false
+ #C3 = constructor-tearoff core::List::filled
+ #C4 = instantiation #C3 <core::num*>
+ #C5 = static-tearoff self::_#MyList#filled#tearOff
+ #C6 = instantiation #C5 <core::num*>
+ #C7 = null
+}
+
+Extra constant evaluation status:
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:18:16 -> BoolConstant(true)
+Evaluated: StaticInvocation @ org-dartlang-testcase:///issue47462.dart:19:17 -> BoolConstant(false)
+Extra constant evaluation: evaluated: 52, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/private_members.dart.weak.expect b/pkg/front_end/testcases/general/private_members.dart.weak.expect
index bf194cb..7d67ee2 100644
--- a/pkg/front_end/testcases/general/private_members.dart.weak.expect
+++ b/pkg/front_end/testcases/general/private_members.dart.weak.expect
@@ -13,7 +13,7 @@
class _Class extends core::Object { // from org-dartlang-testcase:///private_members_part.dart
field core::int _privateField = 1;
field core::int _privateFinalField = 1;
- static final field dynamic _redirecting# = <dynamic>[self::_Class::_privateRedirectingFactory]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _privateConstructor() → self::_Class
: super core::Object::•()
;
@@ -56,3 +56,7 @@
static method /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|get#_privateGetter(lowered final core::int #this) → core::int
return 42;
static method /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|set#_privateSetter(lowered final core::int #this, core::int value) → void {}
+
+constants {
+ #C1 = constructor-tearoff self::_Class::_privateRedirectingFactory
+}
diff --git a/pkg/front_end/testcases/general/private_members.dart.weak.outline.expect b/pkg/front_end/testcases/general/private_members.dart.weak.outline.expect
index fdc9a0e..c51001d 100644
--- a/pkg/front_end/testcases/general/private_members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/private_members.dart.weak.outline.expect
@@ -46,3 +46,8 @@
;
static method /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|set#_privateSetter(lowered final core::int #this, core::int value) → void
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///private_members_part.dart:11:7 -> ConstructorTearOffConstant(_Class._privateRedirectingFactory)
+Extra constant evaluation: evaluated: 6, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/private_members.dart.weak.transformed.expect b/pkg/front_end/testcases/general/private_members.dart.weak.transformed.expect
index bf194cb..7d67ee2 100644
--- a/pkg/front_end/testcases/general/private_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/private_members.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
class _Class extends core::Object { // from org-dartlang-testcase:///private_members_part.dart
field core::int _privateField = 1;
field core::int _privateFinalField = 1;
- static final field dynamic _redirecting# = <dynamic>[self::_Class::_privateRedirectingFactory]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _privateConstructor() → self::_Class
: super core::Object::•()
;
@@ -56,3 +56,7 @@
static method /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|get#_privateGetter(lowered final core::int #this) → core::int
return 42;
static method /* from org-dartlang-testcase:///private_members_part.dart */ _Extension|set#_privateSetter(lowered final core::int #this, core::int value) → void {}
+
+constants {
+ #C1 = constructor-tearoff self::_Class::_privateRedirectingFactory
+}
diff --git a/pkg/front_end/testcases/general/qualified.dart.weak.expect b/pkg/front_end/testcases/general/qualified.dart.weak.expect
index 4deccd1..59d3ddb 100644
--- a/pkg/front_end/testcases/general/qualified.dart.weak.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.weak.expect
@@ -73,7 +73,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
- static final field dynamic _redirecting# = <dynamic>[self::C::b];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::C<self::C::T*>*
: super core::Object::•()
;
@@ -114,7 +114,7 @@
typedef VoidFunction = () →* void;
class C<T extends core::Object* = dynamic> extends self::C<lib::C::T*> {
- static final field dynamic _redirecting# = <dynamic>[lib::C::b];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor •() → lib::C<lib::C::T*>*
: super self::C::•()
;
@@ -160,3 +160,8 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
+
+constants {
+ #C1 = constructor-tearoff self::C::b
+ #C2 = constructor-tearoff lib::C::b
+}
diff --git a/pkg/front_end/testcases/general/qualified.dart.weak.outline.expect b/pkg/front_end/testcases/general/qualified.dart.weak.outline.expect
index 7528cb9..57448e6 100644
--- a/pkg/front_end/testcases/general/qualified.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.weak.outline.expect
@@ -143,3 +143,9 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///qualified_part.dart:7:7 -> ConstructorTearOffConstant(C.b)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///qualified_lib.dart:9:7 -> ConstructorTearOffConstant(C.b)
+Extra constant evaluation: evaluated: 7, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect b/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect
index a982723..83dac20 100644
--- a/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect
@@ -74,7 +74,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
- static final field dynamic _redirecting# = <dynamic>[self::C::b];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::C<self::C::T*>*
: super core::Object::•()
;
@@ -115,7 +115,7 @@
typedef VoidFunction = () →* void;
class C<T extends core::Object* = dynamic> extends self::C<lib::C::T*> {
- static final field dynamic _redirecting# = <dynamic>[lib::C::b];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor •() → lib::C<lib::C::T*>*
: super self::C::•()
;
@@ -161,3 +161,8 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
+
+constants {
+ #C1 = constructor-tearoff self::C::b
+ #C2 = constructor-tearoff lib::C::b
+}
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.expect
index 0173839..293f8a2 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::fisk];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::A*
: super core::Object::•()
;
@@ -28,3 +28,7 @@
static method main() → dynamic {
new self::B::•();
}
+
+constants {
+ #C1 = constructor-tearoff self::A::fisk
+}
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.outline.expect
index 94296d3..2ae8aaa 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.outline.expect
@@ -25,3 +25,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_constructor.dart:5:7 -> ConstructorTearOffConstant(A.fisk)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.transformed.expect
index 0173839..293f8a2 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::fisk];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::A*
: super core::Object::•()
;
@@ -28,3 +28,7 @@
static method main() → dynamic {
new self::B::•();
}
+
+constants {
+ #C1 = constructor-tearoff self::A::fisk
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect
index 6155d9d..ba2466c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect
@@ -12,7 +12,7 @@
import "dart:core" as core;
abstract class FooBase<Tf extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::FooBase::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
abstract get x() → core::int*;
static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
return invalid-expression "pkg/front_end/testcases/general/redirecting_factory.dart:7:28: Error: The constructor function type 'Foo<Tf> Function(int)' isn't a subtype of 'FooBase<Tf> Function(int)'.
@@ -32,7 +32,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
- static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
return new self::Bar::•<core::String*, self::Foo::•::T*>(x);
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -86,7 +86,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
+ static final field dynamic _redirecting# = <dynamic>[#C3];
static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
return self::SimpleCaseImpl::•<self::SimpleCase::•::A*, self::SimpleCase::•::B*>();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -101,7 +101,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
- static final field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
+ static final field dynamic _redirecting# = <dynamic>[#C4];
static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -174,3 +174,10 @@
new self::SimpleCaseImpl2::•<core::int*, core::double*>();
new self::Mix::•<core::double*>();
}
+
+constants {
+ #C1 = constructor-tearoff self::FooBase::•
+ #C2 = constructor-tearoff self::Foo::•
+ #C3 = constructor-tearoff self::SimpleCase::•
+ #C4 = constructor-tearoff self::SimpleCaseImpl::•
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.outline.expect
index 611e0cc..6978627 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.outline.expect
@@ -156,3 +156,11 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory.dart:5:16 -> ConstructorTearOffConstant(FooBase.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory.dart:10:16 -> ConstructorTearOffConstant(Foo.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory.dart:27:7 -> ConstructorTearOffConstant(SimpleCase.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory.dart:31:7 -> ConstructorTearOffConstant(SimpleCaseImpl.)
+Extra constant evaluation: evaluated: 12, effectively constant: 4
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect
index 0f768e15..025c11c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
import "dart:core" as core;
abstract class FooBase<Tf extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::FooBase::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
abstract get x() → core::int*;
static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
return invalid-expression "pkg/front_end/testcases/general/redirecting_factory.dart:7:28: Error: The constructor function type 'Foo<Tf> Function(int)' isn't a subtype of 'FooBase<Tf> Function(int)'.
@@ -32,7 +32,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
- static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
return new self::Bar::•<core::String*, self::Foo::•::T*>(x);
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -86,7 +86,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
+ static final field dynamic _redirecting# = <dynamic>[#C3];
static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
return self::SimpleCaseImpl::•<self::SimpleCase::•::A*, self::SimpleCase::•::B*>();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -101,7 +101,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
- static final field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
+ static final field dynamic _redirecting# = <dynamic>[#C4];
static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -174,3 +174,10 @@
new self::SimpleCaseImpl2::•<core::int*, core::double*>();
new self::Mix::•<core::double*>();
}
+
+constants {
+ #C1 = constructor-tearoff self::FooBase::•
+ #C2 = constructor-tearoff self::Foo::•
+ #C3 = constructor-tearoff self::SimpleCase::•
+ #C4 = constructor-tearoff self::SimpleCaseImpl::•
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.expect
index 16a9cdc..e86259e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2];
constructor •() → self::A*
: super core::Object::•()
;
@@ -25,3 +25,8 @@
static method main() → dynamic {
new self::A::•();
}
+
+constants {
+ #C1 = constructor-tearoff self::A::first
+ #C2 = constructor-tearoff self::A::second
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.outline.expect
index 3f90310..8eeb6bc 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.outline.expect
@@ -23,3 +23,9 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_chain_test.dart:10:7 -> ConstructorTearOffConstant(A.first)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_chain_test.dart:10:7 -> ConstructorTearOffConstant(A.second)
+Extra constant evaluation: evaluated: 5, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.transformed.expect
index 16a9cdc..e86259e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2];
constructor •() → self::A*
: super core::Object::•()
;
@@ -25,3 +25,8 @@
static method main() → dynamic {
new self::A::•();
}
+
+constants {
+ #C1 = constructor-tearoff self::A::first
+ #C2 = constructor-tearoff self::A::second
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect
index e5a7448..3dc0b99 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class _X<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::_X::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
return new self::_Y::•<self::_X::•::T*>();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -50,7 +50,7 @@
}
class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
constructor •() → self::B<self::B::T*>*
- : super self::A::•(#C1)
+ : super self::A::•(#C2)
;
}
static method main() → dynamic {
@@ -61,7 +61,8 @@
}
constants {
- #C1 = self::_Y<Null> {}
+ #C1 = constructor-tearoff self::_X::•
+ #C2 = self::_Y<Null> {}
}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.outline.expect
index 55c2b59..23c7bac 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.outline.expect
@@ -53,3 +53,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_const_inference.dart:9:7 -> ConstructorTearOffConstant(_X.)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect
index e5a7448..3dc0b99 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class _X<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::_X::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
return new self::_Y::•<self::_X::•::T*>();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -50,7 +50,7 @@
}
class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
constructor •() → self::B<self::B::T*>*
- : super self::A::•(#C1)
+ : super self::A::•(#C2)
;
}
static method main() → dynamic {
@@ -61,7 +61,8 @@
}
constants {
- #C1 = self::_Y<Null> {}
+ #C1 = constructor-tearoff self::_X::•
+ #C2 = self::_Y<Null> {}
}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.expect
index f1030db..4a74b87 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.expect
@@ -12,8 +12,8 @@
class A extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::A
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::A
: self::A::field = field, super core::Object::•()
;
static factory redirect([core::int field]) → self::A
@@ -31,5 +31,6 @@
}
constants {
- #C1 = 42
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = 42
}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.outline.expect
index c031d22..7669a3f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.outline.expect
@@ -14,3 +14,8 @@
;
static method expect(dynamic expected, dynamic actual) → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_default_value.dart:5:7 -> ConstructorTearOffConstant(A.redirect)
+Extra constant evaluation: evaluated: 4, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.transformed.expect
index f1030db..4a74b87 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.transformed.expect
@@ -12,8 +12,8 @@
class A extends core::Object {
final field core::int field;
- static final field dynamic _redirecting# = <dynamic>[self::A::redirect]/*isLegacy*/;
- constructor •([core::int field = #C1]) → self::A
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor •([core::int field = #C2]) → self::A
: self::A::field = field, super core::Object::•()
;
static factory redirect([core::int field]) → self::A
@@ -31,5 +31,6 @@
}
constants {
- #C1 = 42
+ #C1 = constructor-tearoff self::A::redirect
+ #C2 = 42
}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.expect
index 27d959b..f674d71 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.expect
@@ -101,7 +101,7 @@
class Class1 extends core::Object {
field core::int field = 0;
- static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor _() → self::Class1
: super core::Object::•()
;
@@ -184,12 +184,13 @@
super.foo(new self::Class1::_());
super.+(new self::Class1::_());
}
- method method({dynamic a = #C1}) → dynamic {}
+ method method({dynamic a = #C2}) → dynamic {}
get call() → core::int
return 0;
}
static method main() → dynamic {}
constants {
- #C1 = null
+ #C1 = constructor-tearoff self::Class1::•
+ #C2 = null
}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.outline.expect
index 8977ba1..70bc2cc 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_in_invalid.dart.weak.outline.expect
@@ -23,3 +23,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_invocation_in_invalid.dart:5:7 -> ConstructorTearOffConstant(Class1.)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.expect
index 39405c7..4f4319e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.expect
@@ -18,7 +18,7 @@
typedef Typedef4<@#C1 unrelated T extends core::Object? = dynamic> = (@#C1 dynamic o1, {@#C1 dynamic o2}) → void;
@#C1
class Const extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::Const::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
const constructor internal() → self::Const
: super core::Object::•()
;
@@ -27,24 +27,24 @@
}
class Class<@#C1 T extends core::Object? = dynamic> extends core::Object {
@#C1
- field <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {
+ field <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {}
};
@#C1
constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
@#C1
- method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+ method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → dynamic {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
}
@#C1
- method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
- <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+ method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → dynamic {
+ <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {};
}
}
@#C1
@@ -56,46 +56,47 @@
tearoff method2 = self::Extension|get#method2;
}
@#C1
-static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
};
@#C1
-static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null Extension|field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null Extension|field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
};
@#C1
-static method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+static method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → dynamic {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
}
@#C1
-static method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
- <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+static method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → dynamic {
+ <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {};
}
@#C1
-static method Extension|method1<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method1::#T%> #this, @#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+static method Extension|method1<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method1::#T%> #this, @#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → dynamic {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
}
static method Extension|get#method1<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method1::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, [dynamic]) → dynamic
- return <T extends core::Object? = dynamic>(dynamic o1, [dynamic o2 = #C2]) → dynamic => self::Extension|method1<self::Extension|get#method1::#T%, T%>(#this, o1, o2);
+ return <T extends core::Object? = dynamic>(dynamic o1, [dynamic o2 = #C3]) → dynamic => self::Extension|method1<self::Extension|get#method1::#T%, T%>(#this, o1, o2);
@#C1
-static method Extension|method2<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method2::#T%> #this, @#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
- <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+static method Extension|method2<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method2::#T%> #this, @#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → dynamic {
+ <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {};
}
static method Extension|get#method2<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method2::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → dynamic
- return <T extends core::Object? = dynamic>(dynamic o1, {dynamic o2 = #C2}) → dynamic => self::Extension|method2<self::Extension|get#method2::#T%, T%>(#this, o1, o2: o2);
+ return <T extends core::Object? = dynamic>(dynamic o1, {dynamic o2 = #C3}) → dynamic => self::Extension|method2<self::Extension|get#method2::#T%, T%>(#this, o1, o2: o2);
static method main() → dynamic {}
constants {
#C1 = self::Const {}
- #C2 = null
+ #C2 = constructor-tearoff self::Const::•
+ #C3 = null
}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect
index 777c550..ac02ea3 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.outline.expect
@@ -80,6 +80,7 @@
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:85:2 -> InstanceConstant(const Const{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:86:24 -> InstanceConstant(const Const{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:17:2 -> InstanceConstant(const Const{})
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:18:7 -> ConstructorTearOffConstant(Const.)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:46:14 -> InstanceConstant(const Const{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:56:4 -> InstanceConstant(const Const{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:59:4 -> InstanceConstant(const Const{})
@@ -98,4 +99,4 @@
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:109:12 -> InstanceConstant(const Const{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:23:2 -> InstanceConstant(const Const{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///redirecting_factory_invocation_metadata.dart:90:4 -> InstanceConstant(const Const{})
-Extra constant evaluation: evaluated: 41, effectively constant: 28
+Extra constant evaluation: evaluated: 41, effectively constant: 29
diff --git a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.transformed.expect
index 39405c7..4f4319e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_invocation_metadata.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
typedef Typedef4<@#C1 unrelated T extends core::Object? = dynamic> = (@#C1 dynamic o1, {@#C1 dynamic o2}) → void;
@#C1
class Const extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::Const::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
const constructor internal() → self::Const
: super core::Object::•()
;
@@ -27,24 +27,24 @@
}
class Class<@#C1 T extends core::Object? = dynamic> extends core::Object {
@#C1
- field <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {
+ field <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {}
};
@#C1
constructor •() → self::Class<self::Class::T%>
: super core::Object::•()
;
@#C1
- method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+ method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → dynamic {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
}
@#C1
- method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
- <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+ method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → dynamic {
+ <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {};
}
}
@#C1
@@ -56,46 +56,47 @@
tearoff method2 = self::Extension|get#method2;
}
@#C1
-static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
};
@#C1
-static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null Extension|field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {
+static field <T extends core::Object? = dynamic>(dynamic, [dynamic]) → Null Extension|field = <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
};
@#C1
-static method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+static method method1<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → dynamic {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
}
@#C1
-static method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
- <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+static method method2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → dynamic {
+ <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {};
}
@#C1
-static method Extension|method1<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method1::#T%> #this, @#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → dynamic {
+static method Extension|method1<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method1::#T%> #this, @#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → dynamic {
@#C1 dynamic l1;
@#C1
- function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C2]) → Null {}
+ function l2<@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, [@#C1 dynamic o2 = #C3]) → Null {}
}
static method Extension|get#method1<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method1::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, [dynamic]) → dynamic
- return <T extends core::Object? = dynamic>(dynamic o1, [dynamic o2 = #C2]) → dynamic => self::Extension|method1<self::Extension|get#method1::#T%, T%>(#this, o1, o2);
+ return <T extends core::Object? = dynamic>(dynamic o1, [dynamic o2 = #C3]) → dynamic => self::Extension|method1<self::Extension|get#method1::#T%, T%>(#this, o1, o2);
@#C1
-static method Extension|method2<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method2::#T%> #this, @#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → dynamic {
- <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C2}) → Null {};
+static method Extension|method2<#T extends core::Object? = dynamic, @#C1 T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|method2::#T%> #this, @#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → dynamic {
+ <@#C1 T extends core::Object? = dynamic>(@#C1 dynamic o1, {@#C1 dynamic o2 = #C3}) → Null {};
}
static method Extension|get#method2<#T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#method2::#T%> #this) → <T extends core::Object? = dynamic>(dynamic, {o2: dynamic}) → dynamic
- return <T extends core::Object? = dynamic>(dynamic o1, {dynamic o2 = #C2}) → dynamic => self::Extension|method2<self::Extension|get#method2::#T%, T%>(#this, o1, o2: o2);
+ return <T extends core::Object? = dynamic>(dynamic o1, {dynamic o2 = #C3}) → dynamic => self::Extension|method2<self::Extension|get#method2::#T%, T%>(#this, o1, o2: o2);
static method main() → dynamic {}
constants {
#C1 = self::Const {}
- #C2 = null
+ #C2 = constructor-tearoff self::Const::•
+ #C3 = null
}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.expect
index 9cea1c8..9b12539 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.expect
@@ -3,12 +3,12 @@
import "dart:core" as core;
class Foo extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor named(dynamic p) → self::Foo*
: super core::Object::•()
;
- @#C1
- static factory •(@#C2 @#C3 dynamic p) → self::Foo*
+ @#C2
+ static factory •(@#C3 @#C4 dynamic p) → self::Foo*
return new self::Foo::named(p);
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -21,13 +21,14 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-static const field core::int* forParameter = #C2;
-static const field core::int* forFactoryItself = #C1;
-static const field core::int* anotherForParameter = #C3;
+static const field core::int* forParameter = #C3;
+static const field core::int* forFactoryItself = #C2;
+static const field core::int* anotherForParameter = #C4;
static method main() → dynamic {}
constants {
- #C1 = 2
- #C2 = 1
- #C3 = 3
+ #C1 = constructor-tearoff self::Foo::•
+ #C2 = 2
+ #C3 = 1
+ #C4 = 3
}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.outline.expect
index f807177..69d94af 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.outline.expect
@@ -29,4 +29,5 @@
Extra constant evaluation status:
Evaluated: StaticGet @ org-dartlang-testcase:///redirecting_factory_metadata.dart:15:4 -> IntConstant(2)
-Extra constant evaluation: evaluated: 5, effectively constant: 1
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_metadata.dart:14:7 -> ConstructorTearOffConstant(Foo.)
+Extra constant evaluation: evaluated: 5, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.transformed.expect
index 9cea1c8..9b12539 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.transformed.expect
@@ -3,12 +3,12 @@
import "dart:core" as core;
class Foo extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor named(dynamic p) → self::Foo*
: super core::Object::•()
;
- @#C1
- static factory •(@#C2 @#C3 dynamic p) → self::Foo*
+ @#C2
+ static factory •(@#C3 @#C4 dynamic p) → self::Foo*
return new self::Foo::named(p);
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -21,13 +21,14 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-static const field core::int* forParameter = #C2;
-static const field core::int* forFactoryItself = #C1;
-static const field core::int* anotherForParameter = #C3;
+static const field core::int* forParameter = #C3;
+static const field core::int* forFactoryItself = #C2;
+static const field core::int* anotherForParameter = #C4;
static method main() → dynamic {}
constants {
- #C1 = 2
- #C2 = 1
- #C3 = 3
+ #C1 = constructor-tearoff self::Foo::•
+ #C2 = 2
+ #C3 = 1
+ #C4 = 3
}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.expect
index ca460af..f2a4360 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::A*
: super core::Object::•()
;
@@ -23,3 +23,7 @@
static method main() → dynamic {
new self::A::•();
}
+
+constants {
+ #C1 = constructor-tearoff self::A::redir
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.outline.expect
index 8549d41..20fd71c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.outline.expect
@@ -21,3 +21,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_simple_test.dart:10:7 -> ConstructorTearOffConstant(A.redir)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.transformed.expect
index ca460af..f2a4360 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::A*
: super core::Object::•()
;
@@ -23,3 +23,7 @@
static method main() → dynamic {
new self::A::•();
}
+
+constants {
+ #C1 = constructor-tearoff self::A::redir
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.expect
index b3ec99a..16c46e9 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.expect
@@ -23,7 +23,7 @@
;
}
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::A*
: super core::Object::•()
;
@@ -48,3 +48,7 @@
static method main() → dynamic {
new self::B::•<self::Y*>();
}
+
+constants {
+ #C1 = constructor-tearoff self::A::redir
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.outline.expect
index fedbec2..024a135 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.outline.expect
@@ -43,3 +43,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_typeargs_test.dart:15:7 -> ConstructorTearOffConstant(A.redir)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.transformed.expect
index b3ec99a..16c46e9 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
;
}
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::A*
: super core::Object::•()
;
@@ -48,3 +48,7 @@
static method main() → dynamic {
new self::B::•<self::Y*>();
}
+
+constants {
+ #C1 = constructor-tearoff self::A::redir
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.expect
index d5fafac..469f2af 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
@@ -23,3 +23,7 @@
static method main() → dynamic {
new self::A::•<core::int*, core::String*>(42, "foobar");
}
+
+constants {
+ #C1 = constructor-tearoff self::A::redir
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.outline.expect
index 3bf6457..795e0a9 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.outline.expect
@@ -21,3 +21,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_typeparam_test.dart:12:7 -> ConstructorTearOffConstant(A.redir)
+Extra constant evaluation: evaluated: 5, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.transformed.expect
index d5fafac..469f2af 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
@@ -23,3 +23,7 @@
static method main() → dynamic {
new self::A::•<core::int*, core::String*>(42, "foobar");
}
+
+constants {
+ #C1 = constructor-tearoff self::A::redir
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.expect
index 6b9f76b..98d4e12 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.expect
@@ -23,7 +23,7 @@
;
}
class A<T extends core::Object* = dynamic, S extends self::A::T* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
@@ -43,3 +43,7 @@
static method main() → dynamic {
new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
}
+
+constants {
+ #C1 = constructor-tearoff self::A::redir
+}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.outline.expect
index 522c0dc..ef67ff4 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.outline.expect
@@ -39,3 +39,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_typeparambounds_test.dart:16:7 -> ConstructorTearOffConstant(A.redir)
+Extra constant evaluation: evaluated: 5, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
index 6b9f76b..98d4e12 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
;
}
class A<T extends core::Object* = dynamic, S extends self::A::T* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
@@ -43,3 +43,7 @@
static method main() → dynamic {
new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
}
+
+constants {
+ #C1 = constructor-tearoff self::A::redir
+}
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.expect
index 45971e6..273bd861 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor empty() → self::A<self::A::T*>*
: super core::Object::•()
;
@@ -24,7 +24,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
- static final field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
@@ -41,3 +41,8 @@
static method main() → dynamic {
exp::Expect::equals("${new self::C::•<core::int*, core::num*, core::String*>()}", "int,num,String");
}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.outline.expect
index 97f2aa7..4a31e13 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.outline.expect
@@ -36,3 +36,9 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments.dart:12:7 -> ConstructorTearOffConstant(A.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments.dart:17:7 -> ConstructorTearOffConstant(B.)
+Extra constant evaluation: evaluated: 6, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.transformed.expect
index 45971e6..273bd861 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor empty() → self::A<self::A::T*>*
: super core::Object::•()
;
@@ -24,7 +24,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
- static final field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
@@ -41,3 +41,8 @@
static method main() → dynamic {
exp::Expect::equals("${new self::C::•<core::int*, core::num*, core::String*>()}", "int,num,String");
}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.expect
index 21aa750..516d00c 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
abstract class A<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor empty() → self::A<self::A::T*>*
: super core::Object::•()
;
@@ -24,7 +24,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
- static final field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
@@ -41,3 +41,8 @@
static method main() → dynamic {
exp::Expect::equals("${new self::C::•<core::int*, core::List<core::int*>*, core::Map<core::int*, core::List<core::int*>*>*>()}", "int,List<int>,Map<int, List<int>>");
}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.outline.expect
index fc699bb..2736c94 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.outline.expect
@@ -36,3 +36,9 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments_subst.dart:11:16 -> ConstructorTearOffConstant(A.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments_subst.dart:16:16 -> ConstructorTearOffConstant(B.)
+Extra constant evaluation: evaluated: 6, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
index 21aa750..516d00c 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
abstract class A<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor empty() → self::A<self::A::T*>*
: super core::Object::•()
;
@@ -24,7 +24,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
- static final field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
@@ -41,3 +41,8 @@
static method main() → dynamic {
exp::Expect::equals("${new self::C::•<core::int*, core::List<core::int*>*, core::Map<core::int*, core::List<core::int*>*>*>()}", "int,List<int>,Map<int, List<int>>");
}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.expect
index e858e7d..be27ced 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
const constructor empty() → self::A*
: super core::Object::•()
;
@@ -31,11 +31,12 @@
return "${self::B::T*}";
}
static method main() → void {
- exp::Expect::equals("${#C1}", "String");
+ exp::Expect::equals("${#C2}", "String");
}
constants {
- #C1 = self::B<core::String*> {}
+ #C1 = constructor-tearoff self::A::•
+ #C2 = self::B<core::String*> {}
}
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.outline.expect
index 0d1b358..7640720 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.outline.expect
@@ -31,3 +31,8 @@
}
static method main() → void
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_type_arguments.dart:10:7 -> ConstructorTearOffConstant(A.)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.transformed.expect
index e858e7d..be27ced 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
const constructor empty() → self::A*
: super core::Object::•()
;
@@ -31,11 +31,12 @@
return "${self::B::T*}";
}
static method main() → void {
- exp::Expect::equals("${#C1}", "String");
+ exp::Expect::equals("${#C2}", "String");
}
constants {
- #C1 = self::B<core::String*> {}
+ #C1 = constructor-tearoff self::A::•
+ #C2 = self::B<core::String*> {}
}
diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.expect
index 0dfa518..31bd8fe 100644
--- a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.expect
@@ -617,9 +617,9 @@
#C4 = TypeLiteralConstant(invalid-type)
#C5 = TypeLiteralConstant(self::Class<invalid-type>*)
#C6 = constructor-tearoff self::Class::•
- #C7 = instantiation self::Class::• <invalid-type>
+ #C7 = instantiation #C6 <invalid-type>
#C8 = TypeLiteralConstant(self::Class<self::Class<invalid-type>*>*)
- #C9 = instantiation self::Class::• <self::Class<invalid-type>*>
+ #C9 = instantiation #C6 <self::Class<invalid-type>*>
#C10 = self::Class<<S extends invalid-type>() →* void> {instanceField:#C1}
}
diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect
index c523d09..1da87de 100644
--- a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect
@@ -617,9 +617,9 @@
#C4 = TypeLiteralConstant(invalid-type)
#C5 = TypeLiteralConstant(self::Class<invalid-type>*)
#C6 = constructor-tearoff self::Class::•
- #C7 = instantiation self::Class::• <invalid-type>
+ #C7 = instantiation #C6 <invalid-type>
#C8 = TypeLiteralConstant(self::Class<self::Class<invalid-type>*>*)
- #C9 = instantiation self::Class::• <self::Class<invalid-type>*>
+ #C9 = instantiation #C6 <self::Class<invalid-type>*>
#C10 = self::Class<<S extends invalid-type>() →* void> {instanceField:#C1}
}
diff --git a/pkg/front_end/testcases/incremental/changing_modules_8.yaml.world.1.expect b/pkg/front_end/testcases/incremental/changing_modules_8.yaml.world.1.expect
index 39507e3..f8cb2d3 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_8.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/changing_modules_8.yaml.world.1.expect
@@ -12,7 +12,7 @@
import "package:module/lib2.dart";
abstract class XSet extends dart.core::Object {
- static final field dynamic _redirecting# = <dynamic>[lib1::XSet::identity];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory identity() → lib1::XSet*
return lib2::XLinkedHashSet::identity();
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
@@ -33,7 +33,7 @@
import "package:module/lib3.dart";
class XLinkedHashSet extends dart.core::Object implements lib1::XSet {
- static final field dynamic _redirecting# = <dynamic>[lib2::XLinkedHashSet::identity];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
static factory identity() → lib2::XLinkedHashSet*
return new lib3::XIdentityHashSet::•();
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
@@ -68,3 +68,7 @@
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
}
+constants {
+ #C1 = constructor-tearoff lib1::XSet::identity
+ #C2 = constructor-tearoff lib2::XLinkedHashSet::identity
+}
diff --git a/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.1.expect
index 938df3f..b30010d 100644
--- a/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.1.expect
@@ -9,7 +9,7 @@
//
class C extends dart.core::Object {
- static final field dynamic _redirecting# = <dynamic>[lib::C::e4];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → lib::C*
: super dart.core::Object::•()
;
@@ -35,3 +35,6 @@
lib::C* c = new lib::C::•();
}
}
+constants {
+ #C1 = constructor-tearoff lib::C::e4
+}
diff --git a/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.2.expect
index 991ad94..cc3198c 100644
--- a/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/crash_test_1.yaml.world.2.expect
@@ -9,7 +9,7 @@
//
class C extends dart.core::Object {
- static final field dynamic _redirecting# = <dynamic>[lib::C::e4];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → lib::C*
: super dart.core::Object::•()
;
@@ -36,3 +36,6 @@
dart.core::print(c);
}
}
+constants {
+ #C1 = constructor-tearoff lib::C::e4
+}
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.1.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.1.expect
index 41475f6..ff0ff25 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.1.expect
@@ -51,32 +51,32 @@
return new foo::Foo::_($creationLocationd_0dea112b090073317d4: #C12);
}
class Bar extends fra::Widget /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[foo::Bar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C13]/*isLegacy*/;
const constructor _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Bar
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
static factory •({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Bar
return new foo::Bar::_($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4);
static method _#new#tearOff() → foo::Bar
- return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C16);
+ return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C17);
static method _#_#tearOff() → foo::Bar
- return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C18);
+ return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C19);
}
class Baz extends fra::Widget /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[foo::Baz::_]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C20]/*isLegacy*/;
const constructor __({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
static factory •({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
- return #C22;
+ return #C24;
static method _#new#tearOff() → foo::Baz
- return foo::Baz::•($creationLocationd_0dea112b090073317d4: #C23);
+ return foo::Baz::•($creationLocationd_0dea112b090073317d4: #C25);
static factory _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
return new foo::Baz::__($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4);
static method _#_#tearOff() → foo::Baz
- return new foo::Baz::__($creationLocationd_0dea112b090073317d4: #C25);
- static method _#__#tearOff() → foo::Baz
return new foo::Baz::__($creationLocationd_0dea112b090073317d4: #C27);
+ static method _#__#tearOff() → foo::Baz
+ return new foo::Baz::__($creationLocationd_0dea112b090073317d4: #C29);
}
class Boz extends fra::Widget /*hasConstConstructor*/ {
const constructor _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Boz
@@ -87,25 +87,25 @@
return new foo::Boz::_($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4);
}
else {
- return #C32;
+ return #C34;
}
}
static method _#new#tearOff({required dart.core::bool createNew = #C1}) → foo::Boz
- return foo::Boz::•(createNew: createNew, $creationLocationd_0dea112b090073317d4: #C33);
+ return foo::Boz::•(createNew: createNew, $creationLocationd_0dea112b090073317d4: #C35);
static method _#_#tearOff() → foo::Boz
- return new foo::Boz::_($creationLocationd_0dea112b090073317d4: #C35);
+ return new foo::Boz::_($creationLocationd_0dea112b090073317d4: #C37);
}
}
library from "org-dartlang-test:///main.dart" as main {
import "org-dartlang-test:///foo.dart";
- static field foo::Foo newFoo = foo::Foo::•($creationLocationd_0dea112b090073317d4: #C38);
- static field foo::Bar newBar = new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C39);
- static field foo::Bar constBar = #C42;
- static field foo::Baz newBaz = foo::Baz::•($creationLocationd_0dea112b090073317d4: #C43);
- static field foo::Boz newBoz = foo::Boz::•(createNew: true, $creationLocationd_0dea112b090073317d4: #C44);
- static field foo::Boz constBoz = foo::Boz::•(createNew: false, $creationLocationd_0dea112b090073317d4: #C46);
+ static field foo::Foo newFoo = foo::Foo::•($creationLocationd_0dea112b090073317d4: #C40);
+ static field foo::Bar newBar = new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C41);
+ static field foo::Bar constBar = #C44;
+ static field foo::Baz newBaz = foo::Baz::•($creationLocationd_0dea112b090073317d4: #C45);
+ static field foo::Boz newBoz = foo::Boz::•(createNew: true, $creationLocationd_0dea112b090073317d4: #C46);
+ static field foo::Boz constBoz = foo::Boz::•(createNew: false, $creationLocationd_0dea112b090073317d4: #C48);
}
constants {
#C1 = null
@@ -120,38 +120,40 @@
#C10 = 3.0
#C11 = 7.0
#C12 = wid::_Location {file:#C2, line:#C10, column:#C11, name:#C5, parameterLocations:#C1}
- #C13 = 4.0
- #C14 = 42.0
- #C15 = "Bar"
- #C16 = wid::_Location {file:#C2, line:#C13, column:#C14, name:#C15, parameterLocations:#C1}
- #C17 = 5.0
- #C18 = wid::_Location {file:#C2, line:#C17, column:#C11, name:#C15, parameterLocations:#C1}
- #C19 = 6.0
- #C20 = "Baz"
- #C21 = wid::_Location {file:#C2, line:#C19, column:#C4, name:#C20, parameterLocations:#C1}
- #C22 = foo::Baz {_location:#C21}
- #C23 = wid::_Location {file:#C2, line:#C19, column:#C8, name:#C20, parameterLocations:#C1}
- #C24 = 15.0
- #C25 = wid::_Location {file:#C2, line:#C11, column:#C24, name:#C20, parameterLocations:#C1}
- #C26 = 8.0
- #C27 = wid::_Location {file:#C2, line:#C26, column:#C11, name:#C20, parameterLocations:#C1}
- #C28 = 9.0
- #C29 = 128.0
- #C30 = "Boz"
- #C31 = wid::_Location {file:#C2, line:#C28, column:#C29, name:#C30, parameterLocations:#C1}
- #C32 = foo::Boz {_location:#C31}
- #C33 = wid::_Location {file:#C2, line:#C28, column:#C8, name:#C30, parameterLocations:#C1}
- #C34 = 10.0
- #C35 = wid::_Location {file:#C2, line:#C34, column:#C11, name:#C30, parameterLocations:#C1}
- #C36 = "org-dartlang-test:///main.dart"
- #C37 = 18.0
- #C38 = wid::_Location {file:#C36, line:#C3, column:#C37, name:#C5, parameterLocations:#C1}
- #C39 = wid::_Location {file:#C36, line:#C10, column:#C37, name:#C15, parameterLocations:#C1}
- #C40 = 22.0
- #C41 = wid::_Location {file:#C36, line:#C13, column:#C40, name:#C15, parameterLocations:#C1}
- #C42 = foo::Bar {_location:#C41}
- #C43 = wid::_Location {file:#C36, line:#C17, column:#C37, name:#C20, parameterLocations:#C1}
- #C44 = wid::_Location {file:#C36, line:#C19, column:#C37, name:#C30, parameterLocations:#C1}
- #C45 = 20.0
- #C46 = wid::_Location {file:#C36, line:#C11, column:#C45, name:#C30, parameterLocations:#C1}
+ #C13 = constructor-tearoff foo::Bar::•
+ #C14 = 4.0
+ #C15 = 42.0
+ #C16 = "Bar"
+ #C17 = wid::_Location {file:#C2, line:#C14, column:#C15, name:#C16, parameterLocations:#C1}
+ #C18 = 5.0
+ #C19 = wid::_Location {file:#C2, line:#C18, column:#C11, name:#C16, parameterLocations:#C1}
+ #C20 = constructor-tearoff foo::Baz::_
+ #C21 = 6.0
+ #C22 = "Baz"
+ #C23 = wid::_Location {file:#C2, line:#C21, column:#C4, name:#C22, parameterLocations:#C1}
+ #C24 = foo::Baz {_location:#C23}
+ #C25 = wid::_Location {file:#C2, line:#C21, column:#C8, name:#C22, parameterLocations:#C1}
+ #C26 = 15.0
+ #C27 = wid::_Location {file:#C2, line:#C11, column:#C26, name:#C22, parameterLocations:#C1}
+ #C28 = 8.0
+ #C29 = wid::_Location {file:#C2, line:#C28, column:#C11, name:#C22, parameterLocations:#C1}
+ #C30 = 9.0
+ #C31 = 128.0
+ #C32 = "Boz"
+ #C33 = wid::_Location {file:#C2, line:#C30, column:#C31, name:#C32, parameterLocations:#C1}
+ #C34 = foo::Boz {_location:#C33}
+ #C35 = wid::_Location {file:#C2, line:#C30, column:#C8, name:#C32, parameterLocations:#C1}
+ #C36 = 10.0
+ #C37 = wid::_Location {file:#C2, line:#C36, column:#C11, name:#C32, parameterLocations:#C1}
+ #C38 = "org-dartlang-test:///main.dart"
+ #C39 = 18.0
+ #C40 = wid::_Location {file:#C38, line:#C3, column:#C39, name:#C5, parameterLocations:#C1}
+ #C41 = wid::_Location {file:#C38, line:#C10, column:#C39, name:#C16, parameterLocations:#C1}
+ #C42 = 22.0
+ #C43 = wid::_Location {file:#C38, line:#C14, column:#C42, name:#C16, parameterLocations:#C1}
+ #C44 = foo::Bar {_location:#C43}
+ #C45 = wid::_Location {file:#C38, line:#C18, column:#C39, name:#C22, parameterLocations:#C1}
+ #C46 = wid::_Location {file:#C38, line:#C21, column:#C39, name:#C32, parameterLocations:#C1}
+ #C47 = 20.0
+ #C48 = wid::_Location {file:#C38, line:#C11, column:#C47, name:#C32, parameterLocations:#C1}
}
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.2.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.2.expect
index 6f610b2..47c45a0 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.2.expect
@@ -51,32 +51,32 @@
return new foo::Foo::_($creationLocationd_0dea112b090073317d4: #C12);
}
class Bar extends fra::Widget /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[foo::Bar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C13]/*isLegacy*/;
const constructor _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Bar
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
static factory •({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Bar
return new foo::Bar::_($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4);
static method _#new#tearOff() → foo::Bar
- return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C16);
+ return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C17);
static method _#_#tearOff() → foo::Bar
- return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C18);
+ return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C19);
}
class Baz extends fra::Widget /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[foo::Baz::_]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C20]/*isLegacy*/;
const constructor __({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
static factory •({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
- return #C22;
+ return #C24;
static method _#new#tearOff() → foo::Baz
- return foo::Baz::•($creationLocationd_0dea112b090073317d4: #C23);
+ return foo::Baz::•($creationLocationd_0dea112b090073317d4: #C25);
static factory _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
return new foo::Baz::__($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4);
static method _#_#tearOff() → foo::Baz
- return new foo::Baz::__($creationLocationd_0dea112b090073317d4: #C25);
- static method _#__#tearOff() → foo::Baz
return new foo::Baz::__($creationLocationd_0dea112b090073317d4: #C27);
+ static method _#__#tearOff() → foo::Baz
+ return new foo::Baz::__($creationLocationd_0dea112b090073317d4: #C29);
}
class Boz extends fra::Widget /*hasConstConstructor*/ {
const constructor _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Boz
@@ -87,13 +87,13 @@
return new foo::Boz::_($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4);
}
else {
- return #C32;
+ return #C34;
}
}
static method _#new#tearOff({required dart.core::bool createNew = #C1}) → foo::Boz
- return foo::Boz::•(createNew: createNew, $creationLocationd_0dea112b090073317d4: #C33);
+ return foo::Boz::•(createNew: createNew, $creationLocationd_0dea112b090073317d4: #C35);
static method _#_#tearOff() → foo::Boz
- return new foo::Boz::_($creationLocationd_0dea112b090073317d4: #C35);
+ return new foo::Boz::_($creationLocationd_0dea112b090073317d4: #C37);
}
}
library from "org-dartlang-test:///main.dart" as main {
@@ -114,27 +114,29 @@
#C10 = 3.0
#C11 = 7.0
#C12 = wid::_Location {file:#C2, line:#C10, column:#C11, name:#C5, parameterLocations:#C1}
- #C13 = 4.0
- #C14 = 42.0
- #C15 = "Bar"
- #C16 = wid::_Location {file:#C2, line:#C13, column:#C14, name:#C15, parameterLocations:#C1}
- #C17 = 5.0
- #C18 = wid::_Location {file:#C2, line:#C17, column:#C11, name:#C15, parameterLocations:#C1}
- #C19 = 6.0
- #C20 = "Baz"
- #C21 = wid::_Location {file:#C2, line:#C19, column:#C4, name:#C20, parameterLocations:#C1}
- #C22 = foo::Baz {_location:#C21}
- #C23 = wid::_Location {file:#C2, line:#C19, column:#C8, name:#C20, parameterLocations:#C1}
- #C24 = 15.0
- #C25 = wid::_Location {file:#C2, line:#C11, column:#C24, name:#C20, parameterLocations:#C1}
- #C26 = 8.0
- #C27 = wid::_Location {file:#C2, line:#C26, column:#C11, name:#C20, parameterLocations:#C1}
- #C28 = 9.0
- #C29 = 128.0
- #C30 = "Boz"
- #C31 = wid::_Location {file:#C2, line:#C28, column:#C29, name:#C30, parameterLocations:#C1}
- #C32 = foo::Boz {_location:#C31}
- #C33 = wid::_Location {file:#C2, line:#C28, column:#C8, name:#C30, parameterLocations:#C1}
- #C34 = 10.0
- #C35 = wid::_Location {file:#C2, line:#C34, column:#C11, name:#C30, parameterLocations:#C1}
+ #C13 = constructor-tearoff foo::Bar::•
+ #C14 = 4.0
+ #C15 = 42.0
+ #C16 = "Bar"
+ #C17 = wid::_Location {file:#C2, line:#C14, column:#C15, name:#C16, parameterLocations:#C1}
+ #C18 = 5.0
+ #C19 = wid::_Location {file:#C2, line:#C18, column:#C11, name:#C16, parameterLocations:#C1}
+ #C20 = constructor-tearoff foo::Baz::_
+ #C21 = 6.0
+ #C22 = "Baz"
+ #C23 = wid::_Location {file:#C2, line:#C21, column:#C4, name:#C22, parameterLocations:#C1}
+ #C24 = foo::Baz {_location:#C23}
+ #C25 = wid::_Location {file:#C2, line:#C21, column:#C8, name:#C22, parameterLocations:#C1}
+ #C26 = 15.0
+ #C27 = wid::_Location {file:#C2, line:#C11, column:#C26, name:#C22, parameterLocations:#C1}
+ #C28 = 8.0
+ #C29 = wid::_Location {file:#C2, line:#C28, column:#C11, name:#C22, parameterLocations:#C1}
+ #C30 = 9.0
+ #C31 = 128.0
+ #C32 = "Boz"
+ #C33 = wid::_Location {file:#C2, line:#C30, column:#C31, name:#C32, parameterLocations:#C1}
+ #C34 = foo::Boz {_location:#C33}
+ #C35 = wid::_Location {file:#C2, line:#C30, column:#C8, name:#C32, parameterLocations:#C1}
+ #C36 = 10.0
+ #C37 = wid::_Location {file:#C2, line:#C36, column:#C11, name:#C32, parameterLocations:#C1}
}
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.3.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.3.expect
index 41475f6..ff0ff25 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.3.expect
@@ -51,32 +51,32 @@
return new foo::Foo::_($creationLocationd_0dea112b090073317d4: #C12);
}
class Bar extends fra::Widget /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[foo::Bar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C13]/*isLegacy*/;
const constructor _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Bar
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
static factory •({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Bar
return new foo::Bar::_($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4);
static method _#new#tearOff() → foo::Bar
- return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C16);
+ return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C17);
static method _#_#tearOff() → foo::Bar
- return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C18);
+ return new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C19);
}
class Baz extends fra::Widget /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[foo::Baz::_]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C20]/*isLegacy*/;
const constructor __({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
static factory •({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
- return #C22;
+ return #C24;
static method _#new#tearOff() → foo::Baz
- return foo::Baz::•($creationLocationd_0dea112b090073317d4: #C23);
+ return foo::Baz::•($creationLocationd_0dea112b090073317d4: #C25);
static factory _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
return new foo::Baz::__($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4);
static method _#_#tearOff() → foo::Baz
- return new foo::Baz::__($creationLocationd_0dea112b090073317d4: #C25);
- static method _#__#tearOff() → foo::Baz
return new foo::Baz::__($creationLocationd_0dea112b090073317d4: #C27);
+ static method _#__#tearOff() → foo::Baz
+ return new foo::Baz::__($creationLocationd_0dea112b090073317d4: #C29);
}
class Boz extends fra::Widget /*hasConstConstructor*/ {
const constructor _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Boz
@@ -87,25 +87,25 @@
return new foo::Boz::_($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4);
}
else {
- return #C32;
+ return #C34;
}
}
static method _#new#tearOff({required dart.core::bool createNew = #C1}) → foo::Boz
- return foo::Boz::•(createNew: createNew, $creationLocationd_0dea112b090073317d4: #C33);
+ return foo::Boz::•(createNew: createNew, $creationLocationd_0dea112b090073317d4: #C35);
static method _#_#tearOff() → foo::Boz
- return new foo::Boz::_($creationLocationd_0dea112b090073317d4: #C35);
+ return new foo::Boz::_($creationLocationd_0dea112b090073317d4: #C37);
}
}
library from "org-dartlang-test:///main.dart" as main {
import "org-dartlang-test:///foo.dart";
- static field foo::Foo newFoo = foo::Foo::•($creationLocationd_0dea112b090073317d4: #C38);
- static field foo::Bar newBar = new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C39);
- static field foo::Bar constBar = #C42;
- static field foo::Baz newBaz = foo::Baz::•($creationLocationd_0dea112b090073317d4: #C43);
- static field foo::Boz newBoz = foo::Boz::•(createNew: true, $creationLocationd_0dea112b090073317d4: #C44);
- static field foo::Boz constBoz = foo::Boz::•(createNew: false, $creationLocationd_0dea112b090073317d4: #C46);
+ static field foo::Foo newFoo = foo::Foo::•($creationLocationd_0dea112b090073317d4: #C40);
+ static field foo::Bar newBar = new foo::Bar::_($creationLocationd_0dea112b090073317d4: #C41);
+ static field foo::Bar constBar = #C44;
+ static field foo::Baz newBaz = foo::Baz::•($creationLocationd_0dea112b090073317d4: #C45);
+ static field foo::Boz newBoz = foo::Boz::•(createNew: true, $creationLocationd_0dea112b090073317d4: #C46);
+ static field foo::Boz constBoz = foo::Boz::•(createNew: false, $creationLocationd_0dea112b090073317d4: #C48);
}
constants {
#C1 = null
@@ -120,38 +120,40 @@
#C10 = 3.0
#C11 = 7.0
#C12 = wid::_Location {file:#C2, line:#C10, column:#C11, name:#C5, parameterLocations:#C1}
- #C13 = 4.0
- #C14 = 42.0
- #C15 = "Bar"
- #C16 = wid::_Location {file:#C2, line:#C13, column:#C14, name:#C15, parameterLocations:#C1}
- #C17 = 5.0
- #C18 = wid::_Location {file:#C2, line:#C17, column:#C11, name:#C15, parameterLocations:#C1}
- #C19 = 6.0
- #C20 = "Baz"
- #C21 = wid::_Location {file:#C2, line:#C19, column:#C4, name:#C20, parameterLocations:#C1}
- #C22 = foo::Baz {_location:#C21}
- #C23 = wid::_Location {file:#C2, line:#C19, column:#C8, name:#C20, parameterLocations:#C1}
- #C24 = 15.0
- #C25 = wid::_Location {file:#C2, line:#C11, column:#C24, name:#C20, parameterLocations:#C1}
- #C26 = 8.0
- #C27 = wid::_Location {file:#C2, line:#C26, column:#C11, name:#C20, parameterLocations:#C1}
- #C28 = 9.0
- #C29 = 128.0
- #C30 = "Boz"
- #C31 = wid::_Location {file:#C2, line:#C28, column:#C29, name:#C30, parameterLocations:#C1}
- #C32 = foo::Boz {_location:#C31}
- #C33 = wid::_Location {file:#C2, line:#C28, column:#C8, name:#C30, parameterLocations:#C1}
- #C34 = 10.0
- #C35 = wid::_Location {file:#C2, line:#C34, column:#C11, name:#C30, parameterLocations:#C1}
- #C36 = "org-dartlang-test:///main.dart"
- #C37 = 18.0
- #C38 = wid::_Location {file:#C36, line:#C3, column:#C37, name:#C5, parameterLocations:#C1}
- #C39 = wid::_Location {file:#C36, line:#C10, column:#C37, name:#C15, parameterLocations:#C1}
- #C40 = 22.0
- #C41 = wid::_Location {file:#C36, line:#C13, column:#C40, name:#C15, parameterLocations:#C1}
- #C42 = foo::Bar {_location:#C41}
- #C43 = wid::_Location {file:#C36, line:#C17, column:#C37, name:#C20, parameterLocations:#C1}
- #C44 = wid::_Location {file:#C36, line:#C19, column:#C37, name:#C30, parameterLocations:#C1}
- #C45 = 20.0
- #C46 = wid::_Location {file:#C36, line:#C11, column:#C45, name:#C30, parameterLocations:#C1}
+ #C13 = constructor-tearoff foo::Bar::•
+ #C14 = 4.0
+ #C15 = 42.0
+ #C16 = "Bar"
+ #C17 = wid::_Location {file:#C2, line:#C14, column:#C15, name:#C16, parameterLocations:#C1}
+ #C18 = 5.0
+ #C19 = wid::_Location {file:#C2, line:#C18, column:#C11, name:#C16, parameterLocations:#C1}
+ #C20 = constructor-tearoff foo::Baz::_
+ #C21 = 6.0
+ #C22 = "Baz"
+ #C23 = wid::_Location {file:#C2, line:#C21, column:#C4, name:#C22, parameterLocations:#C1}
+ #C24 = foo::Baz {_location:#C23}
+ #C25 = wid::_Location {file:#C2, line:#C21, column:#C8, name:#C22, parameterLocations:#C1}
+ #C26 = 15.0
+ #C27 = wid::_Location {file:#C2, line:#C11, column:#C26, name:#C22, parameterLocations:#C1}
+ #C28 = 8.0
+ #C29 = wid::_Location {file:#C2, line:#C28, column:#C11, name:#C22, parameterLocations:#C1}
+ #C30 = 9.0
+ #C31 = 128.0
+ #C32 = "Boz"
+ #C33 = wid::_Location {file:#C2, line:#C30, column:#C31, name:#C32, parameterLocations:#C1}
+ #C34 = foo::Boz {_location:#C33}
+ #C35 = wid::_Location {file:#C2, line:#C30, column:#C8, name:#C32, parameterLocations:#C1}
+ #C36 = 10.0
+ #C37 = wid::_Location {file:#C2, line:#C36, column:#C11, name:#C32, parameterLocations:#C1}
+ #C38 = "org-dartlang-test:///main.dart"
+ #C39 = 18.0
+ #C40 = wid::_Location {file:#C38, line:#C3, column:#C39, name:#C5, parameterLocations:#C1}
+ #C41 = wid::_Location {file:#C38, line:#C10, column:#C39, name:#C16, parameterLocations:#C1}
+ #C42 = 22.0
+ #C43 = wid::_Location {file:#C38, line:#C14, column:#C42, name:#C16, parameterLocations:#C1}
+ #C44 = foo::Bar {_location:#C43}
+ #C45 = wid::_Location {file:#C38, line:#C18, column:#C39, name:#C22, parameterLocations:#C1}
+ #C46 = wid::_Location {file:#C38, line:#C21, column:#C39, name:#C32, parameterLocations:#C1}
+ #C47 = 20.0
+ #C48 = wid::_Location {file:#C38, line:#C11, column:#C47, name:#C32, parameterLocations:#C1}
}
diff --git a/pkg/front_end/testcases/incremental/issue_41976.yaml.world.1.expect b/pkg/front_end/testcases/incremental/issue_41976.yaml.world.1.expect
index 008ff7a..20a26f1 100644
--- a/pkg/front_end/testcases/incremental/issue_41976.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/issue_41976.yaml.world.1.expect
@@ -2,7 +2,7 @@
library from "org-dartlang-test:///foo.dart" as foo {
abstract class Key extends dart.core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[foo::Key::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
const constructor empty() → foo::Key*
: super dart.core::Object::•()
;
@@ -45,3 +45,6 @@
dart.core::print("${k}");
}
}
+constants {
+ #C1 = constructor-tearoff foo::Key::•
+}
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.1.expect
index 02964ab..b8a5016 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.1.expect
@@ -4,7 +4,7 @@
import "org-dartlang-test:///lib2.dart";
class Foo extends dart.core::Object {
- static final field dynamic _redirecting# = <dynamic>[lib1::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •() → lib1::Foo*
return new lib2::Bar::•();
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
@@ -51,3 +51,6 @@
lib1::libMethod();
}
}
+constants {
+ #C1 = constructor-tearoff lib1::Foo::•
+}
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.2.expect
index 14d998a..ba249a3 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_11.yaml.world.2.expect
@@ -4,7 +4,7 @@
import "org-dartlang-test:///lib2.dart";
class Foo extends dart.core::Object {
- static final field dynamic _redirecting# = <dynamic>[lib1::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •() → lib1::Foo*
return new lib2::Bar::•();
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
@@ -52,3 +52,6 @@
lib1::libMethod();
}
}
+constants {
+ #C1 = constructor-tearoff lib1::Foo::•
+}
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml.world.1.expect
index 8cde08e..7aa880b 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml.world.1.expect
@@ -2,7 +2,7 @@
library from "org-dartlang-test:///main.dart" as main {
class Foo extends dart.core::Object {
- static final field dynamic _redirecting# = <dynamic>[main::Foo::bar];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → main::Foo*
: super dart.core::Object::•()
;
@@ -26,3 +26,6 @@
;
}
}
+constants {
+ #C1 = constructor-tearoff main::Foo::bar
+}
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml.world.2.expect
index 8cde08e..7aa880b 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_45_flutter_prime_1.yaml.world.2.expect
@@ -2,7 +2,7 @@
library from "org-dartlang-test:///main.dart" as main {
class Foo extends dart.core::Object {
- static final field dynamic _redirecting# = <dynamic>[main::Foo::bar];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → main::Foo*
: super dart.core::Object::•()
;
@@ -26,3 +26,6 @@
;
}
}
+constants {
+ #C1 = constructor-tearoff main::Foo::bar
+}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.expect
index ec2714c..7f8c3dd 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
abstract get t() → self::C::T*;
abstract set t(covariant-by-class self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
@@ -38,3 +38,7 @@
static method main() → dynamic {
self::C<core::int*>* x = new self::CImpl::•<core::int*>(42);
}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.outline.expect
index a882ba7..f6167ed 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.outline.expect
@@ -36,3 +36,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///constructors_infer_from_arguments_redirecting_factory.dart:8:16 -> ConstructorTearOffConstant(C.)
+Extra constant evaluation: evaluated: 4, effectively constant: 1
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.transformed.expect
index ec2714c..7f8c3dd 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
abstract get t() → self::C::T*;
abstract set t(covariant-by-class self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
@@ -38,3 +38,7 @@
static method main() → dynamic {
self::C<core::int*>* x = new self::CImpl::•<core::int*>(42);
}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.expect
index cf8581d..a2fd0ae 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
abstract get t() → self::C::T*;
abstract set t(covariant-by-class self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
@@ -40,3 +40,7 @@
static method main() → dynamic {
self::C<core::int*>* x = self::CImpl::•<core::int*>(42);
}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.outline.expect
index f2e7522..0980409 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.outline.expect
@@ -38,3 +38,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///constructors_infer_from_arguments_redirecting_factory_to_factory.dart:8:16 -> ConstructorTearOffConstant(C.)
+Extra constant evaluation: evaluated: 4, effectively constant: 1
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.transformed.expect
index cf8581d..a2fd0ae 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
abstract get t() → self::C::T*;
abstract set t(covariant-by-class self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
@@ -40,3 +40,7 @@
static method main() → dynamic {
self::C<core::int*>* x = self::CImpl::•<core::int*>(42);
}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.expect
index 937b216..a033796 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.expect
@@ -177,13 +177,13 @@
constants {
#C1 = static-tearoff math::max
- #C2 = instantiation math::max <core::int*>
- #C3 = instantiation math::max <core::double*>
- #C4 = instantiation math::max <core::num*>
- #C5 = instantiation math::max <core::Object*>
+ #C2 = instantiation #C1 <core::int*>
+ #C3 = instantiation #C1 <core::double*>
+ #C4 = instantiation #C1 <core::num*>
+ #C5 = instantiation #C1 <core::Object*>
#C6 = static-tearoff math::min
- #C7 = instantiation math::min <core::int*>
- #C8 = instantiation math::min <core::double*>
- #C9 = instantiation math::min <core::num*>
- #C10 = instantiation math::min <core::Object*>
+ #C7 = instantiation #C6 <core::int*>
+ #C8 = instantiation #C6 <core::double*>
+ #C9 = instantiation #C6 <core::num*>
+ #C10 = instantiation #C6 <core::Object*>
}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.transformed.expect
index 937b216..a033796 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.weak.transformed.expect
@@ -177,13 +177,13 @@
constants {
#C1 = static-tearoff math::max
- #C2 = instantiation math::max <core::int*>
- #C3 = instantiation math::max <core::double*>
- #C4 = instantiation math::max <core::num*>
- #C5 = instantiation math::max <core::Object*>
+ #C2 = instantiation #C1 <core::int*>
+ #C3 = instantiation #C1 <core::double*>
+ #C4 = instantiation #C1 <core::num*>
+ #C5 = instantiation #C1 <core::Object*>
#C6 = static-tearoff math::min
- #C7 = instantiation math::min <core::int*>
- #C8 = instantiation math::min <core::double*>
- #C9 = instantiation math::min <core::num*>
- #C10 = instantiation math::min <core::Object*>
+ #C7 = instantiation #C6 <core::int*>
+ #C8 = instantiation #C6 <core::double*>
+ #C9 = instantiation #C6 <core::num*>
+ #C10 = instantiation #C6 <core::Object*>
}
diff --git a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.expect b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.expect
index 5a16fe2..5a1deb3 100644
--- a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.expect
@@ -45,5 +45,5 @@
constants {
#C1 = static-tearoff math::max
- #C2 = instantiation math::max <core::int*>
+ #C2 = instantiation #C1 <core::int*>
}
diff --git a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.transformed.expect
index 39218a6..28f2a02 100644
--- a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.weak.transformed.expect
@@ -45,5 +45,5 @@
constants {
#C1 = static-tearoff math::max
- #C2 = instantiation math::max <core::int*>
+ #C2 = instantiation #C1 <core::int*>
}
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.expect
index ba2952c..f272f74 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.expect
@@ -45,7 +45,7 @@
constants {
#C1 = static-tearoff self::f
- #C2 = instantiation self::f <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = static-tearoff self::C::g
- #C4 = instantiation self::C::g <core::int*>
+ #C4 = instantiation #C3 <core::int*>
}
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.transformed.expect
index ba2952c..f272f74 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.weak.transformed.expect
@@ -45,7 +45,7 @@
constants {
#C1 = static-tearoff self::f
- #C2 = instantiation self::f <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = static-tearoff self::C::g
- #C4 = instantiation self::C::g <core::int*>
+ #C4 = instantiation #C3 <core::int*>
}
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
index 5ea885d..22f41cf 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
@@ -90,7 +90,7 @@
constants {
#C1 = TypeLiteralConstant(core::Object)
#C2 = static-tearoff con::id
- #C3 = instantiation con::id <core::int>
+ #C3 = instantiation #C2 <core::int>
#C4 = 0
#C5 = con::Class<core::int> {field:#C4}
#C6 = TypeLiteralConstant((dynamic) → dynamic)
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
index 5ea885d..22f41cf 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
@@ -90,7 +90,7 @@
constants {
#C1 = TypeLiteralConstant(core::Object)
#C2 = static-tearoff con::id
- #C3 = instantiation con::id <core::int>
+ #C3 = instantiation #C2 <core::int>
#C4 = 0
#C5 = con::Class<core::int> {field:#C4}
#C6 = TypeLiteralConstant((dynamic) → dynamic)
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
index 17a63c7..9af4cec 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
@@ -90,7 +90,7 @@
constants {
#C1 = TypeLiteralConstant(core::Object*)
#C2 = static-tearoff con::id
- #C3 = instantiation con::id <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = 0
#C5 = con::Class<core::int*> {field:#C4}
#C6 = TypeLiteralConstant((dynamic) →* dynamic)
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
index 17a63c7..9af4cec 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
@@ -90,7 +90,7 @@
constants {
#C1 = TypeLiteralConstant(core::Object*)
#C2 = static-tearoff con::id
- #C3 = instantiation con::id <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = 0
#C5 = con::Class<core::int*> {field:#C4}
#C6 = TypeLiteralConstant((dynamic) →* dynamic)
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.strong.expect
index 26a075c..b233a23 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.strong.expect
@@ -103,121 +103,131 @@
class A extends core::Object {
final field core::int i;
- static final field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
- constructor constructor1([core::int i = #C1]) → self::A
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3, #C4, #C5]/*isLegacy*/;
+ constructor constructor1([core::int i = #C6]) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor2({core::int i = #C1}) → self::A
+ constructor constructor2({core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor3([core::int i = #C1]) → self::A
+ constructor constructor3([core::int i = #C6]) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor4({core::int i = #C1}) → self::A
+ constructor constructor4({core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor5([core::int? i = #C1]) → self::A
+ constructor constructor5([core::int? i = #C6]) → self::A
: self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:19:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
: this.i = i; // error
^" in i as{TypeError,ForNonNullableByDefault} core::int, super core::Object::•()
;
- constructor constructor6({core::int? i = #C1}) → self::A
+ constructor constructor6({core::int? i = #C6}) → self::A
: self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:22:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
: this.i = i; // error
^" in i as{TypeError,ForNonNullableByDefault} core::int, super core::Object::•()
;
- constructor constructor7({required core::int i = #C1}) → self::A
+ constructor constructor7({required core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- external constructor constructor8([core::int i = #C1]) → self::A
+ external constructor constructor8([core::int i = #C6]) → self::A
: super core::Object::•()
;
- external constructor constructor9({core::int i = #C1}) → self::A
+ external constructor constructor9({core::int i = #C6}) → self::A
: super core::Object::•()
;
- static factory factory3([core::int i = #C1]) → self::A
+ static factory factory3([core::int i = #C6]) → self::A
return new self::A::constructor3(i);
- static factory factory4({core::int i = #C1}) → self::A
+ static factory factory4({core::int i = #C6}) → self::A
return new self::A::constructor4(i: i);
- static factory factory5([core::int? i = #C1]) → self::A
+ static factory factory5([core::int? i = #C6]) → self::A
return new self::A::constructor5(i);
- static factory factory6({core::int? i = #C1}) → self::A
+ static factory factory6({core::int? i = #C6}) → self::A
return new self::A::constructor6(i: i);
- static factory factory7({required core::int i = #C1}) → self::A
+ static factory factory7({required core::int i = #C6}) → self::A
return new self::A::constructor7(i: i);
- static factory factory8([core::int i = #C1]) → self::A
+ static factory factory8([core::int i = #C6]) → self::A
return new self::A::constructor3();
- static factory factory9({core::int i = #C1}) → self::A
+ static factory factory9({core::int i = #C6}) → self::A
return new self::A::constructor4();
- method method3([core::int i = #C1]) → dynamic {}
- method method4({core::int i = #C1}) → dynamic {}
- method method5([core::int? i = #C1]) → dynamic {}
- method method6({core::int? i = #C1}) → dynamic {}
- method method7({required core::int i = #C1}) → dynamic {}
- external method method8([core::int i = #C1]) → dynamic;
- external method method9({core::int i = #C1}) → dynamic;
+ method method3([core::int i = #C6]) → dynamic {}
+ method method4({core::int i = #C6}) → dynamic {}
+ method method5([core::int? i = #C6]) → dynamic {}
+ method method6({core::int? i = #C6}) → dynamic {}
+ method method7({required core::int i = #C6}) → dynamic {}
+ external method method8([core::int i = #C6]) → dynamic;
+ external method method9({core::int i = #C6}) → dynamic;
}
abstract class B extends core::Object {
field core::int i = 42;
synthetic constructor •() → self::B
: super core::Object::•()
;
- abstract method method3([core::int i = #C1]) → dynamic;
- abstract method method4({core::int i = #C1}) → dynamic;
- abstract method method5([core::int? i = #C1]) → dynamic;
- abstract method method6({core::int? i = #C1}) → dynamic;
- abstract method method7({required core::int i = #C1}) → dynamic;
+ abstract method method3([core::int i = #C6]) → dynamic;
+ abstract method method4({core::int i = #C6}) → dynamic;
+ abstract method method5([core::int? i = #C6]) → dynamic;
+ abstract method method6({core::int? i = #C6}) → dynamic;
+ abstract method method7({required core::int i = #C6}) → dynamic;
}
class C extends core::Object implements self::B {
field core::int i;
- static final field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
- constructor constructor1([core::int i = #C1]) → self::C
+ static final field dynamic _redirecting# = <dynamic>[#C7, #C8, #C9, #C10, #C11]/*isLegacy*/;
+ constructor constructor1([core::int i = #C6]) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor2({core::int i = #C1}) → self::C
+ constructor constructor2({core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor3([core::int i = #C1]) → self::C
+ constructor constructor3([core::int i = #C6]) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor4({core::int i = #C1}) → self::C
+ constructor constructor4({core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor5([core::int? i = #C1]) → self::C
+ constructor constructor5([core::int? i = #C6]) → self::C
: self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:85:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
C.constructor5([int? i]) : this.i = i; // error
^" in i as{TypeError,ForNonNullableByDefault} core::int, super core::Object::•()
;
- constructor constructor6({core::int? i = #C1}) → self::C
+ constructor constructor6({core::int? i = #C6}) → self::C
: self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:87:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
C.constructor6({int? i}) : this.i = i; // error
^" in i as{TypeError,ForNonNullableByDefault} core::int, super core::Object::•()
;
- constructor constructor7({required core::int i = #C1}) → self::C
+ constructor constructor7({required core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- static factory factory3([core::int i = #C1]) → self::C
+ static factory factory3([core::int i = #C6]) → self::C
return new self::C::constructor3(i);
- static factory factory4({core::int i = #C1}) → self::C
+ static factory factory4({core::int i = #C6}) → self::C
return new self::C::constructor4(i: i);
- static factory factory5([core::int? i = #C1]) → self::C
+ static factory factory5([core::int? i = #C6]) → self::C
return new self::C::constructor5(i);
- static factory factory6({core::int? i = #C1}) → self::C
+ static factory factory6({core::int? i = #C6}) → self::C
return new self::C::constructor6(i: i);
- static factory factory7({required core::int i = #C1}) → self::C
+ static factory factory7({required core::int i = #C6}) → self::C
return new self::C::constructor7(i: i);
- static factory factory8([core::int i = #C1]) → self::C
+ static factory factory8([core::int i = #C6]) → self::C
return new self::C::constructor3();
- static factory factory9({core::int i = #C1}) → self::C
+ static factory factory9({core::int i = #C6}) → self::C
return new self::C::constructor4();
- method method3([core::int i = #C1]) → dynamic {}
- method method4({core::int i = #C1}) → dynamic {}
- method method5([core::int? i = #C1]) → dynamic {}
- method method6({core::int? i = #C1}) → dynamic {}
- method method7({required core::int i = #C1}) → dynamic {}
+ method method3([core::int i = #C6]) → dynamic {}
+ method method4({core::int i = #C6}) → dynamic {}
+ method method5([core::int? i = #C6]) → dynamic {}
+ method method6({core::int? i = #C6}) → dynamic {}
+ method method7({required core::int i = #C6}) → dynamic {}
}
static method main() → void {}
constants {
- #C1 = null
+ #C1 = constructor-tearoff self::A::factory3
+ #C2 = constructor-tearoff self::A::factory4
+ #C3 = constructor-tearoff self::A::factory5
+ #C4 = constructor-tearoff self::A::factory6
+ #C5 = constructor-tearoff self::A::factory7
+ #C6 = null
+ #C7 = constructor-tearoff self::C::factory3
+ #C8 = constructor-tearoff self::C::factory4
+ #C9 = constructor-tearoff self::C::factory5
+ #C10 = constructor-tearoff self::C::factory6
+ #C11 = constructor-tearoff self::C::factory7
}
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.strong.transformed.expect
index b672730..0c4486a 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.strong.transformed.expect
@@ -103,121 +103,131 @@
class A extends core::Object {
final field core::int i;
- static final field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
- constructor constructor1([core::int i = #C1]) → self::A
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3, #C4, #C5]/*isLegacy*/;
+ constructor constructor1([core::int i = #C6]) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor2({core::int i = #C1}) → self::A
+ constructor constructor2({core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor3([core::int i = #C1]) → self::A
+ constructor constructor3([core::int i = #C6]) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor4({core::int i = #C1}) → self::A
+ constructor constructor4({core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor5([core::int? i = #C1]) → self::A
+ constructor constructor5([core::int? i = #C6]) → self::A
: self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:19:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
: this.i = i; // error
^" in let core::int? #t1 = i in #t1 == null ?{core::int} #t1 as{TypeError,ForNonNullableByDefault} core::int : #t1{core::int}, super core::Object::•()
;
- constructor constructor6({core::int? i = #C1}) → self::A
+ constructor constructor6({core::int? i = #C6}) → self::A
: self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:22:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
: this.i = i; // error
^" in let core::int? #t2 = i in #t2 == null ?{core::int} #t2 as{TypeError,ForNonNullableByDefault} core::int : #t2{core::int}, super core::Object::•()
;
- constructor constructor7({required core::int i = #C1}) → self::A
+ constructor constructor7({required core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- external constructor constructor8([core::int i = #C1]) → self::A
+ external constructor constructor8([core::int i = #C6]) → self::A
: super core::Object::•()
;
- external constructor constructor9({core::int i = #C1}) → self::A
+ external constructor constructor9({core::int i = #C6}) → self::A
: super core::Object::•()
;
- static factory factory3([core::int i = #C1]) → self::A
+ static factory factory3([core::int i = #C6]) → self::A
return new self::A::constructor3(i);
- static factory factory4({core::int i = #C1}) → self::A
+ static factory factory4({core::int i = #C6}) → self::A
return new self::A::constructor4(i: i);
- static factory factory5([core::int? i = #C1]) → self::A
+ static factory factory5([core::int? i = #C6]) → self::A
return new self::A::constructor5(i);
- static factory factory6({core::int? i = #C1}) → self::A
+ static factory factory6({core::int? i = #C6}) → self::A
return new self::A::constructor6(i: i);
- static factory factory7({required core::int i = #C1}) → self::A
+ static factory factory7({required core::int i = #C6}) → self::A
return new self::A::constructor7(i: i);
- static factory factory8([core::int i = #C1]) → self::A
+ static factory factory8([core::int i = #C6]) → self::A
return new self::A::constructor3();
- static factory factory9({core::int i = #C1}) → self::A
+ static factory factory9({core::int i = #C6}) → self::A
return new self::A::constructor4();
- method method3([core::int i = #C1]) → dynamic {}
- method method4({core::int i = #C1}) → dynamic {}
- method method5([core::int? i = #C1]) → dynamic {}
- method method6({core::int? i = #C1}) → dynamic {}
- method method7({required core::int i = #C1}) → dynamic {}
- external method method8([core::int i = #C1]) → dynamic;
- external method method9({core::int i = #C1}) → dynamic;
+ method method3([core::int i = #C6]) → dynamic {}
+ method method4({core::int i = #C6}) → dynamic {}
+ method method5([core::int? i = #C6]) → dynamic {}
+ method method6({core::int? i = #C6}) → dynamic {}
+ method method7({required core::int i = #C6}) → dynamic {}
+ external method method8([core::int i = #C6]) → dynamic;
+ external method method9({core::int i = #C6}) → dynamic;
}
abstract class B extends core::Object {
field core::int i = 42;
synthetic constructor •() → self::B
: super core::Object::•()
;
- abstract method method3([core::int i = #C1]) → dynamic;
- abstract method method4({core::int i = #C1}) → dynamic;
- abstract method method5([core::int? i = #C1]) → dynamic;
- abstract method method6({core::int? i = #C1}) → dynamic;
- abstract method method7({required core::int i = #C1}) → dynamic;
+ abstract method method3([core::int i = #C6]) → dynamic;
+ abstract method method4({core::int i = #C6}) → dynamic;
+ abstract method method5([core::int? i = #C6]) → dynamic;
+ abstract method method6({core::int? i = #C6}) → dynamic;
+ abstract method method7({required core::int i = #C6}) → dynamic;
}
class C extends core::Object implements self::B {
field core::int i;
- static final field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
- constructor constructor1([core::int i = #C1]) → self::C
+ static final field dynamic _redirecting# = <dynamic>[#C7, #C8, #C9, #C10, #C11]/*isLegacy*/;
+ constructor constructor1([core::int i = #C6]) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor2({core::int i = #C1}) → self::C
+ constructor constructor2({core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor3([core::int i = #C1]) → self::C
+ constructor constructor3([core::int i = #C6]) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor4({core::int i = #C1}) → self::C
+ constructor constructor4({core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor5([core::int? i = #C1]) → self::C
+ constructor constructor5([core::int? i = #C6]) → self::C
: self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:85:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
C.constructor5([int? i]) : this.i = i; // error
^" in let core::int? #t3 = i in #t3 == null ?{core::int} #t3 as{TypeError,ForNonNullableByDefault} core::int : #t3{core::int}, super core::Object::•()
;
- constructor constructor6({core::int? i = #C1}) → self::C
+ constructor constructor6({core::int? i = #C6}) → self::C
: self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:87:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
C.constructor6({int? i}) : this.i = i; // error
^" in let core::int? #t4 = i in #t4 == null ?{core::int} #t4 as{TypeError,ForNonNullableByDefault} core::int : #t4{core::int}, super core::Object::•()
;
- constructor constructor7({required core::int i = #C1}) → self::C
+ constructor constructor7({required core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- static factory factory3([core::int i = #C1]) → self::C
+ static factory factory3([core::int i = #C6]) → self::C
return new self::C::constructor3(i);
- static factory factory4({core::int i = #C1}) → self::C
+ static factory factory4({core::int i = #C6}) → self::C
return new self::C::constructor4(i: i);
- static factory factory5([core::int? i = #C1]) → self::C
+ static factory factory5([core::int? i = #C6]) → self::C
return new self::C::constructor5(i);
- static factory factory6({core::int? i = #C1}) → self::C
+ static factory factory6({core::int? i = #C6}) → self::C
return new self::C::constructor6(i: i);
- static factory factory7({required core::int i = #C1}) → self::C
+ static factory factory7({required core::int i = #C6}) → self::C
return new self::C::constructor7(i: i);
- static factory factory8([core::int i = #C1]) → self::C
+ static factory factory8([core::int i = #C6]) → self::C
return new self::C::constructor3();
- static factory factory9({core::int i = #C1}) → self::C
+ static factory factory9({core::int i = #C6}) → self::C
return new self::C::constructor4();
- method method3([core::int i = #C1]) → dynamic {}
- method method4({core::int i = #C1}) → dynamic {}
- method method5([core::int? i = #C1]) → dynamic {}
- method method6({core::int? i = #C1}) → dynamic {}
- method method7({required core::int i = #C1}) → dynamic {}
+ method method3([core::int i = #C6]) → dynamic {}
+ method method4({core::int i = #C6}) → dynamic {}
+ method method5([core::int? i = #C6]) → dynamic {}
+ method method6({core::int? i = #C6}) → dynamic {}
+ method method7({required core::int i = #C6}) → dynamic {}
}
static method main() → void {}
constants {
- #C1 = null
+ #C1 = constructor-tearoff self::A::factory3
+ #C2 = constructor-tearoff self::A::factory4
+ #C3 = constructor-tearoff self::A::factory5
+ #C4 = constructor-tearoff self::A::factory6
+ #C5 = constructor-tearoff self::A::factory7
+ #C6 = null
+ #C7 = constructor-tearoff self::C::factory3
+ #C8 = constructor-tearoff self::C::factory4
+ #C9 = constructor-tearoff self::C::factory5
+ #C10 = constructor-tearoff self::C::factory6
+ #C11 = constructor-tearoff self::C::factory7
}
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.expect
index 26a075c..b233a23 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.expect
@@ -103,121 +103,131 @@
class A extends core::Object {
final field core::int i;
- static final field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
- constructor constructor1([core::int i = #C1]) → self::A
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3, #C4, #C5]/*isLegacy*/;
+ constructor constructor1([core::int i = #C6]) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor2({core::int i = #C1}) → self::A
+ constructor constructor2({core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor3([core::int i = #C1]) → self::A
+ constructor constructor3([core::int i = #C6]) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor4({core::int i = #C1}) → self::A
+ constructor constructor4({core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor5([core::int? i = #C1]) → self::A
+ constructor constructor5([core::int? i = #C6]) → self::A
: self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:19:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
: this.i = i; // error
^" in i as{TypeError,ForNonNullableByDefault} core::int, super core::Object::•()
;
- constructor constructor6({core::int? i = #C1}) → self::A
+ constructor constructor6({core::int? i = #C6}) → self::A
: self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:22:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
: this.i = i; // error
^" in i as{TypeError,ForNonNullableByDefault} core::int, super core::Object::•()
;
- constructor constructor7({required core::int i = #C1}) → self::A
+ constructor constructor7({required core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- external constructor constructor8([core::int i = #C1]) → self::A
+ external constructor constructor8([core::int i = #C6]) → self::A
: super core::Object::•()
;
- external constructor constructor9({core::int i = #C1}) → self::A
+ external constructor constructor9({core::int i = #C6}) → self::A
: super core::Object::•()
;
- static factory factory3([core::int i = #C1]) → self::A
+ static factory factory3([core::int i = #C6]) → self::A
return new self::A::constructor3(i);
- static factory factory4({core::int i = #C1}) → self::A
+ static factory factory4({core::int i = #C6}) → self::A
return new self::A::constructor4(i: i);
- static factory factory5([core::int? i = #C1]) → self::A
+ static factory factory5([core::int? i = #C6]) → self::A
return new self::A::constructor5(i);
- static factory factory6({core::int? i = #C1}) → self::A
+ static factory factory6({core::int? i = #C6}) → self::A
return new self::A::constructor6(i: i);
- static factory factory7({required core::int i = #C1}) → self::A
+ static factory factory7({required core::int i = #C6}) → self::A
return new self::A::constructor7(i: i);
- static factory factory8([core::int i = #C1]) → self::A
+ static factory factory8([core::int i = #C6]) → self::A
return new self::A::constructor3();
- static factory factory9({core::int i = #C1}) → self::A
+ static factory factory9({core::int i = #C6}) → self::A
return new self::A::constructor4();
- method method3([core::int i = #C1]) → dynamic {}
- method method4({core::int i = #C1}) → dynamic {}
- method method5([core::int? i = #C1]) → dynamic {}
- method method6({core::int? i = #C1}) → dynamic {}
- method method7({required core::int i = #C1}) → dynamic {}
- external method method8([core::int i = #C1]) → dynamic;
- external method method9({core::int i = #C1}) → dynamic;
+ method method3([core::int i = #C6]) → dynamic {}
+ method method4({core::int i = #C6}) → dynamic {}
+ method method5([core::int? i = #C6]) → dynamic {}
+ method method6({core::int? i = #C6}) → dynamic {}
+ method method7({required core::int i = #C6}) → dynamic {}
+ external method method8([core::int i = #C6]) → dynamic;
+ external method method9({core::int i = #C6}) → dynamic;
}
abstract class B extends core::Object {
field core::int i = 42;
synthetic constructor •() → self::B
: super core::Object::•()
;
- abstract method method3([core::int i = #C1]) → dynamic;
- abstract method method4({core::int i = #C1}) → dynamic;
- abstract method method5([core::int? i = #C1]) → dynamic;
- abstract method method6({core::int? i = #C1}) → dynamic;
- abstract method method7({required core::int i = #C1}) → dynamic;
+ abstract method method3([core::int i = #C6]) → dynamic;
+ abstract method method4({core::int i = #C6}) → dynamic;
+ abstract method method5([core::int? i = #C6]) → dynamic;
+ abstract method method6({core::int? i = #C6}) → dynamic;
+ abstract method method7({required core::int i = #C6}) → dynamic;
}
class C extends core::Object implements self::B {
field core::int i;
- static final field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
- constructor constructor1([core::int i = #C1]) → self::C
+ static final field dynamic _redirecting# = <dynamic>[#C7, #C8, #C9, #C10, #C11]/*isLegacy*/;
+ constructor constructor1([core::int i = #C6]) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor2({core::int i = #C1}) → self::C
+ constructor constructor2({core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor3([core::int i = #C1]) → self::C
+ constructor constructor3([core::int i = #C6]) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor4({core::int i = #C1}) → self::C
+ constructor constructor4({core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor5([core::int? i = #C1]) → self::C
+ constructor constructor5([core::int? i = #C6]) → self::C
: self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:85:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
C.constructor5([int? i]) : this.i = i; // error
^" in i as{TypeError,ForNonNullableByDefault} core::int, super core::Object::•()
;
- constructor constructor6({core::int? i = #C1}) → self::C
+ constructor constructor6({core::int? i = #C6}) → self::C
: self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:87:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
C.constructor6({int? i}) : this.i = i; // error
^" in i as{TypeError,ForNonNullableByDefault} core::int, super core::Object::•()
;
- constructor constructor7({required core::int i = #C1}) → self::C
+ constructor constructor7({required core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- static factory factory3([core::int i = #C1]) → self::C
+ static factory factory3([core::int i = #C6]) → self::C
return new self::C::constructor3(i);
- static factory factory4({core::int i = #C1}) → self::C
+ static factory factory4({core::int i = #C6}) → self::C
return new self::C::constructor4(i: i);
- static factory factory5([core::int? i = #C1]) → self::C
+ static factory factory5([core::int? i = #C6]) → self::C
return new self::C::constructor5(i);
- static factory factory6({core::int? i = #C1}) → self::C
+ static factory factory6({core::int? i = #C6}) → self::C
return new self::C::constructor6(i: i);
- static factory factory7({required core::int i = #C1}) → self::C
+ static factory factory7({required core::int i = #C6}) → self::C
return new self::C::constructor7(i: i);
- static factory factory8([core::int i = #C1]) → self::C
+ static factory factory8([core::int i = #C6]) → self::C
return new self::C::constructor3();
- static factory factory9({core::int i = #C1}) → self::C
+ static factory factory9({core::int i = #C6}) → self::C
return new self::C::constructor4();
- method method3([core::int i = #C1]) → dynamic {}
- method method4({core::int i = #C1}) → dynamic {}
- method method5([core::int? i = #C1]) → dynamic {}
- method method6({core::int? i = #C1}) → dynamic {}
- method method7({required core::int i = #C1}) → dynamic {}
+ method method3([core::int i = #C6]) → dynamic {}
+ method method4({core::int i = #C6}) → dynamic {}
+ method method5([core::int? i = #C6]) → dynamic {}
+ method method6({core::int? i = #C6}) → dynamic {}
+ method method7({required core::int i = #C6}) → dynamic {}
}
static method main() → void {}
constants {
- #C1 = null
+ #C1 = constructor-tearoff self::A::factory3
+ #C2 = constructor-tearoff self::A::factory4
+ #C3 = constructor-tearoff self::A::factory5
+ #C4 = constructor-tearoff self::A::factory6
+ #C5 = constructor-tearoff self::A::factory7
+ #C6 = null
+ #C7 = constructor-tearoff self::C::factory3
+ #C8 = constructor-tearoff self::C::factory4
+ #C9 = constructor-tearoff self::C::factory5
+ #C10 = constructor-tearoff self::C::factory6
+ #C11 = constructor-tearoff self::C::factory7
}
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect
index 0040b41..48dab81 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect
@@ -187,3 +187,17 @@
}
static method main() → void
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:5:7 -> ConstructorTearOffConstant(A.factory3)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:5:7 -> ConstructorTearOffConstant(A.factory4)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:5:7 -> ConstructorTearOffConstant(A.factory5)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:5:7 -> ConstructorTearOffConstant(A.factory6)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:5:7 -> ConstructorTearOffConstant(A.factory7)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:74:7 -> ConstructorTearOffConstant(C.factory3)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:74:7 -> ConstructorTearOffConstant(C.factory4)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:74:7 -> ConstructorTearOffConstant(C.factory5)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:74:7 -> ConstructorTearOffConstant(C.factory6)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42362.dart:74:7 -> ConstructorTearOffConstant(C.factory7)
+Extra constant evaluation: evaluated: 32, effectively constant: 10
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect
index 94f4fab..8ee747f 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect
@@ -103,121 +103,131 @@
class A extends core::Object {
final field core::int i;
- static final field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
- constructor constructor1([core::int i = #C1]) → self::A
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3, #C4, #C5]/*isLegacy*/;
+ constructor constructor1([core::int i = #C6]) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor2({core::int i = #C1}) → self::A
+ constructor constructor2({core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor3([core::int i = #C1]) → self::A
+ constructor constructor3([core::int i = #C6]) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor4({core::int i = #C1}) → self::A
+ constructor constructor4({core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- constructor constructor5([core::int? i = #C1]) → self::A
+ constructor constructor5([core::int? i = #C6]) → self::A
: self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:19:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
: this.i = i; // error
^" in i, super core::Object::•()
;
- constructor constructor6({core::int? i = #C1}) → self::A
+ constructor constructor6({core::int? i = #C6}) → self::A
: self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:22:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
: this.i = i; // error
^" in i, super core::Object::•()
;
- constructor constructor7({required core::int i = #C1}) → self::A
+ constructor constructor7({required core::int i = #C6}) → self::A
: self::A::i = i, super core::Object::•()
;
- external constructor constructor8([core::int i = #C1]) → self::A
+ external constructor constructor8([core::int i = #C6]) → self::A
: super core::Object::•()
;
- external constructor constructor9({core::int i = #C1}) → self::A
+ external constructor constructor9({core::int i = #C6}) → self::A
: super core::Object::•()
;
- static factory factory3([core::int i = #C1]) → self::A
+ static factory factory3([core::int i = #C6]) → self::A
return new self::A::constructor3(i);
- static factory factory4({core::int i = #C1}) → self::A
+ static factory factory4({core::int i = #C6}) → self::A
return new self::A::constructor4(i: i);
- static factory factory5([core::int? i = #C1]) → self::A
+ static factory factory5([core::int? i = #C6]) → self::A
return new self::A::constructor5(i);
- static factory factory6({core::int? i = #C1}) → self::A
+ static factory factory6({core::int? i = #C6}) → self::A
return new self::A::constructor6(i: i);
- static factory factory7({required core::int i = #C1}) → self::A
+ static factory factory7({required core::int i = #C6}) → self::A
return new self::A::constructor7(i: i);
- static factory factory8([core::int i = #C1]) → self::A
+ static factory factory8([core::int i = #C6]) → self::A
return new self::A::constructor3();
- static factory factory9({core::int i = #C1}) → self::A
+ static factory factory9({core::int i = #C6}) → self::A
return new self::A::constructor4();
- method method3([core::int i = #C1]) → dynamic {}
- method method4({core::int i = #C1}) → dynamic {}
- method method5([core::int? i = #C1]) → dynamic {}
- method method6({core::int? i = #C1}) → dynamic {}
- method method7({required core::int i = #C1}) → dynamic {}
- external method method8([core::int i = #C1]) → dynamic;
- external method method9({core::int i = #C1}) → dynamic;
+ method method3([core::int i = #C6]) → dynamic {}
+ method method4({core::int i = #C6}) → dynamic {}
+ method method5([core::int? i = #C6]) → dynamic {}
+ method method6({core::int? i = #C6}) → dynamic {}
+ method method7({required core::int i = #C6}) → dynamic {}
+ external method method8([core::int i = #C6]) → dynamic;
+ external method method9({core::int i = #C6}) → dynamic;
}
abstract class B extends core::Object {
field core::int i = 42;
synthetic constructor •() → self::B
: super core::Object::•()
;
- abstract method method3([core::int i = #C1]) → dynamic;
- abstract method method4({core::int i = #C1}) → dynamic;
- abstract method method5([core::int? i = #C1]) → dynamic;
- abstract method method6({core::int? i = #C1}) → dynamic;
- abstract method method7({required core::int i = #C1}) → dynamic;
+ abstract method method3([core::int i = #C6]) → dynamic;
+ abstract method method4({core::int i = #C6}) → dynamic;
+ abstract method method5([core::int? i = #C6]) → dynamic;
+ abstract method method6({core::int? i = #C6}) → dynamic;
+ abstract method method7({required core::int i = #C6}) → dynamic;
}
class C extends core::Object implements self::B {
field core::int i;
- static final field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
- constructor constructor1([core::int i = #C1]) → self::C
+ static final field dynamic _redirecting# = <dynamic>[#C7, #C8, #C9, #C10, #C11]/*isLegacy*/;
+ constructor constructor1([core::int i = #C6]) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor2({core::int i = #C1}) → self::C
+ constructor constructor2({core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor3([core::int i = #C1]) → self::C
+ constructor constructor3([core::int i = #C6]) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor4({core::int i = #C1}) → self::C
+ constructor constructor4({core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- constructor constructor5([core::int? i = #C1]) → self::C
+ constructor constructor5([core::int? i = #C6]) → self::C
: self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:85:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
C.constructor5([int? i]) : this.i = i; // error
^" in i, super core::Object::•()
;
- constructor constructor6({core::int? i = #C1}) → self::C
+ constructor constructor6({core::int? i = #C6}) → self::C
: self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:87:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't.
C.constructor6({int? i}) : this.i = i; // error
^" in i, super core::Object::•()
;
- constructor constructor7({required core::int i = #C1}) → self::C
+ constructor constructor7({required core::int i = #C6}) → self::C
: self::C::i = i, super core::Object::•()
;
- static factory factory3([core::int i = #C1]) → self::C
+ static factory factory3([core::int i = #C6]) → self::C
return new self::C::constructor3(i);
- static factory factory4({core::int i = #C1}) → self::C
+ static factory factory4({core::int i = #C6}) → self::C
return new self::C::constructor4(i: i);
- static factory factory5([core::int? i = #C1]) → self::C
+ static factory factory5([core::int? i = #C6]) → self::C
return new self::C::constructor5(i);
- static factory factory6({core::int? i = #C1}) → self::C
+ static factory factory6({core::int? i = #C6}) → self::C
return new self::C::constructor6(i: i);
- static factory factory7({required core::int i = #C1}) → self::C
+ static factory factory7({required core::int i = #C6}) → self::C
return new self::C::constructor7(i: i);
- static factory factory8([core::int i = #C1]) → self::C
+ static factory factory8([core::int i = #C6]) → self::C
return new self::C::constructor3();
- static factory factory9({core::int i = #C1}) → self::C
+ static factory factory9({core::int i = #C6}) → self::C
return new self::C::constructor4();
- method method3([core::int i = #C1]) → dynamic {}
- method method4({core::int i = #C1}) → dynamic {}
- method method5([core::int? i = #C1]) → dynamic {}
- method method6({core::int? i = #C1}) → dynamic {}
- method method7({required core::int i = #C1}) → dynamic {}
+ method method3([core::int i = #C6]) → dynamic {}
+ method method4({core::int i = #C6}) → dynamic {}
+ method method5([core::int? i = #C6]) → dynamic {}
+ method method6({core::int? i = #C6}) → dynamic {}
+ method method7({required core::int i = #C6}) → dynamic {}
}
static method main() → void {}
constants {
- #C1 = null
+ #C1 = constructor-tearoff self::A::factory3
+ #C2 = constructor-tearoff self::A::factory4
+ #C3 = constructor-tearoff self::A::factory5
+ #C4 = constructor-tearoff self::A::factory6
+ #C5 = constructor-tearoff self::A::factory7
+ #C6 = null
+ #C7 = constructor-tearoff self::C::factory3
+ #C8 = constructor-tearoff self::C::factory4
+ #C9 = constructor-tearoff self::C::factory5
+ #C10 = constructor-tearoff self::C::factory6
+ #C11 = constructor-tearoff self::C::factory7
}
diff --git a/pkg/front_end/testcases/nnbd/issue42433.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42433.dart.strong.expect
index 66fe67c..276acf3 100644
--- a/pkg/front_end/testcases/nnbd/issue42433.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42433.dart.strong.expect
@@ -15,5 +15,5 @@
constants {
#C1 = static-tearoff self::checkme
- #C2 = instantiation self::checkme <self::X>
+ #C2 = instantiation #C1 <self::X>
}
diff --git a/pkg/front_end/testcases/nnbd/issue42433.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42433.dart.strong.transformed.expect
index 66fe67c..276acf3 100644
--- a/pkg/front_end/testcases/nnbd/issue42433.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42433.dart.strong.transformed.expect
@@ -15,5 +15,5 @@
constants {
#C1 = static-tearoff self::checkme
- #C2 = instantiation self::checkme <self::X>
+ #C2 = instantiation #C1 <self::X>
}
diff --git a/pkg/front_end/testcases/nnbd/issue42433.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42433.dart.weak.expect
index 17ca8c8..b570b8b 100644
--- a/pkg/front_end/testcases/nnbd/issue42433.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42433.dart.weak.expect
@@ -15,5 +15,5 @@
constants {
#C1 = static-tearoff self::checkme
- #C2 = instantiation self::checkme <self::X*>
+ #C2 = instantiation #C1 <self::X*>
}
diff --git a/pkg/front_end/testcases/nnbd/issue42433.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42433.dart.weak.transformed.expect
index 17ca8c8..b570b8b 100644
--- a/pkg/front_end/testcases/nnbd/issue42433.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42433.dart.weak.transformed.expect
@@ -15,5 +15,5 @@
constants {
#C1 = static-tearoff self::checkme
- #C2 = instantiation self::checkme <self::X*>
+ #C2 = instantiation #C1 <self::X*>
}
diff --git a/pkg/front_end/testcases/nnbd/issue42844_1.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42844_1.dart.strong.expect
index 0c168d7..2637180 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_1.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_1.dart.strong.expect
@@ -11,7 +11,7 @@
class C extends core::Object {
field Never n = null;
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •(Never n) → self::C
return new self::D::•(n);
}
@@ -22,3 +22,7 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue42844_1.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42844_1.dart.strong.transformed.expect
index 0c168d7..2637180 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_1.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_1.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
class C extends core::Object {
field Never n = null;
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •(Never n) → self::C
return new self::D::•(n);
}
@@ -22,3 +22,7 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.expect
index 0c168d7..2637180 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.expect
@@ -11,7 +11,7 @@
class C extends core::Object {
field Never n = null;
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •(Never n) → self::C
return new self::D::•(n);
}
@@ -22,3 +22,7 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.outline.expect
index 18f72ef..fd5c0b5 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.outline.expect
@@ -15,3 +15,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42844_1.dart:5:7 -> ConstructorTearOffConstant(C.)
+Extra constant evaluation: evaluated: 4, effectively constant: 1
diff --git a/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.transformed.expect
index 0c168d7..2637180 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_1.dart.weak.transformed.expect
@@ -11,7 +11,7 @@
class C extends core::Object {
field Never n = null;
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •(Never n) → self::C
return new self::D::•(n);
}
@@ -22,3 +22,7 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue42844_2.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42844_2.dart.strong.expect
index bd950c6..d84e75e 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_2.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_2.dart.strong.expect
@@ -12,7 +12,7 @@
class C extends core::Object {
final field dynamic n = null;
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •(dynamic n) → self::C
return new self::D::•(n);
}
@@ -23,3 +23,7 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue42844_2.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42844_2.dart.strong.transformed.expect
index bd950c6..d84e75e 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_2.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
class C extends core::Object {
final field dynamic n = null;
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •(dynamic n) → self::C
return new self::D::•(n);
}
@@ -23,3 +23,7 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.expect
index bd950c6..d84e75e 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.expect
@@ -12,7 +12,7 @@
class C extends core::Object {
final field dynamic n = null;
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •(dynamic n) → self::C
return new self::D::•(n);
}
@@ -23,3 +23,7 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.outline.expect
index 53f7e37..967bc12 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.outline.expect
@@ -15,3 +15,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue42844_2.dart:5:7 -> ConstructorTearOffConstant(C.)
+Extra constant evaluation: evaluated: 4, effectively constant: 1
diff --git a/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.transformed.expect
index bd950c6..d84e75e 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_2.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
class C extends core::Object {
final field dynamic n = null;
- static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •(dynamic n) → self::C
return new self::D::•(n);
}
@@ -23,3 +23,7 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue43211.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43211.dart.strong.expect
index a02c4ef..46f6782 100644
--- a/pkg/front_end/testcases/nnbd/issue43211.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43211.dart.strong.expect
@@ -221,7 +221,7 @@
}
}
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor internal(dynamic _) → self::C
: super core::Object::•() {
self::A<self::A<Null>>? a;
@@ -259,3 +259,7 @@
self::A<Null> a = new self::A::•<Null>();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::redirect
+}
diff --git a/pkg/front_end/testcases/nnbd/issue43211.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43211.dart.strong.transformed.expect
index a02c4ef..46f6782 100644
--- a/pkg/front_end/testcases/nnbd/issue43211.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43211.dart.strong.transformed.expect
@@ -221,7 +221,7 @@
}
}
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor internal(dynamic _) → self::C
: super core::Object::•() {
self::A<self::A<Null>>? a;
@@ -259,3 +259,7 @@
self::A<Null> a = new self::A::•<Null>();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::redirect
+}
diff --git a/pkg/front_end/testcases/nnbd/issue43211.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43211.dart.weak.expect
index a02c4ef..46f6782 100644
--- a/pkg/front_end/testcases/nnbd/issue43211.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43211.dart.weak.expect
@@ -221,7 +221,7 @@
}
}
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor internal(dynamic _) → self::C
: super core::Object::•() {
self::A<self::A<Null>>? a;
@@ -259,3 +259,7 @@
self::A<Null> a = new self::A::•<Null>();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::redirect
+}
diff --git a/pkg/front_end/testcases/nnbd/issue43211.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue43211.dart.weak.outline.expect
index 39eaec6..ffca4b4 100644
--- a/pkg/front_end/testcases/nnbd/issue43211.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue43211.dart.weak.outline.expect
@@ -149,3 +149,8 @@
;
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue43211.dart:35:7 -> ConstructorTearOffConstant(C.redirect)
+Extra constant evaluation: evaluated: 14, effectively constant: 1
diff --git a/pkg/front_end/testcases/nnbd/issue43211.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43211.dart.weak.transformed.expect
index a02c4ef..46f6782 100644
--- a/pkg/front_end/testcases/nnbd/issue43211.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43211.dart.weak.transformed.expect
@@ -221,7 +221,7 @@
}
}
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor internal(dynamic _) → self::C
: super core::Object::•() {
self::A<self::A<Null>>? a;
@@ -259,3 +259,7 @@
self::A<Null> a = new self::A::•<Null>();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C::redirect
+}
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.strong.expect
index fd4ab1f..6fe128e 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.strong.expect
@@ -16,14 +16,14 @@
import "dart:core" as core;
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
- constructor gen({core::int i = #C1}) → self::C
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor gen({core::int i = #C2}) → self::C
: super core::Object::•()
;
- static factory fact({core::int i = #C1}) → self::C {
+ static factory fact({core::int i = #C2}) → self::C {
return new self::C::gen();
}
- static factory redirect({core::int i = #C1}) → self::C
+ static factory redirect({core::int i = #C2}) → self::C
return new self::C::gen(i: i);
}
class D extends core::Object {
@@ -34,5 +34,6 @@
static method main() → dynamic {}
constants {
- #C1 = null
+ #C1 = constructor-tearoff self::C::redirect
+ #C2 = null
}
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.strong.transformed.expect
index fd4ab1f..6fe128e 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.strong.transformed.expect
@@ -16,14 +16,14 @@
import "dart:core" as core;
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
- constructor gen({core::int i = #C1}) → self::C
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor gen({core::int i = #C2}) → self::C
: super core::Object::•()
;
- static factory fact({core::int i = #C1}) → self::C {
+ static factory fact({core::int i = #C2}) → self::C {
return new self::C::gen();
}
- static factory redirect({core::int i = #C1}) → self::C
+ static factory redirect({core::int i = #C2}) → self::C
return new self::C::gen(i: i);
}
class D extends core::Object {
@@ -34,5 +34,6 @@
static method main() → dynamic {}
constants {
- #C1 = null
+ #C1 = constructor-tearoff self::C::redirect
+ #C2 = null
}
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.expect
index fd4ab1f..6fe128e 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.expect
@@ -16,14 +16,14 @@
import "dart:core" as core;
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
- constructor gen({core::int i = #C1}) → self::C
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor gen({core::int i = #C2}) → self::C
: super core::Object::•()
;
- static factory fact({core::int i = #C1}) → self::C {
+ static factory fact({core::int i = #C2}) → self::C {
return new self::C::gen();
}
- static factory redirect({core::int i = #C1}) → self::C
+ static factory redirect({core::int i = #C2}) → self::C
return new self::C::gen(i: i);
}
class D extends core::Object {
@@ -34,5 +34,6 @@
static method main() → dynamic {}
constants {
- #C1 = null
+ #C1 = constructor-tearoff self::C::redirect
+ #C2 = null
}
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect
index bff1a1e..110f141 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect
@@ -30,3 +30,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue43276.dart:5:7 -> ConstructorTearOffConstant(C.redirect)
+Extra constant evaluation: evaluated: 4, effectively constant: 1
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.transformed.expect
index fd4ab1f..6fe128e 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.transformed.expect
@@ -16,14 +16,14 @@
import "dart:core" as core;
class C extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
- constructor gen({core::int i = #C1}) → self::C
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+ constructor gen({core::int i = #C2}) → self::C
: super core::Object::•()
;
- static factory fact({core::int i = #C1}) → self::C {
+ static factory fact({core::int i = #C2}) → self::C {
return new self::C::gen();
}
- static factory redirect({core::int i = #C1}) → self::C
+ static factory redirect({core::int i = #C2}) → self::C
return new self::C::gen(i: i);
}
class D extends core::Object {
@@ -34,5 +34,6 @@
static method main() → dynamic {}
constants {
- #C1 = null
+ #C1 = constructor-tearoff self::C::redirect
+ #C2 = null
}
diff --git a/pkg/front_end/testcases/nnbd/issue43918.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43918.dart.strong.expect
index e038284..9882343 100644
--- a/pkg/front_end/testcases/nnbd/issue43918.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43918.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
return new self::_A::•<self::A::•::T%>(value);
}
@@ -13,7 +13,7 @@
;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
return new self::_B::•<self::B::•::T%>(value);
}
@@ -23,3 +23,8 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue43918.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43918.dart.strong.transformed.expect
index e038284..9882343 100644
--- a/pkg/front_end/testcases/nnbd/issue43918.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43918.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
return new self::_A::•<self::A::•::T%>(value);
}
@@ -13,7 +13,7 @@
;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
return new self::_B::•<self::B::•::T%>(value);
}
@@ -23,3 +23,8 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue43918.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43918.dart.weak.expect
index e038284..9882343 100644
--- a/pkg/front_end/testcases/nnbd/issue43918.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43918.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
return new self::_A::•<self::A::•::T%>(value);
}
@@ -13,7 +13,7 @@
;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
return new self::_B::•<self::B::•::T%>(value);
}
@@ -23,3 +23,8 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/nnbd/issue43918.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue43918.dart.weak.outline.expect
index a50e08b..59597d6 100644
--- a/pkg/front_end/testcases/nnbd/issue43918.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue43918.dart.weak.outline.expect
@@ -22,3 +22,9 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue43918.dart:5:16 -> ConstructorTearOffConstant(A.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue43918.dart:13:16 -> ConstructorTearOffConstant(B.)
+Extra constant evaluation: evaluated: 8, effectively constant: 2
diff --git a/pkg/front_end/testcases/nnbd/issue43918.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43918.dart.weak.transformed.expect
index e038284..9882343 100644
--- a/pkg/front_end/testcases/nnbd/issue43918.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43918.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class A<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
return new self::_A::•<self::A::•::T%>(value);
}
@@ -13,7 +13,7 @@
;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
return new self::_B::•<self::B::•::T%>(value);
}
@@ -23,3 +23,8 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::B::•
+}
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.strong.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.strong.expect
index 2640926..ba12861 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.strong.expect
@@ -62,7 +62,7 @@
method hest(core::num value) → void {}
}
class C1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •() → self::C1
return invalid-expression "pkg/front_end/testcases/nnbd/override_checks.dart:20:18: Error: The type 'int?' doesn't extend 'int'.
Try using a different type as argument.
@@ -75,7 +75,7 @@
;
}
class D extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor foo(core::num x) → self::D
: super core::Object::•()
;
@@ -86,3 +86,8 @@
^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C1::•
+ #C2 = constructor-tearoff self::D::bar
+}
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.strong.transformed.expect
index 2640926..ba12861 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.strong.transformed.expect
@@ -62,7 +62,7 @@
method hest(core::num value) → void {}
}
class C1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •() → self::C1
return invalid-expression "pkg/front_end/testcases/nnbd/override_checks.dart:20:18: Error: The type 'int?' doesn't extend 'int'.
Try using a different type as argument.
@@ -75,7 +75,7 @@
;
}
class D extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor foo(core::num x) → self::D
: super core::Object::•()
;
@@ -86,3 +86,8 @@
^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C1::•
+ #C2 = constructor-tearoff self::D::bar
+}
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.expect
index 2640926..ba12861 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.expect
@@ -62,7 +62,7 @@
method hest(core::num value) → void {}
}
class C1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •() → self::C1
return invalid-expression "pkg/front_end/testcases/nnbd/override_checks.dart:20:18: Error: The type 'int?' doesn't extend 'int'.
Try using a different type as argument.
@@ -75,7 +75,7 @@
;
}
class D extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor foo(core::num x) → self::D
: super core::Object::•()
;
@@ -86,3 +86,8 @@
^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C1::•
+ #C2 = constructor-tearoff self::D::bar
+}
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.outline.expect
index 1f2f60e..115a6f4 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.outline.expect
@@ -85,3 +85,9 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///override_checks.dart:19:7 -> ConstructorTearOffConstant(C1.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///override_checks.dart:25:7 -> ConstructorTearOffConstant(D.bar)
+Extra constant evaluation: evaluated: 4, effectively constant: 2
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.transformed.expect
index 2640926..ba12861 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.transformed.expect
@@ -62,7 +62,7 @@
method hest(core::num value) → void {}
}
class C1 extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
static factory •() → self::C1
return invalid-expression "pkg/front_end/testcases/nnbd/override_checks.dart:20:18: Error: The type 'int?' doesn't extend 'int'.
Try using a different type as argument.
@@ -75,7 +75,7 @@
;
}
class D extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor foo(core::num x) → self::D
: super core::Object::•()
;
@@ -86,3 +86,8 @@
^";
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::C1::•
+ #C2 = constructor-tearoff self::D::bar
+}
diff --git a/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.strong.expect b/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.strong.expect
index 3fe3e9d..7948117 100644
--- a/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.strong.expect
@@ -226,7 +226,7 @@
constants {
#C1 = 3
#C2 = static-tearoff self::idFunction
- #C3 = instantiation self::idFunction <core::int>
+ #C3 = instantiation #C2 <core::int>
#C4 = 0
#C5 = self::Class<dynamic> {field:#C4}
#C6 = self::Class<core::num> {field:#C4}
diff --git a/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.strong.transformed.expect
index 3fe3e9d..7948117 100644
--- a/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.strong.transformed.expect
@@ -226,7 +226,7 @@
constants {
#C1 = 3
#C2 = static-tearoff self::idFunction
- #C3 = instantiation self::idFunction <core::int>
+ #C3 = instantiation #C2 <core::int>
#C4 = 0
#C5 = self::Class<dynamic> {field:#C4}
#C6 = self::Class<core::num> {field:#C4}
diff --git a/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.weak.expect b/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.weak.expect
index c410aaa..752b8a6 100644
--- a/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.weak.expect
@@ -217,7 +217,7 @@
constants {
#C1 = 3
#C2 = static-tearoff self::idFunction
- #C3 = instantiation self::idFunction <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = 0
#C5 = self::Class<dynamic> {field:#C4}
#C6 = self::Class<core::num*> {field:#C4}
diff --git a/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.weak.transformed.expect
index c410aaa..752b8a6 100644
--- a/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_constant_type_as.dart.weak.transformed.expect
@@ -217,7 +217,7 @@
constants {
#C1 = 3
#C2 = static-tearoff self::idFunction
- #C3 = instantiation self::idFunction <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = 0
#C5 = self::Class<dynamic> {field:#C4}
#C6 = self::Class<core::num*> {field:#C4}
diff --git a/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.strong.expect b/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.strong.expect
index 7045d9b..fb57de9 100644
--- a/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.strong.expect
@@ -81,7 +81,7 @@
constants {
#C1 = 3
#C2 = static-tearoff self::idFunction
- #C3 = instantiation self::idFunction <core::int>
+ #C3 = instantiation #C2 <core::int>
#C4 = true
#C5 = self::Class<dynamic> {field:#C4}
#C6 = self::Class<core::num> {field:#C4}
diff --git a/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.strong.transformed.expect
index 7045d9b..fb57de9 100644
--- a/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.strong.transformed.expect
@@ -81,7 +81,7 @@
constants {
#C1 = 3
#C2 = static-tearoff self::idFunction
- #C3 = instantiation self::idFunction <core::int>
+ #C3 = instantiation #C2 <core::int>
#C4 = true
#C5 = self::Class<dynamic> {field:#C4}
#C6 = self::Class<core::num> {field:#C4}
diff --git a/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.weak.expect b/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.weak.expect
index c7c169f..3b6c8a8 100644
--- a/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.weak.expect
@@ -81,7 +81,7 @@
constants {
#C1 = 3
#C2 = static-tearoff self::idFunction
- #C3 = instantiation self::idFunction <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = true
#C5 = self::Class<dynamic> {field:#C4}
#C6 = self::Class<core::num*> {field:#C4}
diff --git a/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.weak.transformed.expect
index c7c169f..3b6c8a8 100644
--- a/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_constant_type_is.dart.weak.transformed.expect
@@ -81,7 +81,7 @@
constants {
#C1 = 3
#C2 = static-tearoff self::idFunction
- #C3 = instantiation self::idFunction <core::int*>
+ #C3 = instantiation #C2 <core::int*>
#C4 = true
#C5 = self::Class<dynamic> {field:#C4}
#C6 = self::Class<core::num*> {field:#C4}
diff --git a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
index b504950..f72fa11 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
@@ -82,7 +82,7 @@
constants {
#C1 = static-tearoff con::id
- #C2 = instantiation con::id <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = 0
#C4 = con::Class<core::int*> {field:#C3}
#C5 = <core::int*>[#C3]
diff --git a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
index b504950..f72fa11 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
@@ -82,7 +82,7 @@
constants {
#C1 = static-tearoff con::id
- #C2 = instantiation con::id <core::int*>
+ #C2 = instantiation #C1 <core::int*>
#C3 = 0
#C4 = con::Class<core::int*> {field:#C3}
#C5 = <core::int*>[#C3]
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.expect
index 9f5ab6a..ffdea68 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class Class extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::Class
: super core::Object::•()
;
@@ -11,3 +11,7 @@
return new self::Class::•();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::Class::redirect
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.outline.expect
index 2dad0b1..96a3670 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.outline.expect
@@ -11,3 +11,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory.dart:8:7 -> ConstructorTearOffConstant(Class.redirect)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.transformed.expect
index 9f5ab6a..ffdea68 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/redirecting_factory.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class Class extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Class::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor •() → self::Class
: super core::Object::•()
;
@@ -11,3 +11,7 @@
return new self::Class::•();
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::Class::redirect
+}
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.expect
index 34cee4f..e605bd9 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.expect
@@ -34,7 +34,7 @@
import "dart:core" as core;
class Class1<T extends core::Object?> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class1::redirect, opt::Class1::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C6, #C7]/*isLegacy*/;
const constructor _() → opt::Class1<opt::Class1::T%>
: super core::Object::•()
;
@@ -46,7 +46,7 @@
return new opt::Class1::_<opt::Class1::fact::T%>();
}
class Class2<T extends core::Object> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class2::redirect, opt::Class2::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8, #C9]/*isLegacy*/;
const constructor _() → opt::Class2<opt::Class2::T>
: super core::Object::•()
;
@@ -58,7 +58,7 @@
return new opt::Class2::_<opt::Class2::fact::T>();
}
class Class3<T extends core::String> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class3::redirect, opt::Class3::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C10, #C11]/*isLegacy*/;
const constructor _() → opt::Class3<opt::Class3::T>
: super core::Object::•()
;
@@ -70,7 +70,7 @@
return new opt::Class3::_<opt::Class3::fact::T>();
}
class Class4<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class4::redirect, opt::Class4::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C12, #C13]/*isLegacy*/;
const constructor _() → opt::Class4<opt::Class4::T%>
: super core::Object::•()
;
@@ -82,7 +82,7 @@
return new opt::Class4::_<opt::Class4::fact::T%>();
}
class Class5<T extends dynamic> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class5::redirect, opt::Class5::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C14, #C15]/*isLegacy*/;
const constructor _() → opt::Class5<opt::Class5::T%>
: super core::Object::•()
;
@@ -96,7 +96,7 @@
static method testOptIn() → dynamic {
new opt::Class1::_<core::Object?>();
new opt::Class1::_<core::Object?>();
- #C6;
+ #C16;
opt::Class1::fact<core::Object?>();
new opt::Class2::_<core::Object>();
new opt::Class2::_<core::Object>();
@@ -122,7 +122,17 @@
#C3 = opt::Class3<core::String*> {}
#C4 = opt::Class4<dynamic> {}
#C5 = opt::Class5<dynamic> {}
- #C6 = opt::Class1<core::Object?> {}
+ #C6 = constructor-tearoff opt::Class1::redirect
+ #C7 = constructor-tearoff opt::Class1::constRedirect
+ #C8 = constructor-tearoff opt::Class2::redirect
+ #C9 = constructor-tearoff opt::Class2::constRedirect
+ #C10 = constructor-tearoff opt::Class3::redirect
+ #C11 = constructor-tearoff opt::Class3::constRedirect
+ #C12 = constructor-tearoff opt::Class4::redirect
+ #C13 = constructor-tearoff opt::Class4::constRedirect
+ #C14 = constructor-tearoff opt::Class5::redirect
+ #C15 = constructor-tearoff opt::Class5::constRedirect
+ #C16 = opt::Class1<core::Object?> {}
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.outline.expect
index 958ab4c..e1a0b96 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.outline.expect
@@ -72,3 +72,17 @@
}
static method testOptIn() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:5:7 -> ConstructorTearOffConstant(Class1.redirect)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:5:7 -> ConstructorTearOffConstant(Class1.constRedirect)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:13:7 -> ConstructorTearOffConstant(Class2.redirect)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:13:7 -> ConstructorTearOffConstant(Class2.constRedirect)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:21:7 -> ConstructorTearOffConstant(Class3.redirect)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:21:7 -> ConstructorTearOffConstant(Class3.constRedirect)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:29:7 -> ConstructorTearOffConstant(Class4.redirect)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:29:7 -> ConstructorTearOffConstant(Class4.constRedirect)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:37:7 -> ConstructorTearOffConstant(Class5.redirect)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:37:7 -> ConstructorTearOffConstant(Class5.constRedirect)
+Extra constant evaluation: evaluated: 25, effectively constant: 10
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.transformed.expect
index 34cee4f..e605bd9 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.transformed.expect
@@ -34,7 +34,7 @@
import "dart:core" as core;
class Class1<T extends core::Object?> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class1::redirect, opt::Class1::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C6, #C7]/*isLegacy*/;
const constructor _() → opt::Class1<opt::Class1::T%>
: super core::Object::•()
;
@@ -46,7 +46,7 @@
return new opt::Class1::_<opt::Class1::fact::T%>();
}
class Class2<T extends core::Object> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class2::redirect, opt::Class2::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8, #C9]/*isLegacy*/;
const constructor _() → opt::Class2<opt::Class2::T>
: super core::Object::•()
;
@@ -58,7 +58,7 @@
return new opt::Class2::_<opt::Class2::fact::T>();
}
class Class3<T extends core::String> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class3::redirect, opt::Class3::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C10, #C11]/*isLegacy*/;
const constructor _() → opt::Class3<opt::Class3::T>
: super core::Object::•()
;
@@ -70,7 +70,7 @@
return new opt::Class3::_<opt::Class3::fact::T>();
}
class Class4<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class4::redirect, opt::Class4::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C12, #C13]/*isLegacy*/;
const constructor _() → opt::Class4<opt::Class4::T%>
: super core::Object::•()
;
@@ -82,7 +82,7 @@
return new opt::Class4::_<opt::Class4::fact::T%>();
}
class Class5<T extends dynamic> extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::Class5::redirect, opt::Class5::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C14, #C15]/*isLegacy*/;
const constructor _() → opt::Class5<opt::Class5::T%>
: super core::Object::•()
;
@@ -96,7 +96,7 @@
static method testOptIn() → dynamic {
new opt::Class1::_<core::Object?>();
new opt::Class1::_<core::Object?>();
- #C6;
+ #C16;
opt::Class1::fact<core::Object?>();
new opt::Class2::_<core::Object>();
new opt::Class2::_<core::Object>();
@@ -122,7 +122,17 @@
#C3 = opt::Class3<core::String*> {}
#C4 = opt::Class4<dynamic> {}
#C5 = opt::Class5<dynamic> {}
- #C6 = opt::Class1<core::Object?> {}
+ #C6 = constructor-tearoff opt::Class1::redirect
+ #C7 = constructor-tearoff opt::Class1::constRedirect
+ #C8 = constructor-tearoff opt::Class2::redirect
+ #C9 = constructor-tearoff opt::Class2::constRedirect
+ #C10 = constructor-tearoff opt::Class3::redirect
+ #C11 = constructor-tearoff opt::Class3::constRedirect
+ #C12 = constructor-tearoff opt::Class4::redirect
+ #C13 = constructor-tearoff opt::Class4::constRedirect
+ #C14 = constructor-tearoff opt::Class5::redirect
+ #C15 = constructor-tearoff opt::Class5::constRedirect
+ #C16 = opt::Class1<core::Object?> {}
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.expect
index 2cb6f54..342dcae 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.expect
@@ -50,7 +50,7 @@
;
}
class CP<T extends core::Object> extends opt::P<opt::CP::T> /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::CP::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
const constructor _(core::Object token) → opt::CP<opt::CP::T>
: super opt::P::_(token)
;
@@ -63,7 +63,7 @@
;
}
class VP<T extends core::Object> extends opt::P<opt::VP::T> /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::VP::forToken]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
const constructor _(core::Object token, opt::VP::T useValue) → opt::VP<opt::VP::T>
: super opt::P::_(token)
;
@@ -72,7 +72,7 @@
}
class M extends core::Object /*hasConstConstructor*/ {
final field core::List<opt::P<core::Object>> list;
- const constructor •({core::List<opt::P<core::Object>> list = #C7}) → opt::M
+ const constructor •({core::List<opt::P<core::Object>> list = #C9}) → opt::M
: opt::M::list = list, super core::Object::•()
;
}
@@ -84,7 +84,9 @@
#C4 = opt::VP<core::Object*> {token:#C3}
#C5 = <opt::P<core::Object*>*>[#C2, #C4]
#C6 = opt::M {list:#C5}
- #C7 = <opt::P<core::Object*>*>[]
+ #C7 = constructor-tearoff opt::CP::•
+ #C8 = constructor-tearoff opt::VP::forToken
+ #C9 = <opt::P<core::Object*>*>[]
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.outline.expect
index ee92a0d..98b7803 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.outline.expect
@@ -81,5 +81,7 @@
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///main.dart:15:14 -> ListConstant(const <P<Object*>*>[const CP<Object*>{P.token: Class*}, const VP<Object*>{P.token: const XToken{}}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///main.dart:20:11 -> InstanceConstant(const M{M.list: const <P<Object*>*>[const CP<Object*>{P.token: Class*}, const VP<Object*>{P.token: const XToken{}}]})
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:11:7 -> ConstructorTearOffConstant(CP.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///opt_in_lib.dart:21:7 -> ConstructorTearOffConstant(VP.forToken)
Evaluated: ListLiteral @ org-dartlang-testcase:///opt_in_lib.dart:36:24 -> ListConstant(const <P<Object*>*>[])
-Extra constant evaluation: evaluated: 16, effectively constant: 3
+Extra constant evaluation: evaluated: 16, effectively constant: 5
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.transformed.expect
index 2cb6f54..342dcae 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.transformed.expect
@@ -50,7 +50,7 @@
;
}
class CP<T extends core::Object> extends opt::P<opt::CP::T> /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::CP::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C7]/*isLegacy*/;
const constructor _(core::Object token) → opt::CP<opt::CP::T>
: super opt::P::_(token)
;
@@ -63,7 +63,7 @@
;
}
class VP<T extends core::Object> extends opt::P<opt::VP::T> /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[opt::VP::forToken]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C8]/*isLegacy*/;
const constructor _(core::Object token, opt::VP::T useValue) → opt::VP<opt::VP::T>
: super opt::P::_(token)
;
@@ -72,7 +72,7 @@
}
class M extends core::Object /*hasConstConstructor*/ {
final field core::List<opt::P<core::Object>> list;
- const constructor •({core::List<opt::P<core::Object>> list = #C7}) → opt::M
+ const constructor •({core::List<opt::P<core::Object>> list = #C9}) → opt::M
: opt::M::list = list, super core::Object::•()
;
}
@@ -84,7 +84,9 @@
#C4 = opt::VP<core::Object*> {token:#C3}
#C5 = <opt::P<core::Object*>*>[#C2, #C4]
#C6 = opt::M {list:#C5}
- #C7 = <opt::P<core::Object*>*>[]
+ #C7 = constructor-tearoff opt::CP::•
+ #C8 = constructor-tearoff opt::VP::forToken
+ #C9 = <opt::P<core::Object*>*>[]
}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.strong.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.strong.expect
index 3df2a9b..ae8fcc4 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.strong.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.strong.expect
@@ -4,7 +4,7 @@
typedef BAlias = self::B;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•, self::A::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
static factory •() → self::A
return new self::B::•();
static factory named() → self::A
@@ -19,3 +19,8 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::A::named
+}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.strong.transformed.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.strong.transformed.expect
index 3df2a9b..ae8fcc4 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.strong.transformed.expect
@@ -4,7 +4,7 @@
typedef BAlias = self::B;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•, self::A::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
static factory •() → self::A
return new self::B::•();
static factory named() → self::A
@@ -19,3 +19,8 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::A::named
+}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.expect
index 3df2a9b..ae8fcc4 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.expect
@@ -4,7 +4,7 @@
typedef BAlias = self::B;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•, self::A::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
static factory •() → self::A
return new self::B::•();
static factory named() → self::A
@@ -19,3 +19,8 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::A::named
+}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.outline.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.outline.expect
index 978eeea..9cd6482 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.outline.expect
@@ -18,3 +18,9 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue45051.dart:5:7 -> ConstructorTearOffConstant(A.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue45051.dart:5:7 -> ConstructorTearOffConstant(A.named)
+Extra constant evaluation: evaluated: 5, effectively constant: 2
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.transformed.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.transformed.expect
index 3df2a9b..ae8fcc4 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45051.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
typedef BAlias = self::B;
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::•, self::A::named]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
static factory •() → self::A
return new self::B::•();
static factory named() → self::A
@@ -19,3 +19,8 @@
;
}
static method main() → dynamic {}
+
+constants {
+ #C1 = constructor-tearoff self::A::•
+ #C2 = constructor-tearoff self::A::named
+}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.strong.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.strong.expect
index 1d4c9d2..14a187b 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.strong.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.strong.expect
@@ -69,7 +69,7 @@
typedef A<X extends (self::C<X>) → self::C<X> = (self::C<dynamic>) → self::C<dynamic>> = self::C<X>;
typedef B<X extends (self::D<X>) → self::D<X> = (self::D<dynamic>) → self::D<dynamic>> = self::D<X>;
class C<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor foo() → self::C<self::C::X%>
: super core::Object::•() {}
static factory •<X extends core::Object? = dynamic>() → self::C<self::C::•::X%>
@@ -78,7 +78,7 @@
return self::C::•<self::C::bar::X%>();
}
class D<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor •() → self::D<self::D::X%>
: super core::Object::•()
;
@@ -108,3 +108,8 @@
return self::D::foo<self::_#B#foo#tearOff::X>();
static method _#B#bar#tearOff<X extends (self::D<self::_#B#bar#tearOff::X>) → self::D<self::_#B#bar#tearOff::X> = (self::D<dynamic>) → self::D<dynamic>>() → self::D<self::_#B#bar#tearOff::X>
return self::D::bar<self::_#B#bar#tearOff::X>();
+
+constants {
+ #C1 = constructor-tearoff self::C::bar
+ #C2 = constructor-tearoff self::D::bar
+}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.strong.transformed.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.strong.transformed.expect
index 1d4c9d2..14a187b 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.strong.transformed.expect
@@ -69,7 +69,7 @@
typedef A<X extends (self::C<X>) → self::C<X> = (self::C<dynamic>) → self::C<dynamic>> = self::C<X>;
typedef B<X extends (self::D<X>) → self::D<X> = (self::D<dynamic>) → self::D<dynamic>> = self::D<X>;
class C<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor foo() → self::C<self::C::X%>
: super core::Object::•() {}
static factory •<X extends core::Object? = dynamic>() → self::C<self::C::•::X%>
@@ -78,7 +78,7 @@
return self::C::•<self::C::bar::X%>();
}
class D<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor •() → self::D<self::D::X%>
: super core::Object::•()
;
@@ -108,3 +108,8 @@
return self::D::foo<self::_#B#foo#tearOff::X>();
static method _#B#bar#tearOff<X extends (self::D<self::_#B#bar#tearOff::X>) → self::D<self::_#B#bar#tearOff::X> = (self::D<dynamic>) → self::D<dynamic>>() → self::D<self::_#B#bar#tearOff::X>
return self::D::bar<self::_#B#bar#tearOff::X>();
+
+constants {
+ #C1 = constructor-tearoff self::C::bar
+ #C2 = constructor-tearoff self::D::bar
+}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.expect
index 1d4c9d2..14a187b 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.expect
@@ -69,7 +69,7 @@
typedef A<X extends (self::C<X>) → self::C<X> = (self::C<dynamic>) → self::C<dynamic>> = self::C<X>;
typedef B<X extends (self::D<X>) → self::D<X> = (self::D<dynamic>) → self::D<dynamic>> = self::D<X>;
class C<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor foo() → self::C<self::C::X%>
: super core::Object::•() {}
static factory •<X extends core::Object? = dynamic>() → self::C<self::C::•::X%>
@@ -78,7 +78,7 @@
return self::C::•<self::C::bar::X%>();
}
class D<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor •() → self::D<self::D::X%>
: super core::Object::•()
;
@@ -108,3 +108,8 @@
return self::D::foo<self::_#B#foo#tearOff::X>();
static method _#B#bar#tearOff<X extends (self::D<self::_#B#bar#tearOff::X>) → self::D<self::_#B#bar#tearOff::X> = (self::D<dynamic>) → self::D<dynamic>>() → self::D<self::_#B#bar#tearOff::X>
return self::D::bar<self::_#B#bar#tearOff::X>();
+
+constants {
+ #C1 = constructor-tearoff self::C::bar
+ #C2 = constructor-tearoff self::D::bar
+}
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.outline.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.outline.expect
index 218a88b..e8f791f 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.outline.expect
@@ -39,3 +39,9 @@
return self::D::foo<self::_#B#foo#tearOff::X>();
static method _#B#bar#tearOff<X extends (self::D<self::_#B#bar#tearOff::X>) → self::D<self::_#B#bar#tearOff::X> = (self::D<dynamic>) → self::D<dynamic>>() → self::D<self::_#B#bar#tearOff::X>
return self::D::bar<self::_#B#bar#tearOff::X>();
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue45519_2.dart:5:7 -> ConstructorTearOffConstant(C.bar)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue45519_2.dart:10:7 -> ConstructorTearOffConstant(D.bar)
+Extra constant evaluation: evaluated: 12, effectively constant: 2
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.transformed.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.transformed.expect
index 1d4c9d2..14a187b 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue45519_2.dart.weak.transformed.expect
@@ -69,7 +69,7 @@
typedef A<X extends (self::C<X>) → self::C<X> = (self::C<dynamic>) → self::C<dynamic>> = self::C<X>;
typedef B<X extends (self::D<X>) → self::D<X> = (self::D<dynamic>) → self::D<dynamic>> = self::D<X>;
class C<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
constructor foo() → self::C<self::C::X%>
: super core::Object::•() {}
static factory •<X extends core::Object? = dynamic>() → self::C<self::C::•::X%>
@@ -78,7 +78,7 @@
return self::C::•<self::C::bar::X%>();
}
class D<X extends core::Object? = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
constructor •() → self::D<self::D::X%>
: super core::Object::•()
;
@@ -108,3 +108,8 @@
return self::D::foo<self::_#B#foo#tearOff::X>();
static method _#B#bar#tearOff<X extends (self::D<self::_#B#bar#tearOff::X>) → self::D<self::_#B#bar#tearOff::X> = (self::D<dynamic>) → self::D<dynamic>>() → self::D<self::_#B#bar#tearOff::X>
return self::D::bar<self::_#B#bar#tearOff::X>();
+
+constants {
+ #C1 = constructor-tearoff self::C::bar
+ #C2 = constructor-tearoff self::D::bar
+}
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.expect
index 4ca626f..b641197 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.expect
@@ -75,7 +75,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class D extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •() → self::D*
return invalid-expression "pkg/front_end/testcases/rasta/class_hierarchy.dart:12:17: Error: Redirection constructor target not found: 'Missing'
factory D() = Missing;
@@ -99,3 +99,7 @@
factory D() = Missing;
^";
}
+
+constants {
+ #C1 = constructor-tearoff self::D::•
+}
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.outline.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.outline.expect
index 5a0190f..b631f32 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.outline.expect
@@ -91,3 +91,8 @@
}
static method main() → void
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///class_hierarchy.dart:11:7 -> ConstructorTearOffConstant(D.)
+Extra constant evaluation: evaluated: 2, effectively constant: 1
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.transformed.expect
index 4ca626f..b641197 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.weak.transformed.expect
@@ -75,7 +75,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class D extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::D::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •() → self::D*
return invalid-expression "pkg/front_end/testcases/rasta/class_hierarchy.dart:12:17: Error: Redirection constructor target not found: 'Missing'
factory D() = Missing;
@@ -99,3 +99,7 @@
factory D() = Missing;
^";
}
+
+constants {
+ #C1 = constructor-tearoff self::D::•
+}
diff --git a/pkg/front_end/testcases/rasta/generic_factory.dart.weak.expect b/pkg/front_end/testcases/rasta/generic_factory.dart.weak.expect
index 900f8a7..05e4007 100644
--- a/pkg/front_end/testcases/rasta/generic_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/generic_factory.dart.weak.expect
@@ -73,7 +73,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class A<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3];
constructor internal() → self::A<self::A::T*>*
: super core::Object::•()
;
@@ -102,7 +102,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B<S extends core::Object* = dynamic> extends self::A<self::B::S*> {
- static final field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
+ static final field dynamic _redirecting# = <dynamic>[#C4, #C5];
constructor internal() → self::B<self::B::S*>*
: super self::A::internal()
;
@@ -140,3 +140,11 @@
factory A.c() = Missing;
^";
}
+
+constants {
+ #C1 = constructor-tearoff self::A::a
+ #C2 = constructor-tearoff self::A::b
+ #C3 = constructor-tearoff self::A::c
+ #C4 = constructor-tearoff self::B::a
+ #C5 = constructor-tearoff self::B::b
+}
diff --git a/pkg/front_end/testcases/rasta/generic_factory.dart.weak.outline.expect b/pkg/front_end/testcases/rasta/generic_factory.dart.weak.outline.expect
index 12ffeef..ba2de86 100644
--- a/pkg/front_end/testcases/rasta/generic_factory.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/rasta/generic_factory.dart.weak.outline.expect
@@ -117,3 +117,12 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_factory.dart:11:7 -> ConstructorTearOffConstant(A.a)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_factory.dart:11:7 -> ConstructorTearOffConstant(A.b)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_factory.dart:11:7 -> ConstructorTearOffConstant(A.c)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_factory.dart:19:7 -> ConstructorTearOffConstant(B.a)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///generic_factory.dart:19:7 -> ConstructorTearOffConstant(B.b)
+Extra constant evaluation: evaluated: 9, effectively constant: 5
diff --git a/pkg/front_end/testcases/rasta/generic_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/generic_factory.dart.weak.transformed.expect
index 900f8a7..05e4007 100644
--- a/pkg/front_end/testcases/rasta/generic_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/generic_factory.dart.weak.transformed.expect
@@ -73,7 +73,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class A<T extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
+ static final field dynamic _redirecting# = <dynamic>[#C1, #C2, #C3];
constructor internal() → self::A<self::A::T*>*
: super core::Object::•()
;
@@ -102,7 +102,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B<S extends core::Object* = dynamic> extends self::A<self::B::S*> {
- static final field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
+ static final field dynamic _redirecting# = <dynamic>[#C4, #C5];
constructor internal() → self::B<self::B::S*>*
: super self::A::internal()
;
@@ -140,3 +140,11 @@
factory A.c() = Missing;
^";
}
+
+constants {
+ #C1 = constructor-tearoff self::A::a
+ #C2 = constructor-tearoff self::A::b
+ #C3 = constructor-tearoff self::A::c
+ #C4 = constructor-tearoff self::B::a
+ #C5 = constructor-tearoff self::B::b
+}
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect
index 58f3e10..b0dbf3f 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.expect
@@ -63,7 +63,7 @@
import "dart:core" as core;
class C extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::C::good];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
const constructor constant() → self::C*
: super core::Object::•()
;
@@ -98,17 +98,18 @@
^";
static method main() → dynamic {
self::C* c = null;
- core::print(#C1);
+ core::print(#C2);
core::print(invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:27:15: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
print(const C.missingFactoryKeyword());
^");
- core::print(#C1);
+ core::print(#C2);
core::print(new self::C::constant().{self::C::notEvenAConstructor}(null){(dynamic) →* self::C*});
}
constants {
- #C1 = self::C {}
+ #C1 = constructor-tearoff self::C::good
+ #C2 = self::C {}
}
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.outline.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.outline.expect
index 49eadbc..19384f6 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.outline.expect
@@ -54,3 +54,8 @@
;
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue_000044.dart:9:7 -> ConstructorTearOffConstant(C.good)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect
index 41ab0dd..b406cc3 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.weak.transformed.expect
@@ -63,7 +63,7 @@
import "dart:core" as core;
class C extends core::Object /*hasConstConstructor*/ {
- static final field dynamic _redirecting# = <dynamic>[self::C::good];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
const constructor constant() → self::C*
: super core::Object::•()
;
@@ -98,17 +98,18 @@
^";
static method main() → dynamic {
self::C* c = null;
- core::print(#C1);
+ core::print(#C2);
core::print(invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:27:15: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
print(const C.missingFactoryKeyword());
^");
- core::print(#C1);
+ core::print(#C2);
core::print(new self::C::constant().{self::C::notEvenAConstructor}(null){(dynamic) →* self::C*});
}
constants {
- #C1 = self::C {}
+ #C1 = constructor-tearoff self::C::good
+ #C2 = self::C {}
}
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.expect
index 3f594b7..66f50c0 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::foo];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::A*
: super core::Object::•() {}
static factory foo() → self::A*
@@ -24,7 +24,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class C extends self::A {
- static final field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor •() → self::C*
: super self::A::•() {}
static factory bar() → self::C*
@@ -45,3 +45,8 @@
self::A* a = new self::D::•();
exp::Expect::equals(2, a.{self::A::m}(){() →* core::int*});
}
+
+constants {
+ #C1 = constructor-tearoff self::A::foo
+ #C2 = constructor-tearoff self::C::bar
+}
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.outline.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.outline.expect
index b498bf4..1f48749 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.outline.expect
@@ -40,3 +40,9 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue_000067.dart:7:7 -> ConstructorTearOffConstant(A.foo)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue_000067.dart:13:7 -> ConstructorTearOffConstant(C.bar)
+Extra constant evaluation: evaluated: 6, effectively constant: 2
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.transformed.expect
index 3f594b7..66f50c0 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::A::foo];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::A*
: super core::Object::•() {}
static factory foo() → self::A*
@@ -24,7 +24,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class C extends self::A {
- static final field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor •() → self::C*
: super self::A::•() {}
static factory bar() → self::C*
@@ -45,3 +45,8 @@
self::A* a = new self::D::•();
exp::Expect::equals(2, a.{self::A::m}(){() →* core::int*});
}
+
+constants {
+ #C1 = constructor-tearoff self::A::foo
+ #C2 = constructor-tearoff self::C::bar
+}
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.weak.expect b/pkg/front_end/testcases/regress/issue_35259.dart.weak.expect
index 89937c2..6a366d0 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.weak.expect
@@ -33,7 +33,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •() → self::Supertype*
return invalid-expression "pkg/front_end/testcases/regress/issue_35259.dart:6:25: Error: Redirection constructor target not found: 'Unresolved'
factory Supertype() = Unresolved;
@@ -54,3 +54,7 @@
print(new Supertype());
^");
}
+
+constants {
+ #C1 = constructor-tearoff self::Supertype::•
+}
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.weak.outline.expect b/pkg/front_end/testcases/regress/issue_35259.dart.weak.outline.expect
index e164c58..da1fe3e 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.weak.outline.expect
@@ -47,3 +47,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue_35259.dart:5:7 -> ConstructorTearOffConstant(Supertype.)
+Extra constant evaluation: evaluated: 2, effectively constant: 1
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_35259.dart.weak.transformed.expect
index 89937c2..6a366d0 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.weak.transformed.expect
@@ -33,7 +33,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •() → self::Supertype*
return invalid-expression "pkg/front_end/testcases/regress/issue_35259.dart:6:25: Error: Redirection constructor target not found: 'Unresolved'
factory Supertype() = Unresolved;
@@ -54,3 +54,7 @@
print(new Supertype());
^");
}
+
+constants {
+ #C1 = constructor-tearoff self::Supertype::•
+}
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.weak.expect b/pkg/front_end/testcases/regress/issue_35260.dart.weak.expect
index 27e321c..0b4828a 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.weak.expect
@@ -17,7 +17,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •() → self::Supertype*
return new self::X::•();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -51,3 +51,7 @@
X x = new Supertype();
^";
}
+
+constants {
+ #C1 = constructor-tearoff self::Supertype::•
+}
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.weak.outline.expect b/pkg/front_end/testcases/regress/issue_35260.dart.weak.outline.expect
index 5198fda..fd0802b 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.weak.outline.expect
@@ -43,3 +43,8 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue_35260.dart:5:7 -> ConstructorTearOffConstant(Supertype.)
+Extra constant evaluation: evaluated: 3, effectively constant: 1
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_35260.dart.weak.transformed.expect
index 27e321c..0b4828a 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.weak.transformed.expect
@@ -17,7 +17,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
static factory •() → self::Supertype*
return new self::X::•();
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -51,3 +51,7 @@
X x = new Supertype();
^";
}
+
+constants {
+ #C1 = constructor-tearoff self::Supertype::•
+}
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.weak.expect b/pkg/front_end/testcases/regress/issue_35266.dart.weak.expect
index 6e380a7..9885c52 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.weak.expect
@@ -17,7 +17,7 @@
import "dart:core" as core;
class B<T extends core::Object* = dynamic> extends self::C<self::B::T*> {
- static final field dynamic _redirecting# = <dynamic>[self::B::foo];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::B<self::B::T*>*
: super self::C::•()
;
@@ -25,7 +25,7 @@
return new self::B::•<self::B::foo::T*>();
}
class C<K extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor •() → self::C<self::C::K*>*
: super core::Object::•()
;
@@ -49,3 +49,8 @@
factory C.bar() = B<K>.foo;
^";
}
+
+constants {
+ #C1 = constructor-tearoff self::B::foo
+ #C2 = constructor-tearoff self::C::bar
+}
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.weak.outline.expect b/pkg/front_end/testcases/regress/issue_35266.dart.weak.outline.expect
index b64319b..c71adb4 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.weak.outline.expect
@@ -44,3 +44,9 @@
}
static method main() → dynamic
;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue_35266.dart:5:7 -> ConstructorTearOffConstant(B.foo)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue_35266.dart:11:7 -> ConstructorTearOffConstant(C.bar)
+Extra constant evaluation: evaluated: 5, effectively constant: 2
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_35266.dart.weak.transformed.expect
index 6e380a7..9885c52 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.weak.transformed.expect
@@ -17,7 +17,7 @@
import "dart:core" as core;
class B<T extends core::Object* = dynamic> extends self::C<self::B::T*> {
- static final field dynamic _redirecting# = <dynamic>[self::B::foo];
+ static final field dynamic _redirecting# = <dynamic>[#C1];
constructor •() → self::B<self::B::T*>*
: super self::C::•()
;
@@ -25,7 +25,7 @@
return new self::B::•<self::B::foo::T*>();
}
class C<K extends core::Object* = dynamic> extends core::Object {
- static final field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[#C2];
constructor •() → self::C<self::C::K*>*
: super core::Object::•()
;
@@ -49,3 +49,8 @@
factory C.bar() = B<K>.foo;
^";
}
+
+constants {
+ #C1 = constructor-tearoff self::B::foo
+ #C2 = constructor-tearoff self::C::bar
+}
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index 3bddafe..86800bb 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -4921,7 +4921,8 @@
Reference targetReference;
StaticGet(Member target)
- : this.byReference(getNonNullableMemberReferenceGetter(target));
+ : assert(target is Field || (target is Procedure && target.isGetter)),
+ this.targetReference = getNonNullableMemberReferenceGetter(target);
StaticGet.byReference(this.targetReference);
@@ -4969,7 +4970,10 @@
Reference targetReference;
StaticTearOff(Procedure target)
- : this.byReference(getNonNullableMemberReferenceGetter(target));
+ : assert(target.isStatic, "Unexpected static tear off target: $target"),
+ assert(target.kind == ProcedureKind.Method,
+ "Unexpected static tear off target: $target"),
+ this.targetReference = getNonNullableMemberReferenceGetter(target);
StaticTearOff.byReference(this.targetReference);
@@ -8619,8 +8623,9 @@
Reference targetReference;
ConstructorTearOff(Member target)
- : assert(target is Constructor ||
- (target is Procedure && target.kind == ProcedureKind.Factory)),
+ : assert(
+ target is Constructor || (target is Procedure && target.isFactory),
+ "Unexpected constructor tear off target: $target"),
this.targetReference = getNonNullableMemberReferenceGetter(target);
ConstructorTearOff.byReference(this.targetReference);
@@ -13170,10 +13175,11 @@
@override
final Reference targetReference;
- StaticTearOffConstant(Procedure procedure)
- : targetReference = procedure.reference {
- assert(procedure.isStatic);
- }
+ StaticTearOffConstant(Procedure target)
+ : assert(target.isStatic),
+ assert(target.kind == ProcedureKind.Method,
+ "Unexpected static tear off target: $target"),
+ targetReference = target.reference;
StaticTearOffConstant.byReference(this.targetReference);
@@ -13231,8 +13237,9 @@
final Reference targetReference;
ConstructorTearOffConstant(Member target)
- : assert(target is Constructor ||
- (target is Procedure && target.kind == ProcedureKind.Factory)),
+ : assert(
+ target is Constructor || (target is Procedure && target.isFactory),
+ "Unexpected constructor tear off target: $target"),
this.targetReference = getNonNullableMemberReferenceGetter(target);
ConstructorTearOffConstant.byReference(this.targetReference);
diff --git a/pkg/kernel/lib/text/ast_to_text.dart b/pkg/kernel/lib/text/ast_to_text.dart
index 42babc4..6a24e52 100644
--- a/pkg/kernel/lib/text/ast_to_text.dart
+++ b/pkg/kernel/lib/text/ast_to_text.dart
@@ -2849,12 +2849,7 @@
writeSpaced('=');
writeWord('instantiation');
writeSpace();
- Constant tearOffConstant = node.tearOffConstant;
- if (tearOffConstant is TearOffConstant) {
- writeMemberReferenceFromReference(tearOffConstant.targetReference);
- } else {
- writeConstantReference(tearOffConstant);
- }
+ writeConstantReference(node.tearOffConstant);
writeSpace();
writeSymbol('<');
writeList(node.types, writeType);
diff --git a/tools/VERSION b/tools/VERSION
index 6743daf..9ab1341 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 15
PATCH 0
-PRERELEASE 253
+PRERELEASE 254
PRERELEASE_PATCH 0
\ No newline at end of file