[cfe] Make field assignability immutable
Changes fields to be either mutable or immutable by construction.
This ensure that we don't create setter references for fields that
cannot be assigned to and is a prerequisite for replacing @fields/
@fields= canonical names with @getters/@setters.
TEST=existing expectation tests and verification
Change-Id: I70b9a504ee6f221b7c334ac02620feb0d5f7ae01
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176665
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index fbb3fc9..fe5ce5f 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -1342,7 +1342,7 @@
bool isStatic = node.isStatic;
IndexedField field = createField(library, enclosingClass, name,
isStatic: isStatic,
- isAssignable: node.isMutable,
+ isAssignable: node.hasSetter,
isConst: node.isConst);
return members.register<IndexedField, KFieldData>(
field, new KFieldDataImpl(node));
diff --git a/pkg/compiler/lib/src/kernel/env.dart b/pkg/compiler/lib/src/kernel/env.dart
index 9b1ffbd..3200bb0 100644
--- a/pkg/compiler/lib/src/kernel/env.dart
+++ b/pkg/compiler/lib/src/kernel/env.dart
@@ -131,7 +131,7 @@
}
} else if (member is ir.Field) {
_memberMap[member.name.text] = member;
- if (member.isMutable) {
+ if (member.hasSetter) {
_setterMap[member.name.text] = member;
}
} else {
@@ -334,7 +334,7 @@
if (isRedirectingFactoryField(member)) return;
var name = member.name.text;
_memberMap[name] = member;
- if (member.isMutable) {
+ if (member.hasSetter) {
_setterMap[name] = member;
}
members.add(member);
diff --git a/pkg/front_end/lib/src/fasta/builder/field_builder.dart b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
index 113198e..320b04e 100644
--- a/pkg/front_end/lib/src/fasta/builder/field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
@@ -227,8 +227,13 @@
assert(lateIsSetReferenceFrom == null);
assert(getterReferenceFrom == null);
assert(setterReferenceFrom == null);
- _fieldEncoding = new RegularFieldEncoding(fileUri, charOffset,
- charEndOffset, reference, library.isNonNullableByDefault);
+ _fieldEncoding = new RegularFieldEncoding(
+ fileUri, charOffset, charEndOffset, reference,
+ isFinal: isFinal,
+ isConst: isConst,
+ isLate: isLate,
+ hasInitializer: hasInitializer,
+ isNonNullableByDefault: library.isNonNullableByDefault);
}
}
@@ -587,12 +592,33 @@
class RegularFieldEncoding implements FieldEncoding {
Field _field;
- RegularFieldEncoding(Uri fileUri, int charOffset, int charEndOffset,
- Field reference, bool isNonNullableByDefault) {
- _field = new Field(null,
- fileUri: fileUri,
- getterReference: reference?.getterReference,
- setterReference: reference?.setterReference)
+ RegularFieldEncoding(
+ Uri fileUri, int charOffset, int charEndOffset, Field reference,
+ {bool isFinal,
+ bool isConst,
+ bool isLate,
+ bool hasInitializer,
+ bool isNonNullableByDefault}) {
+ assert(isFinal != null);
+ assert(isConst != null);
+ assert(isLate != null);
+ assert(hasInitializer != null);
+ bool isImmutable =
+ isLate ? (isFinal && hasInitializer) : (isFinal || isConst);
+ _field = isImmutable
+ ? new Field.immutable(null,
+ isFinal: isFinal,
+ isConst: isConst,
+ isLate: isLate,
+ fileUri: fileUri,
+ getterReference: reference?.getterReference)
+ : new Field.mutable(null,
+ isFinal: isFinal,
+ isLate: isLate,
+ fileUri: fileUri,
+ getterReference: reference?.getterReference,
+ setterReference: reference?.setterReference);
+ _field
..fileOffset = charOffset
..fileEndOffset = charEndOffset
..isNonNullableByDefault = isNonNullableByDefault;
@@ -630,10 +656,7 @@
@override
void build(
SourceLibraryBuilder libraryBuilder, SourceFieldBuilder fieldBuilder) {
- _field
- ..isCovariant = fieldBuilder.isCovariant
- ..isFinal = fieldBuilder.isFinal
- ..isConst = fieldBuilder.isConst;
+ _field..isCovariant = fieldBuilder.isCovariant;
String fieldName;
if (fieldBuilder.isExtensionMember) {
ExtensionBuilder extension = fieldBuilder.parent;
@@ -641,8 +664,6 @@
FieldNameType.Field, fieldBuilder.name,
isExtensionMethod: true, extensionName: extension.name);
_field
- ..hasImplicitGetter = false
- ..hasImplicitSetter = false
..isStatic = true
..isExtensionMember = true;
} else {
@@ -654,11 +675,6 @@
FieldNameType.Field, fieldBuilder.name,
isInstanceMember: isInstanceMember, className: className);
_field
- ..hasImplicitGetter = isInstanceMember
- ..hasImplicitSetter = isInstanceMember &&
- !fieldBuilder.isConst &&
- (!fieldBuilder.isFinal ||
- (fieldBuilder.isLate && !fieldBuilder.hasInitializer))
..isStatic = !isInstanceMember
..isExtensionMember = false;
}
@@ -806,7 +822,7 @@
_isSetStrategy = isSetStrategy,
_forceIncludeIsSetField =
isSetStrategy == late_lowering.IsSetStrategy.forceUseIsSetField {
- _field = new Field(null,
+ _field = new Field.mutable(null,
fileUri: fileUri,
getterReference: referenceFrom?.getterReference,
setterReference: referenceFrom?.setterReference)
@@ -821,7 +837,7 @@
break;
case late_lowering.IsSetStrategy.forceUseIsSetField:
case late_lowering.IsSetStrategy.useIsSetFieldOrNull:
- _lateIsSetField = new Field(null,
+ _lateIsSetField = new Field.mutable(null,
fileUri: fileUri,
getterReference: lateIsSetReferenceFrom?.getterReference,
setterReference: lateIsSetReferenceFrom?.setterReference)
@@ -1042,16 +1058,12 @@
ExtensionBuilder extension = fieldBuilder.parent;
extensionName = extension.name;
_field
- ..hasImplicitGetter = false
- ..hasImplicitSetter = false
..isStatic = true
..isExtensionMember = isExtensionMember;
isInstanceMember = false;
} else {
isInstanceMember = !fieldBuilder.isStatic && !fieldBuilder.isTopLevel;
_field
- ..hasImplicitGetter = isInstanceMember
- ..hasImplicitSetter = isInstanceMember
..isStatic = !isInstanceMember
..isExtensionMember = false;
if (isInstanceMember) {
@@ -1079,8 +1091,6 @@
isSynthesized: true),
libraryBuilder.library)
..isStatic = !isInstanceMember
- ..hasImplicitGetter = isInstanceMember
- ..hasImplicitSetter = isInstanceMember
..isStatic = _field.isStatic
..isExtensionMember = isExtensionMember;
}
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 ac296a0..d211835 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
@@ -861,12 +861,12 @@
if (constructorsField == null) {
ListLiteral literal = new ListLiteral(<Expression>[]);
Name name = new Name(redirectingName, library.library);
- Field field = new Field(name,
+ Field field = new Field.immutable(name,
isStatic: true,
+ isFinal: true,
initializer: literal,
fileUri: cls.fileUri,
- getterReference: referenceFrom?.getterReference,
- setterReference: referenceFrom?.setterReference)
+ getterReference: referenceFrom?.getterReference)
..fileOffset = cls.fileOffset;
cls.addField(field);
constructorsField = new DillFieldBuilder(field, this);
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index a57f05f..965cd29 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -980,12 +980,11 @@
if (unserializableExports != null) {
Field referenceFrom = referencesFromIndexed?.lookupField("_exports#");
- library.addField(new Field(new Name("_exports#", library),
+ library.addField(new Field.immutable(new Name("_exports#", library),
initializer: new StringLiteral(jsonEncode(unserializableExports)),
isStatic: true,
isConst: true,
- getterReference: referenceFrom?.getterReference,
- setterReference: referenceFrom?.setterReference));
+ getterReference: referenceFrom?.getterReference));
}
return library;
@@ -1287,7 +1286,9 @@
// so replacing a field with a getter/setter pair still
// exports correctly.
library.additionalExports.add(member.getterReference);
- library.additionalExports.add(member.setterReference);
+ if (member.hasSetter) {
+ library.additionalExports.add(member.setterReference);
+ }
} else {
library.additionalExports.add(member.reference);
}
diff --git a/pkg/front_end/test/fasta/ambiguous_export_test.dart b/pkg/front_end/test/fasta/ambiguous_export_test.dart
index a1ac89a..1bb1c23 100644
--- a/pkg/front_end/test/fasta/ambiguous_export_test.dart
+++ b/pkg/front_end/test/fasta/ambiguous_export_test.dart
@@ -21,7 +21,7 @@
main() async {
await asyncTest(() async {
Library library = new Library(Uri.parse("org.dartlang.fasta:library"));
- Field field = new Field(new Name("_exports#", library),
+ Field field = new Field.immutable(new Name("_exports#", library),
initializer: new StringLiteral('{"main":"Problem with main"}'));
library.addField(field);
Component component = new Component(libraries: <Library>[library]);
diff --git a/pkg/front_end/test/incremental_load_from_dill_suite.dart b/pkg/front_end/test/incremental_load_from_dill_suite.dart
index 3c88456..dba9923 100644
--- a/pkg/front_end/test/incremental_load_from_dill_suite.dart
+++ b/pkg/front_end/test/incremental_load_from_dill_suite.dart
@@ -1202,7 +1202,6 @@
Set<Member> members = info.lazyDeclaredGettersAndCalls.toSet();
for (Field f in c.fields) {
if (f.isStatic) continue;
- if (!f.hasImplicitGetter) continue;
if (!members.remove(f)) {
return new Result<TestData>(
data,
@@ -1240,7 +1239,7 @@
Set<Member> members = info.lazyDeclaredSetters.toSet();
for (Field f in c.fields) {
if (f.isStatic) continue;
- if (!f.hasImplicitSetter) continue;
+ if (!f.hasSetter) continue;
if (!members.remove(f)) {
return new Result<TestData>(data, ClassHierarchyError,
"Didn't find $f in lazyDeclaredSetters for $c");
@@ -1915,13 +1914,10 @@
.toList()
.isNotEmpty) continue;
Name fieldName = new Name("unique_SimulateTransformer");
- Field field = new Field(fieldName,
+ Field field = new Field.immutable(fieldName,
isFinal: true,
getterReference: lib.reference.canonicalName
?.getChildFromFieldWithName(fieldName)
- ?.reference,
- setterReference: lib.reference.canonicalName
- ?.getChildFromFieldSetterWithName(fieldName)
?.reference);
lib.addField(field);
for (Class c in lib.classes) {
@@ -1930,13 +1926,10 @@
.toList()
.isNotEmpty) continue;
fieldName = new Name("unique_SimulateTransformer");
- field = new Field(fieldName,
+ field = new Field.immutable(fieldName,
isFinal: true,
getterReference: c.reference.canonicalName
?.getChildFromFieldWithName(fieldName)
- ?.reference,
- setterReference: c.reference.canonicalName
- ?.getChildFromFieldSetterWithName(fieldName)
?.reference);
c.addField(field);
}
diff --git a/pkg/front_end/test/type_labeler_test.dart b/pkg/front_end/test/type_labeler_test.dart
index 40e862f..aea5433 100644
--- a/pkg/front_end/test/type_labeler_test.dart
+++ b/pkg/front_end/test/type_labeler_test.dart
@@ -182,17 +182,17 @@
check({funGenericBar: "T Function<T extends Bar<T>>(T)"}, 1);
// Add some members for testing instance constants
- Field booField = new Field(new Name("boo"), type: boolType);
+ Field booField = new Field.immutable(new Name("boo"), type: boolType);
fooClass.fields.add(booField);
- Field valueField = new Field(new Name("value"), type: intType);
+ Field valueField = new Field.immutable(new Name("value"), type: intType);
foo2Class.fields.add(valueField);
- Field nextField = new Field(new Name("next"), type: foo2);
+ Field nextField = new Field.immutable(new Name("next"), type: foo2);
foo2Class.fields.add(nextField);
- Field xField = new Field(new Name("x"),
+ Field xField = new Field.immutable(new Name("x"),
type: new TypeParameterType(
bazClass.typeParameters[0], Nullability.legacy));
bazClass.fields.add(xField);
- Field yField = new Field(new Name("y"),
+ Field yField = new Field.immutable(new Name("y"),
type: new TypeParameterType(
bazClass.typeParameters[1], Nullability.legacy));
bazClass.fields.add(yField);
diff --git a/pkg/front_end/testcases/general/invalid_cast.dart.outline.expect b/pkg/front_end/testcases/general/invalid_cast.dart.outline.expect
index cc0f041..c096df0 100644
--- a/pkg/front_end/testcases/general/invalid_cast.dart.outline.expect
+++ b/pkg/front_end/testcases/general/invalid_cast.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::fact2];
+ static final field dynamic _redirecting# = <dynamic>[self::C::fact2];
constructor •() → self::C*
;
constructor nonFact() → self::C*
diff --git a/pkg/front_end/testcases/general/invalid_cast.dart.strong.expect b/pkg/front_end/testcases/general/invalid_cast.dart.strong.expect
index fb2b5bb..8c699de 100644
--- a/pkg/front_end/testcases/general/invalid_cast.dart.strong.expect
+++ b/pkg/front_end/testcases/general/invalid_cast.dart.strong.expect
@@ -65,7 +65,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::fact2];
+ static final field dynamic _redirecting# = <dynamic>[self::C::fact2];
constructor •() → self::C*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/invalid_cast.dart.strong.transformed.expect b/pkg/front_end/testcases/general/invalid_cast.dart.strong.transformed.expect
index 0ab1a94..2868804 100644
--- a/pkg/front_end/testcases/general/invalid_cast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/invalid_cast.dart.strong.transformed.expect
@@ -65,7 +65,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::fact2];
+ static final field dynamic _redirecting# = <dynamic>[self::C::fact2];
constructor •() → self::C*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/issue34714.dart.outline.expect b/pkg/front_end/testcases/general/issue34714.dart.outline.expect
index 04e8e0b..7d7ca21 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/issue34714.dart.strong.expect b/pkg/front_end/testcases/general/issue34714.dart.strong.expect
index f0ced51..e023b92 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/issue34714.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue34714.dart.strong.transformed.expect
index 38f9b49..61b902a 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
let<BottomType> #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/qualified.dart.outline.expect b/pkg/front_end/testcases/general/qualified.dart.outline.expect
index e1536ac..fcf8ecc 100644
--- a/pkg/front_end/testcases/general/qualified.dart.outline.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.outline.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 field dynamic _redirecting# = <dynamic>[self::C::b];
+ static final field dynamic _redirecting# = <dynamic>[self::C::b];
constructor •() → self::C<self::C::T*>*
;
constructor a() → self::C<self::C::T*>*
@@ -103,7 +103,7 @@
typedef VoidFunction = () →* void;
class C<T extends core::Object* = dynamic> extends self::C<lib::C::T*> {
- static field dynamic _redirecting# = <dynamic>[lib::C::b];
+ static final field dynamic _redirecting# = <dynamic>[lib::C::b];
constructor •() → lib::C<lib::C::T*>*
;
constructor a() → lib::C<lib::C::T*>*
diff --git a/pkg/front_end/testcases/general/qualified.dart.strong.expect b/pkg/front_end/testcases/general/qualified.dart.strong.expect
index ae55a16..a51969d 100644
--- a/pkg/front_end/testcases/general/qualified.dart.strong.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.strong.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 field dynamic _redirecting# = <dynamic>[self::C::b];
+ static final field dynamic _redirecting# = <dynamic>[self::C::b];
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 field dynamic _redirecting# = <dynamic>[lib::C::b];
+ static final field dynamic _redirecting# = <dynamic>[lib::C::b];
constructor •() → lib::C<lib::C::T*>*
: super self::C::•()
;
diff --git a/pkg/front_end/testcases/general/qualified.dart.strong.transformed.expect b/pkg/front_end/testcases/general/qualified.dart.strong.transformed.expect
index 7c806eb..3937b15 100644
--- a/pkg/front_end/testcases/general/qualified.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.strong.transformed.expect
@@ -84,7 +84,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 field dynamic _redirecting# = <dynamic>[self::C::b];
+ static final field dynamic _redirecting# = <dynamic>[self::C::b];
constructor •() → self::C<self::C::T*>*
: super core::Object::•()
;
@@ -125,7 +125,7 @@
typedef VoidFunction = () →* void;
class C<T extends core::Object* = dynamic> extends self::C<lib::C::T*> {
- static field dynamic _redirecting# = <dynamic>[lib::C::b];
+ static final field dynamic _redirecting# = <dynamic>[lib::C::b];
constructor •() → lib::C<lib::C::T*>*
: super self::C::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.outline.expect
index 2a6e7ee..6128d70 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::fisk];
+ static final field dynamic _redirecting# = <dynamic>[self::A::fisk];
constructor •() → self::A*
;
static factory fisk() → self::A*
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.expect
index 43520af..7443e13 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::fisk];
+ static final field dynamic _redirecting# = <dynamic>[self::A::fisk];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.transformed.expect
index ff02ffa..0ed4fed 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::fisk];
+ static final field dynamic _redirecting# = <dynamic>[self::A::fisk];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.outline.expect
index 0b2651b..9a9214d 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.outline.expect
@@ -12,7 +12,7 @@
import "dart:core" as core;
abstract class FooBase<Tf extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::FooBase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::FooBase::•];
abstract get x() → core::int*;
static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
let dynamic #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
@@ -28,7 +28,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 field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
let dynamic #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -74,7 +74,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 field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
let dynamic #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -89,7 +89,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 field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
let dynamic #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.strong.expect
index b6af2c6..71c6c5f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.strong.expect
@@ -12,7 +12,7 @@
import "dart:core" as core;
abstract class FooBase<Tf extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::FooBase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::FooBase::•];
abstract get x() → core::int*;
static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
let dynamic #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
@@ -28,7 +28,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 field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
let dynamic #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -78,7 +78,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 field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
let dynamic #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -93,7 +93,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 field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
let dynamic #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.strong.transformed.expect
index 405a5a2..7cdb54a 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
import "dart:core" as core;
abstract class FooBase<Tf extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::FooBase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::FooBase::•];
abstract get x() → core::int*;
static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
let <T extends core::Object* = dynamic>(core::int*) →* self::Foo<T*>* #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
@@ -28,7 +28,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 field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
let<BottomType> #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -78,7 +78,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 field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
let <Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() →* self::SimpleCaseImpl<Ai*, Bi*>* #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -93,7 +93,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 field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
let<BottomType> #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.outline.expect
index 9a864d0..7df5d5f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
+ static final field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
constructor •() → self::A*
;
static factory first() → self::A*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.expect
index e3f106c..88615ec 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
+ static final field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.transformed.expect
index 03c3664..cab046f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
+ static final field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.outline.expect
index 7d51f0c..23d11ab 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class _X<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::_X::•];
+ static final field dynamic _redirecting# = <dynamic>[self::_X::•];
static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
let dynamic #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.expect
index 5530c67..9c109d5 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class _X<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::_X::•];
+ static final field dynamic _redirecting# = <dynamic>[self::_X::•];
static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
let dynamic #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.transformed.expect
index 4e5e906..bea6536 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class _X<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::_X::•];
+ static final field dynamic _redirecting# = <dynamic>[self::_X::•];
static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
let<BottomType> #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.outline.expect
index 55876a5..31008cf 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class Foo extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
constructor named(dynamic p) → self::Foo*
;
@self::forFactoryItself
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.expect
index 0426b6e..5da2827 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class Foo extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
constructor named(dynamic p) → self::Foo*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.transformed.expect
index bcd4eae..4dc094e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class Foo extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
constructor named(dynamic p) → self::Foo*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.outline.expect
index a0e6392..43d5697 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
;
static factory redir() → self::A*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.expect
index 524f4b5..de93fd8 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.transformed.expect
index 2220b80..5aec6a3 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.outline.expect
index 8e4e605..fe27ae5 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.outline.expect
@@ -21,7 +21,7 @@
;
}
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
;
static factory redir() → self::A*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.expect
index 017afcf..9ada94b 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.expect
@@ -23,7 +23,7 @@
;
}
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.transformed.expect
index 3396ff7..da09dec 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.transformed.expect
@@ -23,7 +23,7 @@
;
}
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.outline.expect
index 35e7e80..edba967 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.outline.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 field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
;
static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.expect
index 1a6b1c1..19f5ced 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.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 field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.transformed.expect
index 0be30d7..b6de55f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.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 field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.outline.expect
index 16ca154..2551eab 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.outline.expect
@@ -21,7 +21,7 @@
;
}
class A<T extends core::Object* = dynamic, S extends self::A::T* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
;
static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.expect
index 6c016e3..521ea4e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.expect
@@ -23,7 +23,7 @@
;
}
class A<T extends core::Object* = dynamic, S extends self::A::T* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect
index 0e2c3d5..8409594 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect
@@ -23,7 +23,7 @@
;
}
class A<T extends core::Object* = dynamic, S extends self::A::T* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.outline.expect
index c0e71db..abc8779 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.outline.expect
@@ -5,7 +5,7 @@
import "package:expect/expect.dart";
class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
constructor empty() → self::A<self::A::T*>*
;
static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
@@ -22,7 +22,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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
;
static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.expect
index 4d1fc6a..e9d6519 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.transformed.expect
index 579f622..30b74d9 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.outline.expect
index 3eb558f..9e95322 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.outline.expect
@@ -5,7 +5,7 @@
import "package:expect/expect.dart";
abstract class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
constructor empty() → self::A<self::A::T*>*
;
static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
@@ -22,7 +22,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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
;
static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.expect
index aacff54..8f23e49 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
abstract class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.transformed.expect
index 2acaca4..25434a1 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
abstract class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.outline.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.outline.expect
index 6575c3a..ca134d1 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.outline.expect
@@ -5,7 +5,7 @@
import "package:expect/expect.dart";
class A extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
const constructor empty() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.expect
index b2e2f7d..fdc3e04 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
const constructor empty() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.transformed.expect
index 431dcbe..7550d4d 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
const constructor empty() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.expect
index 66b58bc..ca5af00 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.expect
@@ -65,7 +65,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::fact2];
+ static final field dynamic _redirecting# = <dynamic>[self::C::fact2];
constructor •() → self::C*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.transformed.expect
index 4b8fb16..2c369c9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.transformed.expect
@@ -65,7 +65,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::fact2];
+ static final field dynamic _redirecting# = <dynamic>[self::C::fact2];
constructor •() → self::C*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.expect
index 9935bc7..ec198b7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::C::b];
+ static final field dynamic _redirecting# = <dynamic>[self::C::b];
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 field dynamic _redirecting# = <dynamic>[lib::C::b];
+ static final field dynamic _redirecting# = <dynamic>[lib::C::b];
constructor •() → lib::C<lib::C::T*>*
: super self::C::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.transformed.expect
index 10ac29a..9998bef 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.transformed.expect
@@ -84,7 +84,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 field dynamic _redirecting# = <dynamic>[self::C::b];
+ static final field dynamic _redirecting# = <dynamic>[self::C::b];
constructor •() → self::C<self::C::T*>*
: super core::Object::•()
;
@@ -125,7 +125,7 @@
typedef VoidFunction = () →* void;
class C<T extends core::Object* = dynamic> extends self::C<lib::C::T*> {
- static field dynamic _redirecting# = <dynamic>[lib::C::b];
+ static final field dynamic _redirecting# = <dynamic>[lib::C::b];
constructor •() → lib::C<lib::C::T*>*
: super self::C::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.expect
index 43520af..7443e13 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::fisk];
+ static final field dynamic _redirecting# = <dynamic>[self::A::fisk];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.transformed.expect
index ff02ffa..0ed4fed 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::fisk];
+ static final field dynamic _redirecting# = <dynamic>[self::A::fisk];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.expect
index 42cc2c5..7a6504b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::FooBase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::FooBase::•];
abstract get x() → core::int*;
static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
let dynamic #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
@@ -28,7 +28,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 field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
let dynamic #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -78,7 +78,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 field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
let dynamic #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -93,7 +93,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 field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
let dynamic #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.transformed.expect
index c4ed837..a63abfb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::FooBase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::FooBase::•];
abstract get x() → core::int*;
static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
let <T extends core::Object* = dynamic>(core::int*) →* self::Foo<T*>* #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
@@ -28,7 +28,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 field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
let<BottomType> #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -78,7 +78,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 field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
let <Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() →* self::SimpleCaseImpl<Ai*, Bi*>* #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -93,7 +93,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 field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
+ static final field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
let<BottomType> #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.expect
index e3f106c..88615ec 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
+ static final field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.transformed.expect
index 03c3664..cab046f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
+ static final field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.expect
index 4edee7a..046d379 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::_X::•];
+ static final field dynamic _redirecting# = <dynamic>[self::_X::•];
static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
let dynamic #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.transformed.expect
index 4ac209c..7c20f05 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::_X::•];
+ static final field dynamic _redirecting# = <dynamic>[self::_X::•];
static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
let<BottomType> #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.expect
index 0426b6e..5da2827 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class Foo extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
constructor named(dynamic p) → self::Foo*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.transformed.expect
index bcd4eae..4dc094e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class Foo extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
constructor named(dynamic p) → self::Foo*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.expect
index 524f4b5..de93fd8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.transformed.expect
index 2220b80..5aec6a3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.expect
index 017afcf..9ada94b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.expect
@@ -23,7 +23,7 @@
;
}
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.transformed.expect
index 3396ff7..da09dec 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
;
}
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.expect
index 1a6b1c1..19f5ced 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.transformed.expect
index 0be30d7..b6de55f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.expect
index 6c016e3..521ea4e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
index 0e2c3d5..8409594 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::A::redir];
+ static final field dynamic _redirecting# = <dynamic>[self::A::redir];
constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.expect
index 4d1fc6a..e9d6519 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.transformed.expect
index 579f622..30b74d9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.expect
index aacff54..8f23e49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
index 2acaca4..25434a1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/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 field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
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 field dynamic _redirecting# = <dynamic>[self::B::•];
+ static final field dynamic _redirecting# = <dynamic>[self::B::•];
constructor empty() → self::B<self::B::U*, self::B::W*>*
: super self::A::empty()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.expect
index 98086a1..7f62ccc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
const constructor empty() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.transformed.expect
index 0d879dc..58e796a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[self::A::•];
+ static final field dynamic _redirecting# = <dynamic>[self::A::•];
const constructor empty() → self::A*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_8.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_8.yaml.world.1.expect
index 309dfe4..cde35c2 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_8.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_8.yaml.world.1.expect
@@ -12,7 +12,7 @@
import "package:module/lib2.dart";
abstract class XSet extends dart.core::Object {
- static field dynamic _redirecting# = <dynamic>[lib1::XSet::identity];
+ static final field dynamic _redirecting# = <dynamic>[lib1::XSet::identity];
static factory identity() → lib1::XSet*
let dynamic #redirecting_factory = lib2::XLinkedHashSet::identity in invalid-expression;
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 field dynamic _redirecting# = <dynamic>[lib2::XLinkedHashSet::identity];
+ static final field dynamic _redirecting# = <dynamic>[lib2::XLinkedHashSet::identity];
static factory identity() → lib2::XLinkedHashSet*
let dynamic #redirecting_factory = lib3::XIdentityHashSet::• in invalid-expression;
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.1.expect
index 223e672..3b0a7e5 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.1.expect
@@ -9,7 +9,7 @@
//
class C extends dart.core::Object {
- static field dynamic _redirecting# = <dynamic>[lib::C::e4];
+ static final field dynamic _redirecting# = <dynamic>[lib::C::e4];
constructor •() → lib::C*
: super dart.core::Object::•()
;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.2.expect
index cb55d11..bec03e7 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.2.expect
@@ -9,7 +9,7 @@
//
class C extends dart.core::Object {
- static field dynamic _redirecting# = <dynamic>[lib::C::e4];
+ static final field dynamic _redirecting# = <dynamic>[lib::C::e4];
constructor •() → lib::C*
: super dart.core::Object::•()
;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.1.expect
index d40aeb92..d4fdb52 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.1.expect
@@ -45,7 +45,7 @@
return #C7;
}
class Bar extends fra::Widget /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[foo::Bar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[foo::Bar::•]/*isLegacy*/;
const constructor _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Bar
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
@@ -53,7 +53,7 @@
let dynamic #redirecting_factory = foo::Bar::_ in invalid-expression;
}
class Baz extends fra::Widget /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[foo::Baz::_]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[foo::Baz::_]/*isLegacy*/;
const constructor __({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.2.expect
index ec1cec8..5db0fd8 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.2.expect
@@ -45,7 +45,7 @@
return #C7;
}
class Bar extends fra::Widget /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[foo::Bar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[foo::Bar::•]/*isLegacy*/;
const constructor _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Bar
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
@@ -53,7 +53,7 @@
let dynamic #redirecting_factory = foo::Bar::_ in invalid-expression;
}
class Baz extends fra::Widget /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[foo::Baz::_]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[foo::Baz::_]/*isLegacy*/;
const constructor __({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.3.expect
index d40aeb92..d4fdb52 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform_const.yaml.world.3.expect
@@ -45,7 +45,7 @@
return #C7;
}
class Bar extends fra::Widget /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[foo::Bar::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[foo::Bar::•]/*isLegacy*/;
const constructor _({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Bar
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
@@ -53,7 +53,7 @@
let dynamic #redirecting_factory = foo::Bar::_ in invalid-expression;
}
class Baz extends fra::Widget /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[foo::Baz::_]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[foo::Baz::_]/*isLegacy*/;
const constructor __({wid::_Location? $creationLocationd_0dea112b090073317d4 = #C1}) → foo::Baz
: super fra::Widget::•($creationLocationd_0dea112b090073317d4: $creationLocationd_0dea112b090073317d4)
;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/issue_41976.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/issue_41976.yaml.world.1.expect
index aca5281..d9b1730 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/issue_41976.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/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 field dynamic _redirecting# = <dynamic>[foo::Key::•];
+ static final field dynamic _redirecting# = <dynamic>[foo::Key::•];
const constructor empty() → foo::Key*
: super dart.core::Object::•()
;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.1.expect
index 34e3fcb..5157f4f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/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 field dynamic _redirecting# = <dynamic>[lib1::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[lib1::Foo::•];
static factory •() → lib1::Foo*
let dynamic #redirecting_factory = lib2::Bar::• in invalid-expression;
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.2.expect
index eda724f..7eec56c 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/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 field dynamic _redirecting# = <dynamic>[lib1::Foo::•];
+ static final field dynamic _redirecting# = <dynamic>[lib1::Foo::•];
static factory •() → lib1::Foo*
let dynamic #redirecting_factory = lib2::Bar::• in invalid-expression;
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_30.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_30.yaml.world.1.expect
index 58431c8..b796916 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_30.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_30.yaml.world.1.expect
@@ -9,7 +9,7 @@
late static field dart.core::int? field9 = 42;
late static field dart.core::int? field10;
late static final field dart.core::int? field11 = 42;
- late static final field dart.core::int? field12;
+ late static final [setter] field dart.core::int? field12;
synthetic constructor •() → main::C
: super dart.core::Object::•()
;
@@ -17,7 +17,7 @@
late static field dart.core::int? field1 = 42;
late static field dart.core::int? field2;
late static final field dart.core::int? field3 = 42;
- late static final field dart.core::int? field4;
+ late static final [setter] field dart.core::int? field4;
static method main() → dynamic {
main::field1 = 43;
main::field2 = 42;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_30.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_30.yaml.world.2.expect
index f93a253..4fc4b62e 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_30.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_30.yaml.world.2.expect
@@ -9,7 +9,7 @@
late static field dart.core::int? field9 = 42;
late static field dart.core::int? field10;
late static final field dart.core::int? field11 = 42;
- late static final field dart.core::int? field12;
+ late static final [setter] field dart.core::int? field12;
synthetic constructor •() → main::C
: super dart.core::Object::•()
;
@@ -17,7 +17,7 @@
late static field dart.core::int? field1 = 42;
late static field dart.core::int? field2;
late static final field dart.core::int? field3 = 42;
- late static final field dart.core::int? field4;
+ late static final [setter] field dart.core::int? field4;
static method main() → dynamic {
main::field1 = 44;
main::field2 = 43;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_32.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_32.yaml.world.1.expect
index 4758b1b..6e4cb7b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_32.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_32.yaml.world.1.expect
@@ -15,11 +15,11 @@
late static field dart.core::int? field1 = 42;
late static field dart.core::int? field2;
late static final field dart.core::int? field3 = 42;
- late static final field dart.core::int? field4;
+ late static final [setter] field dart.core::int? field4;
late static field dart.core::int? _extension#0|field5 = 42;
late static field dart.core::int? _extension#0|field6;
late static final field dart.core::int? _extension#0|field7 = 42;
- late static final field dart.core::int? _extension#0|field8;
+ late static final [setter] field dart.core::int? _extension#0|field8;
static method main() → dynamic {
main::field1 = 43;
main::field2 = 42;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_32.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_32.yaml.world.2.expect
index a6ebd95..4e6c63f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_32.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_32.yaml.world.2.expect
@@ -15,11 +15,11 @@
late static field dart.core::int? field1 = 42;
late static field dart.core::int? field2;
late static final field dart.core::int? field3 = 42;
- late static final field dart.core::int? field4;
+ late static final [setter] field dart.core::int? field4;
late static field dart.core::int? _extension#0|field5 = 42;
late static field dart.core::int? _extension#0|field6;
late static final field dart.core::int? _extension#0|field7 = 42;
- late static final field dart.core::int? _extension#0|field8;
+ late static final [setter] field dart.core::int? _extension#0|field8;
static method main() → dynamic {
main::field1 = 44;
main::field2 = 43;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.outline.expect
index d1ddfdb..024beff 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[self::C::•];
abstract get t() → self::C::T*;
abstract set t(generic-covariant-impl self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.expect
index 431d27e..d10efba 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[self::C::•];
abstract get t() → self::C::T*;
abstract set t(generic-covariant-impl self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.transformed.expect
index 715e434..381acf8 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[self::C::•];
abstract get t() → self::C::T*;
abstract set t(generic-covariant-impl self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.outline.expect
index f616186..9f89adf 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[self::C::•];
abstract get t() → self::C::T*;
abstract set t(generic-covariant-impl self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.expect
index 522e51a..ac3f37a 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[self::C::•];
abstract get t() → self::C::T*;
abstract set t(generic-covariant-impl self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.transformed.expect
index c1e821e..9bae319 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class C<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::•];
+ static final field dynamic _redirecting# = <dynamic>[self::C::•];
abstract get t() → self::C::T*;
abstract set t(generic-covariant-impl self::C::T* x) → void;
static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.outline.expect
index dbb74c3..b2b3256 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.outline.expect
@@ -87,7 +87,7 @@
class A extends core::Object {
final field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
+ 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]) → self::A
;
constructor constructor2({core::int i}) → self::A
@@ -145,7 +145,7 @@
}
class C extends core::Object implements self::B {
field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
+ 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]) → self::C
;
constructor constructor2({core::int i}) → self::C
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.strong.expect
index 327d48b..176ff0d 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.strong.expect
@@ -103,7 +103,7 @@
class A extends core::Object {
final field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
+ 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
: self::A::i = i, super core::Object::•()
;
@@ -170,7 +170,7 @@
}
class C extends core::Object implements self::B {
field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
+ 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
: self::C::i = i, super core::Object::•()
;
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 d74b206..f25a954 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.strong.transformed.expect
@@ -103,7 +103,7 @@
class A extends core::Object {
final field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
+ 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
: self::A::i = i, super core::Object::•()
;
@@ -170,7 +170,7 @@
}
class C extends core::Object implements self::B {
field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
+ 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
: self::C::i = i, super core::Object::•()
;
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.expect
index 327d48b..176ff0d 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.expect
@@ -103,7 +103,7 @@
class A extends core::Object {
final field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
+ 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
: self::A::i = i, super core::Object::•()
;
@@ -170,7 +170,7 @@
}
class C extends core::Object implements self::B {
field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
+ 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
: self::C::i = i, super core::Object::•()
;
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 9e8520e..43212c4 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect
@@ -103,7 +103,7 @@
class A extends core::Object {
final field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::A::factory3, self::A::factory4, self::A::factory5, self::A::factory6, self::A::factory7]/*isLegacy*/;
+ 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
: self::A::i = i, super core::Object::•()
;
@@ -170,7 +170,7 @@
}
class C extends core::Object implements self::B {
field core::int i;
- static field dynamic _redirecting# = <dynamic>[self::C::factory3, self::C::factory4, self::C::factory5, self::C::factory6, self::C::factory7]/*isLegacy*/;
+ 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
: self::C::i = i, super core::Object::•()
;
diff --git a/pkg/front_end/testcases/nnbd/issue42844_1.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue42844_1.dart.outline.expect
index 1b6e3c7..08fff2c 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_1.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_1.dart.outline.expect
@@ -4,7 +4,7 @@
class C extends core::Object {
field Never n;
- static field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(Never n) → self::C
let dynamic #redirecting_factory = self::D::• in invalid-expression;
}
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 579f1e9..ed2262c 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 field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(Never n) → self::C
let dynamic #redirecting_factory = self::D::• in invalid-expression;
}
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 9bf278b..9ff052a 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 field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(Never n) → self::C
let<BottomType> #redirecting_factory = self::D::• in invalid-expression;
}
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 579f1e9..ed2262c 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 field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(Never n) → self::C
let dynamic #redirecting_factory = self::D::• in invalid-expression;
}
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 9bf278b..9ff052a 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 field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(Never n) → self::C
let<BottomType> #redirecting_factory = self::D::• in invalid-expression;
}
diff --git a/pkg/front_end/testcases/nnbd/issue42844_2.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue42844_2.dart.outline.expect
index b211f2f..afe3abd 100644
--- a/pkg/front_end/testcases/nnbd/issue42844_2.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42844_2.dart.outline.expect
@@ -4,7 +4,7 @@
class C extends core::Object {
final field dynamic n;
- static field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(dynamic n) → self::C
let dynamic #redirecting_factory = self::D::• in invalid-expression;
}
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 1a0f908..9f4202d 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 field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(dynamic n) → self::C
let dynamic #redirecting_factory = self::D::• in invalid-expression;
}
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 ba70d21..bb9f753 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 field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(dynamic n) → self::C
let<BottomType> #redirecting_factory = self::D::• in invalid-expression;
}
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 1a0f908..9f4202d 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 field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(dynamic n) → self::C
let dynamic #redirecting_factory = self::D::• in invalid-expression;
}
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 ba70d21..bb9f753 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 field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::•]/*isLegacy*/;
static factory •(dynamic n) → self::C
let<BottomType> #redirecting_factory = self::D::• in invalid-expression;
}
diff --git a/pkg/front_end/testcases/nnbd/issue43211.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue43211.dart.outline.expect
index 6cde1626..02689e0 100644
--- a/pkg/front_end/testcases/nnbd/issue43211.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue43211.dart.outline.expect
@@ -121,7 +121,7 @@
;
}
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor internal(dynamic _) → self::C
;
static factory redirect(self::A<self::A<Null>>? a) → 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 2119a28..39c2e9c 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 field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor internal(dynamic _) → self::C
: super core::Object::•() {
self::A<self::A<Null>>? a;
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 1eb8c28..f850b72 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 field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor internal(dynamic _) → self::C
: super core::Object::•() {
self::A<self::A<Null>>? a;
diff --git a/pkg/front_end/testcases/nnbd/issue43211.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43211.dart.weak.expect
index 2119a28..39c2e9c 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 field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor internal(dynamic _) → self::C
: super core::Object::•() {
self::A<self::A<Null>>? a;
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 1eb8c28..f850b72 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 field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor internal(dynamic _) → self::C
: super core::Object::•() {
self::A<self::A<Null>>? a;
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.outline.expect
index 83d2e51..ac7b8e7 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.outline.expect
@@ -16,7 +16,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor gen({core::int i}) → self::C
;
static factory fact({core::int i}) → self::C
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.strong.expect
index bcb7771..d62d171 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.strong.expect
@@ -16,7 +16,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor gen({core::int i = #C1}) → self::C
: super core::Object::•()
;
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 744265d..18f6cd7 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor gen({core::int i = #C1}) → self::C
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.expect
index bcb7771..d62d171 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.expect
@@ -16,7 +16,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor gen({core::int i = #C1}) → self::C
: super core::Object::•()
;
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 744265d..18f6cd7 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
import "dart:core" as core;
class C extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
constructor gen({core::int i = #C1}) → self::C
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/nnbd/issue43689.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue43689.dart.outline.expect
index 35b1c6f..e84a44f 100644
--- a/pkg/front_end/testcases/nnbd/issue43689.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue43689.dart.outline.expect
@@ -12,7 +12,7 @@
import self as self;
import "dart:core" as core;
-late static final field core::int y;
+late static final [setter] field core::int y;
static method test() → dynamic
;
static method main() → dynamic
diff --git a/pkg/front_end/testcases/nnbd/issue43689.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43689.dart.strong.expect
index 64c8656..bee2422 100644
--- a/pkg/front_end/testcases/nnbd/issue43689.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue43689.dart.strong.expect
@@ -26,7 +26,7 @@
import self as self;
import "dart:core" as core;
-late static final field core::int y;
+late static final [setter] field core::int y;
static method test() → dynamic {
late final core::int x;
late final core::int? x = invalid-expression "pkg/front_end/testcases/nnbd/issue43689.dart:10:19: Error: 'x' is already declared in this scope.
diff --git a/pkg/front_end/testcases/nnbd/issue43689.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43689.dart.strong.transformed.expect
index 4d8f37a..6fcf485 100644
--- a/pkg/front_end/testcases/nnbd/issue43689.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43689.dart.strong.transformed.expect
@@ -26,7 +26,7 @@
import self as self;
import "dart:core" as core;
-late static final field core::int y;
+late static final [setter] field core::int y;
static method test() → dynamic {
late final core::int x;
function #x#initializer() → core::int?
diff --git a/pkg/front_end/testcases/nnbd/issue43689.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43689.dart.weak.expect
index 64c8656..bee2422 100644
--- a/pkg/front_end/testcases/nnbd/issue43689.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue43689.dart.weak.expect
@@ -26,7 +26,7 @@
import self as self;
import "dart:core" as core;
-late static final field core::int y;
+late static final [setter] field core::int y;
static method test() → dynamic {
late final core::int x;
late final core::int? x = invalid-expression "pkg/front_end/testcases/nnbd/issue43689.dart:10:19: Error: 'x' is already declared in this scope.
diff --git a/pkg/front_end/testcases/nnbd/issue43689.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43689.dart.weak.transformed.expect
index 4d8f37a..6fcf485 100644
--- a/pkg/front_end/testcases/nnbd/issue43689.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43689.dart.weak.transformed.expect
@@ -26,7 +26,7 @@
import self as self;
import "dart:core" as core;
-late static final field core::int y;
+late static final [setter] field core::int y;
static method test() → dynamic {
late final core::int x;
function #x#initializer() → core::int?
diff --git a/pkg/front_end/testcases/nnbd/issue43918.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue43918.dart.outline.expect
index 9bff7b0..1b9a3e0 100644
--- a/pkg/front_end/testcases/nnbd/issue43918.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue43918.dart.outline.expect
@@ -3,7 +3,7 @@
import "dart:core" as core;
abstract class A<T extends core::Object? = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
let dynamic #redirecting_factory = self::_A::• in let self::A::•::T% #typeArg0 = null in invalid-expression;
}
@@ -12,7 +12,7 @@
;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
let dynamic #redirecting_factory = self::_B::• in let self::B::•::T% #typeArg0 = null in invalid-expression;
}
diff --git a/pkg/front_end/testcases/nnbd/issue43918.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43918.dart.strong.expect
index 33ae9c2..152826c 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 field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
let dynamic #redirecting_factory = self::_A::• in let self::A::•::T% #typeArg0 = null in invalid-expression;
}
@@ -13,7 +13,7 @@
;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
let dynamic #redirecting_factory = self::_B::• in let self::B::•::T% #typeArg0 = null in invalid-expression;
}
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 1669379..c6913c5 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 field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
let<BottomType> #redirecting_factory = self::_A::• in let self::A::•::T% #typeArg0 = null in invalid-expression;
}
@@ -13,7 +13,7 @@
;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
let<BottomType> #redirecting_factory = self::_B::• in let self::B::•::T% #typeArg0 = null in invalid-expression;
}
diff --git a/pkg/front_end/testcases/nnbd/issue43918.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43918.dart.weak.expect
index 33ae9c2..152826c 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 field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
let dynamic #redirecting_factory = self::_A::• in let self::A::•::T% #typeArg0 = null in invalid-expression;
}
@@ -13,7 +13,7 @@
;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
let dynamic #redirecting_factory = self::_B::• in let self::B::•::T% #typeArg0 = null in invalid-expression;
}
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 1669379..c6913c5 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 field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
let<BottomType> #redirecting_factory = self::_A::• in let self::A::•::T% #typeArg0 = null in invalid-expression;
}
@@ -13,7 +13,7 @@
;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
let<BottomType> #redirecting_factory = self::_B::• in let self::B::•::T% #typeArg0 = null in invalid-expression;
}
diff --git a/pkg/front_end/testcases/nnbd/late.dart.outline.expect b/pkg/front_end/testcases/nnbd/late.dart.outline.expect
index 414a031..4800daf 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.outline.expect
@@ -10,8 +10,8 @@
late field self::Class lateInstanceFieldThis;
late final field self::Class lateFinalInstanceFieldThis;
late static field core::int lateStaticField;
- late static final field core::int lateFinalStaticField1;
- late static final field core::int lateFinalStaticField2;
+ late static final [setter] field core::int lateFinalStaticField1;
+ late static final [setter] field core::int lateFinalStaticField2;
late static final field core::int lateFinalStaticFieldWithInit;
synthetic constructor •() → self::Class
;
@@ -21,7 +21,7 @@
;
}
late static field core::int lateTopLevelField;
-late static final field core::int lateFinalTopLevelField;
+late static final [setter] field core::int lateFinalTopLevelField;
late static final field core::int lateFinalTopLevelFieldWithInit;
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/nnbd/late.dart.strong.expect b/pkg/front_end/testcases/nnbd/late.dart.strong.expect
index 4c32d9b..eaf8c2c 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.strong.expect
@@ -41,8 +41,8 @@
late field self::Class lateInstanceFieldThis = this;
late final field self::Class lateFinalInstanceFieldThis = this;
late static field core::int lateStaticField;
- late static final field core::int lateFinalStaticField1;
- late static final field core::int lateFinalStaticField2;
+ late static final [setter] field core::int lateFinalStaticField1;
+ late static final [setter] field core::int lateFinalStaticField2;
late static final field core::int lateFinalStaticFieldWithInit = 0;
synthetic constructor •() → self::Class
: super core::Object::•()
@@ -74,7 +74,7 @@
}
}
late static field core::int lateTopLevelField;
-late static final field core::int lateFinalTopLevelField;
+late static final [setter] field core::int lateFinalTopLevelField;
late static final field core::int lateFinalTopLevelFieldWithInit = 0;
static method main() → dynamic {}
static method noErrors() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/late.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/late.dart.strong.transformed.expect
index 4c32d9b..eaf8c2c 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.strong.transformed.expect
@@ -41,8 +41,8 @@
late field self::Class lateInstanceFieldThis = this;
late final field self::Class lateFinalInstanceFieldThis = this;
late static field core::int lateStaticField;
- late static final field core::int lateFinalStaticField1;
- late static final field core::int lateFinalStaticField2;
+ late static final [setter] field core::int lateFinalStaticField1;
+ late static final [setter] field core::int lateFinalStaticField2;
late static final field core::int lateFinalStaticFieldWithInit = 0;
synthetic constructor •() → self::Class
: super core::Object::•()
@@ -74,7 +74,7 @@
}
}
late static field core::int lateTopLevelField;
-late static final field core::int lateFinalTopLevelField;
+late static final [setter] field core::int lateFinalTopLevelField;
late static final field core::int lateFinalTopLevelFieldWithInit = 0;
static method main() → dynamic {}
static method noErrors() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/late.dart.weak.expect b/pkg/front_end/testcases/nnbd/late.dart.weak.expect
index 4c32d9b..eaf8c2c 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.weak.expect
@@ -41,8 +41,8 @@
late field self::Class lateInstanceFieldThis = this;
late final field self::Class lateFinalInstanceFieldThis = this;
late static field core::int lateStaticField;
- late static final field core::int lateFinalStaticField1;
- late static final field core::int lateFinalStaticField2;
+ late static final [setter] field core::int lateFinalStaticField1;
+ late static final [setter] field core::int lateFinalStaticField2;
late static final field core::int lateFinalStaticFieldWithInit = 0;
synthetic constructor •() → self::Class
: super core::Object::•()
@@ -74,7 +74,7 @@
}
}
late static field core::int lateTopLevelField;
-late static final field core::int lateFinalTopLevelField;
+late static final [setter] field core::int lateFinalTopLevelField;
late static final field core::int lateFinalTopLevelFieldWithInit = 0;
static method main() → dynamic {}
static method noErrors() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/late.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/late.dart.weak.transformed.expect
index 4c32d9b..eaf8c2c 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.weak.transformed.expect
@@ -41,8 +41,8 @@
late field self::Class lateInstanceFieldThis = this;
late final field self::Class lateFinalInstanceFieldThis = this;
late static field core::int lateStaticField;
- late static final field core::int lateFinalStaticField1;
- late static final field core::int lateFinalStaticField2;
+ late static final [setter] field core::int lateFinalStaticField1;
+ late static final [setter] field core::int lateFinalStaticField2;
late static final field core::int lateFinalStaticFieldWithInit = 0;
synthetic constructor •() → self::Class
: super core::Object::•()
@@ -74,7 +74,7 @@
}
}
late static field core::int lateTopLevelField;
-late static final field core::int lateFinalTopLevelField;
+late static final [setter] field core::int lateFinalTopLevelField;
late static final field core::int lateFinalTopLevelFieldWithInit = 0;
static method main() → dynamic {}
static method noErrors() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.outline.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.outline.expect
index a3f0156..ece5e4e 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.outline.expect
@@ -62,7 +62,7 @@
;
}
class C1 extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
static factory •() → self::C1
let dynamic #redirecting_factory = self::C2::• in let core::int? #typeArg0 = null in invalid-expression;
}
@@ -71,7 +71,7 @@
;
}
class D extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
constructor foo(core::num x) → self::D
;
static factory bar(core::num? x) → self::D
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 5ca1bf7..6721314 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 field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
static factory •() → self::C1
let dynamic #redirecting_factory = self::C2::• in let core::int? #typeArg0 = null in invalid-expression;
}
@@ -72,7 +72,7 @@
;
}
class D extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
constructor foo(core::num x) → self::D
: super core::Object::•()
;
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 de6bd24..730260d 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 field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
static factory •() → self::C1
let<BottomType> #redirecting_factory = self::C2::• in let core::int? #typeArg0 = null in invalid-expression;
}
@@ -72,7 +72,7 @@
;
}
class D extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
constructor foo(core::num x) → self::D
: super core::Object::•()
;
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 5ca1bf7..6721314 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 field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
static factory •() → self::C1
let dynamic #redirecting_factory = self::C2::• in let core::int? #typeArg0 = null in invalid-expression;
}
@@ -72,7 +72,7 @@
;
}
class D extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
constructor foo(core::num x) → self::D
: super core::Object::•()
;
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 de6bd24..730260d 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 field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::C1::•]/*isLegacy*/;
static factory •() → self::C1
let<BottomType> #redirecting_factory = self::C2::• in let core::int? #typeArg0 = null in invalid-expression;
}
@@ -72,7 +72,7 @@
;
}
class D extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
constructor foo(core::num x) → self::D
: super core::Object::•()
;
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 f65c944..0b8191f 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? = core::Object?> extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::Class1::redirect, opt::Class1::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class1::redirect, opt::Class1::constRedirect]/*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 = core::Object> extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::Class2::redirect, opt::Class2::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class2::redirect, opt::Class2::constRedirect]/*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 = core::String> extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::Class3::redirect, opt::Class3::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class3::redirect, opt::Class3::constRedirect]/*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 field dynamic _redirecting# = <dynamic>[opt::Class4::redirect, opt::Class4::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class4::redirect, opt::Class4::constRedirect]/*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 = dynamic> extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::Class5::redirect, opt::Class5::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class5::redirect, opt::Class5::constRedirect]/*isLegacy*/;
const constructor _() → opt::Class5<opt::Class5::T%>
: super core::Object::•()
;
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 69cdbba..5e2ac0e 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? = core::Object?> extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::Class1::redirect, opt::Class1::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class1::redirect, opt::Class1::constRedirect]/*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 = core::Object> extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::Class2::redirect, opt::Class2::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class2::redirect, opt::Class2::constRedirect]/*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 = core::String> extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::Class3::redirect, opt::Class3::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class3::redirect, opt::Class3::constRedirect]/*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 field dynamic _redirecting# = <dynamic>[opt::Class4::redirect, opt::Class4::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class4::redirect, opt::Class4::constRedirect]/*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 = dynamic> extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::Class5::redirect, opt::Class5::constRedirect]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::Class5::redirect, opt::Class5::constRedirect]/*isLegacy*/;
const constructor _() → opt::Class5<opt::Class5::T%>
: super 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 d622191..c6752be 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 = core::Object> extends opt::P<opt::CP::T> /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::CP::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::CP::•]/*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 = core::Object> extends opt::P<opt::VP::T> /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::VP::forToken]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::VP::forToken]/*isLegacy*/;
const constructor _(core::Object token, opt::VP::T useValue) → opt::VP<opt::VP::T>
: super opt::P::_(token)
;
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 94dea11..8534130 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 = core::Object> extends opt::P<opt::CP::T> /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::CP::•]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::CP::•]/*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 = core::Object> extends opt::P<opt::VP::T> /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[opt::VP::forToken]/*isLegacy*/;
+ static final field dynamic _redirecting# = <dynamic>[opt::VP::forToken]/*isLegacy*/;
const constructor _(core::Object token, opt::VP::T useValue) → opt::VP<opt::VP::T>
: super opt::P::_(token)
;
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
index 5d4096c..11d42be 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
@@ -73,7 +73,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class D extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::D::•];
+ static final field dynamic _redirecting# = <dynamic>[self::D::•];
static factory •() → self::D*
let dynamic #redirecting_factory = "Missing" in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect
index 45530e7..6c4e211 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect
@@ -75,7 +75,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class D extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::D::•];
+ static final field dynamic _redirecting# = <dynamic>[self::D::•];
static factory •() → self::D*
let dynamic #redirecting_factory = "Missing" in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect
index fd64249..3915deb 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect
@@ -75,7 +75,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class D extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::D::•];
+ static final field dynamic _redirecting# = <dynamic>[self::D::•];
static factory •() → self::D*
let core::String* #redirecting_factory = "Missing" in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/rasta/generic_factory.dart.outline.expect b/pkg/front_end/testcases/rasta/generic_factory.dart.outline.expect
index 26382b9..7dad5eb 100644
--- a/pkg/front_end/testcases/rasta/generic_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/generic_factory.dart.outline.expect
@@ -70,7 +70,7 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class A<T extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
+ static final field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
constructor internal() → self::A<self::A::T*>*
;
static factory a<T extends core::Object* = dynamic>() → self::A<self::A::a::T*>*
@@ -91,7 +91,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 field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
+ static final field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
constructor internal() → self::B<self::B::S*>*
;
static factory a<S extends core::Object* = dynamic>() → self::B<self::B::a::S*>*
diff --git a/pkg/front_end/testcases/rasta/generic_factory.dart.strong.expect b/pkg/front_end/testcases/rasta/generic_factory.dart.strong.expect
index 2b4efa6..e0f9879 100644
--- a/pkg/front_end/testcases/rasta/generic_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/generic_factory.dart.strong.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 field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
+ static final field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
constructor internal() → self::A<self::A::T*>*
: super core::Object::•()
;
@@ -95,7 +95,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 field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
+ static final field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
constructor internal() → self::B<self::B::S*>*
: super self::A::internal()
;
diff --git a/pkg/front_end/testcases/rasta/generic_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/generic_factory.dart.strong.transformed.expect
index 20f6d97..2f7e9b4 100644
--- a/pkg/front_end/testcases/rasta/generic_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/generic_factory.dart.strong.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 field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
+ static final field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
constructor internal() → self::A<self::A::T*>*
: super core::Object::•()
;
@@ -95,7 +95,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 field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
+ static final field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
constructor internal() → self::B<self::B::S*>*
: super self::A::internal()
;
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.outline.expect
index 2c5c77a..f560daf 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.outline.expect
@@ -29,7 +29,7 @@
import "dart:core" as core;
class C extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[self::C::good];
+ static final field dynamic _redirecting# = <dynamic>[self::C::good];
const constructor constant() → self::C*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
index 51b05df..946925a 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
@@ -63,7 +63,7 @@
import "dart:core" as core;
class C extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[self::C::good];
+ static final field dynamic _redirecting# = <dynamic>[self::C::good];
const constructor constant() → self::C*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
index 1ae5647..eec7e67 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
@@ -63,7 +63,7 @@
import "dart:core" as core;
class C extends core::Object /*hasConstConstructor*/ {
- static field dynamic _redirecting# = <dynamic>[self::C::good];
+ static final field dynamic _redirecting# = <dynamic>[self::C::good];
const constructor constant() → self::C*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.outline.expect
index aeefc63..7f34682 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.outline.expect
@@ -5,7 +5,7 @@
import "package:expect/expect.dart";
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::foo];
+ static final field dynamic _redirecting# = <dynamic>[self::A::foo];
constructor •() → self::A*
;
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 field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[self::C::bar];
constructor •() → self::C*
;
static factory bar() → self::C*
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.strong.expect
index 3cd7551..72b1c0e 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.strong.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::foo];
+ static final field dynamic _redirecting# = <dynamic>[self::A::foo];
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 field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[self::C::bar];
constructor •() → self::C*
: super self::A::•() {}
static factory bar() → self::C*
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.strong.transformed.expect
index e13110b..5286a47 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
import "package:expect/expect.dart";
class A extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::A::foo];
+ static final field dynamic _redirecting# = <dynamic>[self::A::foo];
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 field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[self::C::bar];
constructor •() → self::C*
: super self::A::•() {}
static factory bar() → self::C*
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.outline.expect b/pkg/front_end/testcases/regress/issue_35259.dart.outline.expect
index b4d8b6a..3c59d21 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.outline.expect
@@ -29,7 +29,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
static factory •() → self::Supertype*
let dynamic #redirecting_factory = "Unresolved" in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.strong.expect b/pkg/front_end/testcases/regress/issue_35259.dart.strong.expect
index 02e273c..c62b784 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.strong.expect
@@ -33,7 +33,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
static factory •() → self::Supertype*
let dynamic #redirecting_factory = "Unresolved" in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_35259.dart.strong.transformed.expect
index 0764eb8..a6ad0e6 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.strong.transformed.expect
@@ -33,7 +33,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
static factory •() → self::Supertype*
let core::String* #redirecting_factory = "Unresolved" in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.outline.expect b/pkg/front_end/testcases/regress/issue_35260.dart.outline.expect
index 093fce3..474004e 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.outline.expect
@@ -13,7 +13,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
static factory •() → self::Supertype*
let dynamic #redirecting_factory = self::X::• in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.strong.expect b/pkg/front_end/testcases/regress/issue_35260.dart.strong.expect
index efed883..3552933 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.strong.expect
@@ -17,7 +17,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
static factory •() → self::Supertype*
let dynamic #redirecting_factory = self::X::• in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_35260.dart.strong.transformed.expect
index 4101dff..414ead9ad 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
import "dart:core" as core;
class Supertype extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
+ static final field dynamic _redirecting# = <dynamic>[self::Supertype::•];
static factory •() → self::Supertype*
let<BottomType> #redirecting_factory = self::X::• in invalid-expression;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.outline.expect b/pkg/front_end/testcases/regress/issue_35266.dart.outline.expect
index e10101e..7f77682 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.outline.expect
@@ -17,14 +17,14 @@
import "dart:core" as core;
class B<T extends core::Object* = dynamic> extends self::C<self::B::T*> {
- static field dynamic _redirecting# = <dynamic>[self::B::foo];
+ static final field dynamic _redirecting# = <dynamic>[self::B::foo];
constructor •() → self::B<self::B::T*>*
;
static factory foo<T extends core::Object* = dynamic>() → self::B<self::B::foo::T*>*
let dynamic #redirecting_factory = self::B::• in let self::B::foo::T* #typeArg0 = null in invalid-expression;
}
class C<K extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[self::C::bar];
constructor •() → self::C<self::C::K*>*
;
static factory bar<K extends core::Object* = dynamic>() → self::C<self::C::bar::K*>*
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.strong.expect b/pkg/front_end/testcases/regress/issue_35266.dart.strong.expect
index cf588f4..698e95b 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.strong.expect
@@ -17,7 +17,7 @@
import "dart:core" as core;
class B<T extends core::Object* = dynamic> extends self::C<self::B::T*> {
- static field dynamic _redirecting# = <dynamic>[self::B::foo];
+ static final field dynamic _redirecting# = <dynamic>[self::B::foo];
constructor •() → self::B<self::B::T*>*
: super self::C::•()
;
@@ -25,7 +25,7 @@
let dynamic #redirecting_factory = self::B::• in let self::B::foo::T* #typeArg0 = null in invalid-expression;
}
class C<K extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[self::C::bar];
constructor •() → self::C<self::C::K*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_35266.dart.strong.transformed.expect
index 3d0f980..fd62e94 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.strong.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 field dynamic _redirecting# = <dynamic>[self::B::foo];
+ static final field dynamic _redirecting# = <dynamic>[self::B::foo];
constructor •() → self::B<self::B::T*>*
: super self::C::•()
;
@@ -25,7 +25,7 @@
let<BottomType> #redirecting_factory = self::B::• in let self::B::foo::T* #typeArg0 = null in invalid-expression;
}
class C<K extends core::Object* = dynamic> extends core::Object {
- static field dynamic _redirecting# = <dynamic>[self::C::bar];
+ static final field dynamic _redirecting# = <dynamic>[self::C::bar];
constructor •() → self::C<self::C::K*>*
: super core::Object::•()
;
diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md
index 2bfc380..5d4561b 100644
--- a/pkg/kernel/binary.md
+++ b/pkg/kernel/binary.md
@@ -147,7 +147,7 @@
type ComponentFile {
UInt32 magic = 0x90ABCDEF;
- UInt32 formatVersion = 53;
+ UInt32 formatVersion = 54;
Byte[10] shortSdkHash;
List<String> problemsAsJson; // Described in problems.md.
Library[] libraries;
@@ -363,8 +363,8 @@
UriReference fileUri;
FileOffset fileOffset;
FileOffset fileEndOffset;
- UInt flags (isFinal, isConst, isStatic, hasImplicitGetter, hasImplicitSetter,
- isCovariant, isGenericCovariantImpl, isLate, isExtensionMember,
+ UInt flags (isFinal, isConst, isStatic, isCovariant,
+ isGenericCovariantImpl, isLate, isExtensionMember,
isNonNullableByDefault, isInternalImplementation);
Name name;
List<Expression> annotations;
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index 848510b..2a27865 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -545,9 +545,11 @@
for (int i = 0; i < fields.length; ++i) {
Field field = fields[i];
canonicalName.getChildFromField(field).bindTo(field.getterReference);
- canonicalName
- .getChildFromFieldSetter(field)
- .bindTo(field.setterReference);
+ if (field.hasSetter) {
+ canonicalName
+ .getChildFromFieldSetter(field)
+ .bindTo(field.setterReference);
+ }
}
for (int i = 0; i < procedures.length; ++i) {
Procedure member = procedures[i];
@@ -1192,9 +1194,11 @@
for (int i = 0; i < fields.length; ++i) {
Field member = fields[i];
canonicalName.getChildFromField(member).bindTo(member.getterReference);
- canonicalName
- .getChildFromFieldSetter(member)
- .bindTo(member.setterReference);
+ if (member.hasSetter) {
+ canonicalName
+ .getChildFromFieldSetter(member)
+ .bindTo(member.setterReference);
+ }
}
for (int i = 0; i < procedures.length; ++i) {
Procedure member = procedures[i];
@@ -1683,26 +1687,42 @@
CanonicalName get getterCanonicalName => getterReference?.canonicalName;
CanonicalName get setterCanonicalName => setterReference?.canonicalName;
- Field(Name name,
+ Field.mutable(Name name,
+ {this.type: const DynamicType(),
+ this.initializer,
+ bool isCovariant: false,
+ bool isFinal: false,
+ bool isStatic: false,
+ bool isLate: false,
+ int transformerFlags: 0,
+ Uri fileUri,
+ Reference getterReference,
+ Reference setterReference})
+ : this.setterReference = setterReference ?? new Reference(),
+ super(name, fileUri, getterReference) {
+ this.setterReference.node = this;
+ assert(type != null);
+ initializer?.parent = this;
+ this.isCovariant = isCovariant;
+ this.isFinal = isFinal;
+ this.isStatic = isStatic;
+ this.isLate = isLate;
+ this.transformerFlags = transformerFlags;
+ }
+
+ Field.immutable(Name name,
{this.type: const DynamicType(),
this.initializer,
bool isCovariant: false,
bool isFinal: false,
bool isConst: false,
bool isStatic: false,
- bool hasImplicitGetter,
- bool hasImplicitSetter,
bool isLate: false,
int transformerFlags: 0,
Uri fileUri,
- Reference getterReference,
- Reference setterReference})
- :
- // TODO(jensj): Maybe don't create one for final fields?
- // ('final' is a mutable setting though).
- this.setterReference = setterReference ?? new Reference(),
+ Reference getterReference})
+ : this.setterReference = null,
super(name, fileUri, getterReference) {
- this.setterReference.node = this;
assert(type != null);
initializer?.parent = this;
this.isCovariant = isCovariant;
@@ -1710,31 +1730,26 @@
this.isConst = isConst;
this.isStatic = isStatic;
this.isLate = isLate;
- this.hasImplicitGetter = hasImplicitGetter ?? !isStatic;
- this.hasImplicitSetter = hasImplicitSetter ??
- (!isStatic &&
- !isConst &&
- (!isFinal || (isLate && initializer == null)));
this.transformerFlags = transformerFlags;
}
@override
void _relinkNode() {
super._relinkNode();
- this.setterReference.node = this;
+ if (hasSetter) {
+ this.setterReference.node = this;
+ }
}
static const int FlagFinal = 1 << 0; // Must match serialized bit positions.
static const int FlagConst = 1 << 1;
static const int FlagStatic = 1 << 2;
- static const int FlagHasImplicitGetter = 1 << 3;
- static const int FlagHasImplicitSetter = 1 << 4;
- static const int FlagCovariant = 1 << 5;
- static const int FlagGenericCovariantImpl = 1 << 6;
- static const int FlagLate = 1 << 7;
- static const int FlagExtensionMember = 1 << 8;
- static const int FlagNonNullableByDefault = 1 << 9;
- static const int FlagInternalImplementation = 1 << 10;
+ static const int FlagCovariant = 1 << 3;
+ static const int FlagGenericCovariantImpl = 1 << 4;
+ static const int FlagLate = 1 << 5;
+ static const int FlagExtensionMember = 1 << 6;
+ static const int FlagNonNullableByDefault = 1 << 7;
+ static const int FlagInternalImplementation = 1 << 8;
/// Whether the field is declared with the `covariant` keyword.
bool get isCovariant => flags & FlagCovariant != 0;
@@ -1746,26 +1761,6 @@
@override
bool get isExtensionMember => flags & FlagExtensionMember != 0;
- /// If true, a getter should be generated for this field.
- ///
- /// If false, there may or may not exist an explicit getter in the same class
- /// with the same name as the field.
- ///
- /// By default, all non-static fields have implicit getters.
- bool get hasImplicitGetter => flags & FlagHasImplicitGetter != 0;
-
- /// If true, a setter should be generated for this field.
- ///
- /// If false, there may or may not exist an explicit setter in the same class
- /// with the same name as the field.
- ///
- /// Final fields never have implicit setters, but a field without an implicit
- /// setter is not necessarily final, as it may be mutated by direct field
- /// access.
- ///
- /// By default, all non-static, non-final fields have implicit setters.
- bool get hasImplicitSetter => flags & FlagHasImplicitSetter != 0;
-
/// Indicates whether the implicit setter associated with this field needs to
/// contain a runtime type check to deal with generic covariance.
///
@@ -1804,18 +1799,6 @@
value ? (flags | FlagExtensionMember) : (flags & ~FlagExtensionMember);
}
- void set hasImplicitGetter(bool value) {
- flags = value
- ? (flags | FlagHasImplicitGetter)
- : (flags & ~FlagHasImplicitGetter);
- }
-
- void set hasImplicitSetter(bool value) {
- flags = value
- ? (flags | FlagHasImplicitSetter)
- : (flags & ~FlagHasImplicitSetter);
- }
-
void set isGenericCovariantImpl(bool value) {
flags = value
? (flags | FlagGenericCovariantImpl)
@@ -1832,11 +1815,9 @@
: (flags & ~FlagInternalImplementation);
}
- /// True if the field is neither final nor const.
- bool get isMutable => flags & (FlagFinal | FlagConst) == 0;
bool get isInstanceMember => !isStatic;
bool get hasGetter => true;
- bool get hasSetter => isMutable || isLate && initializer == null;
+ bool get hasSetter => setterReference != null;
bool get isExternal => false;
void set isExternal(bool value) {
diff --git a/pkg/kernel/lib/binary/ast_from_binary.dart b/pkg/kernel/lib/binary/ast_from_binary.dart
index 37498a5..7cac5f5 100644
--- a/pkg/kernel/lib/binary/ast_from_binary.dart
+++ b/pkg/kernel/lib/binary/ast_from_binary.dart
@@ -1361,14 +1361,18 @@
CanonicalName getterCanonicalName = readCanonicalNameReference();
Reference getterReference = getterCanonicalName.getReference();
CanonicalName setterCanonicalName = readCanonicalNameReference();
- Reference setterReference = setterCanonicalName.getReference();
+ Reference setterReference = setterCanonicalName?.getReference();
Field node = getterReference.node;
if (alwaysCreateNewNamedNodes) {
node = null;
}
if (node == null) {
- node = new Field(null,
- getterReference: getterReference, setterReference: setterReference);
+ if (setterReference != null) {
+ node = new Field.mutable(null,
+ getterReference: getterReference, setterReference: setterReference);
+ } else {
+ node = new Field.immutable(null, getterReference: getterReference);
+ }
}
Uri fileUri = readUriReference();
int fileOffset = readOffset();
diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart
index 6c09178..277259f 100644
--- a/pkg/kernel/lib/binary/ast_to_binary.dart
+++ b/pkg/kernel/lib/binary/ast_to_binary.dart
@@ -1260,13 +1260,20 @@
@override
void visitField(Field node) {
- if (node.getterCanonicalName == null || node.setterCanonicalName == null) {
+ if (node.getterCanonicalName == null) {
+ throw new ArgumentError('Missing canonical name for $node');
+ }
+ if (node.hasSetter && node.setterCanonicalName == null) {
throw new ArgumentError('Missing canonical name for $node');
}
enterScope(memberScope: true);
writeByte(Tag.Field);
writeNonNullCanonicalNameReference(getCanonicalNameOfMemberGetter(node));
- writeNonNullCanonicalNameReference(getCanonicalNameOfMemberSetter(node));
+ if (node.hasSetter) {
+ writeNonNullCanonicalNameReference(getCanonicalNameOfMemberSetter(node));
+ } else {
+ writeNullAllowedReference(null);
+ }
writeUriReference(node.fileUri);
writeOffset(node.fileOffset);
writeOffset(node.fileEndOffset);
diff --git a/pkg/kernel/lib/binary/tag.dart b/pkg/kernel/lib/binary/tag.dart
index 6c9b2c1..8e32adb 100644
--- a/pkg/kernel/lib/binary/tag.dart
+++ b/pkg/kernel/lib/binary/tag.dart
@@ -172,7 +172,7 @@
/// Internal version of kernel binary format.
/// Bump it when making incompatible changes in kernel binaries.
/// Keep in sync with runtime/vm/kernel_binary.h, pkg/kernel/binary.md.
- static const int BinaryFormatVersion = 53;
+ static const int BinaryFormatVersion = 54;
}
abstract class ConstantTag {
diff --git a/pkg/kernel/lib/canonical_name.dart b/pkg/kernel/lib/canonical_name.dart
index 281309b..a5d6446 100644
--- a/pkg/kernel/lib/canonical_name.dart
+++ b/pkg/kernel/lib/canonical_name.dart
@@ -192,6 +192,9 @@
}
void bindTo(Reference target) {
+ if (target == null) {
+ throw '$this cannot be bound to null';
+ }
if (reference == target) return;
if (reference != null) {
throw '$this is already bound';
diff --git a/pkg/kernel/lib/class_hierarchy.dart b/pkg/kernel/lib/class_hierarchy.dart
index f37ebd4..5a78b48 100644
--- a/pkg/kernel/lib/class_hierarchy.dart
+++ b/pkg/kernel/lib/class_hierarchy.dart
@@ -1234,10 +1234,10 @@
}
for (Field field in classNode.fields) {
if (field.isStatic) continue;
- if (!setters && field.hasImplicitGetter) {
+ if (!setters) {
memberMap[field.name] = field;
}
- if (setters && field.hasImplicitSetter) {
+ if (setters && field.hasSetter) {
memberMap[field.name] = field;
}
}
diff --git a/pkg/kernel/lib/clone.dart b/pkg/kernel/lib/clone.dart
index 2445693..4158c39 100644
--- a/pkg/kernel/lib/clone.dart
+++ b/pkg/kernel/lib/clone.dart
@@ -774,20 +774,28 @@
final Uri activeFileUriSaved = _activeFileUri;
_activeFileUri = node.fileUri ?? _activeFileUri;
- Field result = new Field(node.name,
- type: visitType(node.type),
- initializer: cloneOptional(node.initializer),
- isCovariant: node.isCovariant,
- isFinal: node.isFinal,
- isConst: node.isConst,
- isStatic: node.isStatic,
- isLate: node.isLate,
- hasImplicitGetter: node.hasImplicitGetter,
- hasImplicitSetter: node.hasImplicitSetter,
- transformerFlags: node.transformerFlags,
- fileUri: _activeFileUri,
- getterReference: getterReference,
- setterReference: setterReference)
+ Field result;
+ if (node.hasSetter) {
+ result = new Field.mutable(node.name,
+ type: visitType(node.type),
+ initializer: cloneOptional(node.initializer),
+ transformerFlags: node.transformerFlags,
+ fileUri: _activeFileUri,
+ getterReference: getterReference,
+ setterReference: setterReference);
+ } else {
+ assert(
+ setterReference == null,
+ "Cannot use setter reference $setterReference "
+ "for clone of an immutable field.");
+ result = new Field.immutable(node.name,
+ type: visitType(node.type),
+ initializer: cloneOptional(node.initializer),
+ transformerFlags: node.transformerFlags,
+ fileUri: _activeFileUri,
+ getterReference: getterReference);
+ }
+ result
..annotations = cloneAnnotations && !node.annotations.isEmpty
? node.annotations.map(super.clone).toList()
: const <Expression>[]
diff --git a/pkg/kernel/lib/text/ast_to_text.dart b/pkg/kernel/lib/text/ast_to_text.dart
index 91bc0c8..4bb32cc 100644
--- a/pkg/kernel/lib/text/ast_to_text.dart
+++ b/pkg/kernel/lib/text/ast_to_text.dart
@@ -1077,16 +1077,8 @@
writeModifier(node.isConst, 'const');
// Only show implicit getter/setter modifiers in cases where they are
// out of the ordinary.
- if (node.isStatic) {
- writeModifier(node.hasImplicitGetter, '[getter]');
- writeModifier(node.hasImplicitSetter, '[setter]');
- } else {
- writeModifier(!node.hasImplicitGetter, '[no-getter]');
- if (node.isFinal) {
- writeModifier(node.hasImplicitSetter, '[setter]');
- } else {
- writeModifier(!node.hasImplicitSetter, '[no-setter]');
- }
+ if (node.isFinal) {
+ writeModifier(node.hasSetter, '[setter]');
}
writeWord('field');
writeSpace();
diff --git a/pkg/kernel/lib/text/text_serializer.dart b/pkg/kernel/lib/text/text_serializer.dart
index a1c93ab..be1e4cf 100644
--- a/pkg/kernel/lib/text/text_serializer.dart
+++ b/pkg/kernel/lib/text/text_serializer.dart
@@ -1460,8 +1460,6 @@
Field.FlagFinal: "final",
Field.FlagConst: "const",
Field.FlagStatic: "static",
- Field.FlagHasImplicitGetter: "has-implicit-getter",
- Field.FlagHasImplicitSetter: "has-implicit-setter",
Field.FlagCovariant: "covariant",
Field.FlagGenericCovariantImpl: "generic-covariant-impl",
Field.FlagLate: "late",
@@ -1537,7 +1535,7 @@
String tag(Member node) {
if (node is Field) {
- return "field";
+ return node.hasSetter ? "mutable-field" : "immutable-field";
} else if (node is Constructor) {
return "constructor";
} else if (node is RedirectingFactoryConstructor) {
@@ -1563,10 +1561,18 @@
}
}
-TextSerializer<Field> fieldSerializer =
+TextSerializer<Field> mutableFieldSerializer =
Wrapped<Tuple4<Name, int, DartType, Expression>, Field>(
(w) => Tuple4(w.name, w.flags, w.type, w.initializer),
- (u) => Field(u.first, type: u.third, initializer: u.fourth)
+ (u) => Field.mutable(u.first, type: u.third, initializer: u.fourth)
+ ..flags = u.second,
+ Tuple4Serializer(nameSerializer, fieldFlagsSerializer,
+ dartTypeSerializer, Optional(expressionSerializer)));
+
+TextSerializer<Field> immutableFieldSerializer =
+ Wrapped<Tuple4<Name, int, DartType, Expression>, Field>(
+ (w) => Tuple4(w.name, w.flags, w.type, w.initializer),
+ (u) => Field.immutable(u.first, type: u.third, initializer: u.fourth)
..flags = u.second,
Tuple4Serializer(nameSerializer, fieldFlagsSerializer,
dartTypeSerializer, Optional(expressionSerializer)));
@@ -2191,7 +2197,8 @@
"local-fun": functionDeclarationSerializer,
});
memberSerializer.registerTags({
- "field": fieldSerializer,
+ "mutable-field": mutableFieldSerializer,
+ "immutable-field": immutableFieldSerializer,
"method": methodSerializer,
"getter": getterSerializer,
"setter": setterSerializer,
diff --git a/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart b/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart
index f68a5b6..0cdafba 100644
--- a/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart
+++ b/pkg/kernel/lib/transformations/track_widget_constructor_locations.dart
@@ -375,15 +375,12 @@
_locationFieldName,
_hasCreationLocationClass.enclosingLibrary,
);
- final Field locationField = new Field(fieldName,
+ final Field locationField = new Field.immutable(fieldName,
type:
new InterfaceType(_locationClass, clazz.enclosingLibrary.nullable),
isFinal: true,
getterReference: clazz.reference.canonicalName
?.getChildFromFieldWithName(fieldName)
- ?.reference,
- setterReference: clazz.reference.canonicalName
- ?.getChildFromFieldSetterWithName(fieldName)
?.reference);
clazz.addField(locationField);
diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart
index 0db1f2b..a4d4531 100644
--- a/pkg/kernel/lib/verifier.dart
+++ b/pkg/kernel/lib/verifier.dart
@@ -284,6 +284,27 @@
problem(node, "The const field '${node.name.text}' should be static",
context: node);
}
+ bool isImmutable = node.isLate
+ ? (node.isFinal && node.initializer != null)
+ : (node.isFinal || node.isConst);
+ if (isImmutable == node.hasSetter) {
+ if (node.hasSetter) {
+ problem(node,
+ "The immutable field '${node.name.text}' has a setter reference",
+ context: node);
+ } else {
+ if (isOutline && node.isLate) {
+ // TODO(johnniwinther): Should we add a flag on Field for having
+ // a declared initializer?
+ // The initializer is not included in the outline so we can't tell
+ // whether it has an initializer or not.
+ } else {
+ problem(node,
+ "The mutable field '${node.name.text}' has no setter reference",
+ context: node);
+ }
+ }
+ }
classTypeParametersAreInScope = !node.isStatic;
node.initializer?.accept(this);
node.type.accept(this);
diff --git a/pkg/kernel/test/class_hierarchy_test.dart b/pkg/kernel/test/class_hierarchy_test.dart
index bf078f8..8cfe61d 100644
--- a/pkg/kernel/test/class_hierarchy_test.dart
+++ b/pkg/kernel/test/class_hierarchy_test.dart
@@ -698,8 +698,8 @@
var abstractMethod = newEmptyMethod('abstractMethod', isAbstract: true);
var abstractGetter = newEmptyGetter('abstractGetter', isAbstract: true);
var abstractSetter = newEmptySetter('abstractSetter', isAbstract: true);
- var nonFinalField = new Field(new Name('nonFinalField'));
- var finalField = new Field(new Name('finalField'), isFinal: true);
+ var nonFinalField = new Field.mutable(new Name('nonFinalField'));
+ var finalField = new Field.immutable(new Name('finalField'), isFinal: true);
var a = addClass(new Class(
isAbstract: true,
name: 'A',
@@ -929,8 +929,8 @@
var abstractMethod = newEmptyMethod('abstractMethod', isAbstract: true);
var abstractGetter = newEmptyGetter('abstractGetter', isAbstract: true);
var abstractSetter = newEmptySetter('abstractSetter', isAbstract: true);
- var nonFinalField = new Field(new Name('nonFinalField'));
- var finalField = new Field(new Name('finalField'), isFinal: true);
+ var nonFinalField = new Field.mutable(new Name('nonFinalField'));
+ var finalField = new Field.immutable(new Name('finalField'), isFinal: true);
var a = addClass(new Class(
isAbstract: true,
name: 'A',
@@ -984,8 +984,8 @@
var abstractMethod = newEmptyMethod('abstractMethod', isAbstract: true);
var abstractGetter = newEmptyGetter('abstractGetter', isAbstract: true);
var abstractSetter = newEmptySetter('abstractSetter', isAbstract: true);
- var nonFinalField = new Field(new Name('nonFinalField'));
- var finalField = new Field(new Name('finalField'), isFinal: true);
+ var nonFinalField = new Field.mutable(new Name('nonFinalField'));
+ var finalField = new Field.immutable(new Name('finalField'), isFinal: true);
var a = addClass(new Class(name: 'A', supertype: objectSuper, fields: [
nonFinalField,
@@ -1049,13 +1049,15 @@
var method_a = newEmptyMethod('method');
var getter_a = newEmptyGetter('getter');
var setter_a = newEmptySetter('setter');
- var nonFinalField_a = new Field(new Name('nonFinalField'));
- var finalField_a = new Field(new Name('finalField'), isFinal: true);
+ var nonFinalField_a = new Field.mutable(new Name('nonFinalField'));
+ var finalField_a =
+ new Field.immutable(new Name('finalField'), isFinal: true);
var method_b = newEmptyMethod('method');
var getter_b = newEmptyGetter('getter');
var setter_b = newEmptySetter('setter');
- var nonFinalField_b = new Field(new Name('nonFinalField'));
- var finalField_b = new Field(new Name('finalField'), isFinal: true);
+ var nonFinalField_b = new Field.mutable(new Name('nonFinalField'));
+ var finalField_b =
+ new Field.immutable(new Name('finalField'), isFinal: true);
var a = addClass(new Class(
name: 'A',
@@ -1119,13 +1121,15 @@
var getter_a = newEmptyGetter('getter');
var setter_a = newEmptySetter('setter');
var nonShadowedSetter_a = newEmptySetter('nonShadowedSetter');
- var nonFinalField_a = new Field(new Name('nonFinalField'));
- var finalField_a = new Field(new Name('finalField'), isFinal: true);
+ var nonFinalField_a = new Field.mutable(new Name('nonFinalField'));
+ var finalField_a =
+ new Field.immutable(new Name('finalField'), isFinal: true);
var method_b = newEmptyMethod('method');
var getter_b = newEmptyGetter('getter');
var setter_b = newEmptySetter('setter');
- var nonFinalField_b = new Field(new Name('nonFinalField'));
- var finalField_b = new Field(new Name('finalField'), isFinal: true);
+ var nonFinalField_b = new Field.mutable(new Name('nonFinalField'));
+ var finalField_b =
+ new Field.immutable(new Name('finalField'), isFinal: true);
var a = addClass(new Class(name: 'A', supertype: objectSuper, fields: [
nonFinalField_a,
diff --git a/pkg/kernel/test/convert_field_to_setter_getter.dart b/pkg/kernel/test/convert_field_to_setter_getter.dart
index fc45c7b..6e0b797 100644
--- a/pkg/kernel/test/convert_field_to_setter_getter.dart
+++ b/pkg/kernel/test/convert_field_to_setter_getter.dart
@@ -10,7 +10,7 @@
main() {
final Library lib1 = new Library(Uri.parse('org-dartlang:///lib.dart'));
- final Field field = new Field(new Name("f"));
+ final Field field = new Field.mutable(new Name("f"));
lib1.addField(field);
final Block libProcedureBody = new Block([
new ExpressionStatement(new StaticSet(field, new IntLiteral(42))),
@@ -88,7 +88,7 @@
// Replace getter/setter with field.
lib1.procedures.remove(getter);
lib1.procedures.remove(setter);
- final Field fieldReplacement = new Field(new Name("f"),
+ final Field fieldReplacement = new Field.mutable(new Name("f"),
getterReference: getter.reference, setterReference: setter.reference);
// Important: Unbind any old canonical name
// (nulling out the canonical name is not enough, see above).
diff --git a/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart b/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart
index cd4ae4a..00d1973 100644
--- a/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart
+++ b/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart
@@ -119,7 +119,8 @@
serializer: statementSerializer);
}(),
() {
- Field field = new Field(new Name('field'), type: const DynamicType());
+ Field field =
+ new Field.immutable(new Name('field'), type: const DynamicType());
Library library = new Library(
new Uri(scheme: 'package', path: 'foo/bar.dart'),
fields: <Field>[field]);
@@ -136,7 +137,26 @@
serializer: statementSerializer);
}(),
() {
- Field field = new Field(new Name('field'), type: const DynamicType());
+ Field field =
+ new Field.mutable(new Name('field'), type: const DynamicType());
+ Library library = new Library(
+ new Uri(scheme: 'package', path: 'foo/bar.dart'),
+ fields: <Field>[field]);
+ Component component = new Component(libraries: <Library>[library]);
+ component.computeCanonicalNames();
+ return new TestCase<Statement>(
+ name: '/* suppose top-level: dynamic field; */ field;',
+ node: new ExpressionStatement(new StaticGet(field)),
+ expectation: ''
+ '(expr (get-static "package:foo/bar.dart::@fields::field"))',
+ makeSerializationState: () => new SerializationState(null),
+ makeDeserializationState: () =>
+ new DeserializationState(null, component.root),
+ serializer: statementSerializer);
+ }(),
+ () {
+ Field field =
+ new Field.mutable(new Name('field'), type: const DynamicType());
Library library = new Library(
new Uri(scheme: 'package', path: 'foo/bar.dart'),
fields: <Field>[field]);
@@ -208,7 +228,8 @@
serializer: statementSerializer);
}(),
() {
- Field field = new Field(new Name('field'), type: const DynamicType());
+ Field field =
+ new Field.immutable(new Name('field'), type: const DynamicType());
Class klass = new Class(name: 'A', fields: <Field>[field]);
Library library = new Library(
new Uri(scheme: 'package', path: 'foo/bar.dart'),
@@ -236,7 +257,37 @@
serializer: statementSerializer);
}(),
() {
- Field field = new Field(new Name('field'), type: const DynamicType());
+ Field field =
+ new Field.mutable(new Name('field'), type: const DynamicType());
+ Class klass = new Class(name: 'A', fields: <Field>[field]);
+ Library library = new Library(
+ new Uri(scheme: 'package', path: 'foo/bar.dart'),
+ classes: <Class>[klass]);
+ Component component = new Component(libraries: <Library>[library]);
+ component.computeCanonicalNames();
+
+ VariableDeclaration x =
+ new VariableDeclaration('x', type: const DynamicType());
+ return new TestCase<Statement>(
+ name: '/* suppose A {dynamic field;} A x; */ x.{A::field};',
+ node: new ExpressionStatement(new PropertyGet.byReference(
+ new VariableGet(x), field.name, field.getterReference)),
+ expectation: ''
+ '(expr (get-prop (get-var "x^0" _) (public "field")))',
+ makeSerializationState: () =>
+ new SerializationState(new SerializationEnvironment(null)
+ ..addBinder(x, nameClue: 'x')
+ ..extend()),
+ makeDeserializationState: () => new DeserializationState(
+ new DeserializationEnvironment(null)
+ ..addBinder(x, "x^0")
+ ..extend(),
+ component.root),
+ serializer: statementSerializer);
+ }(),
+ () {
+ Field field =
+ new Field.mutable(new Name('field'), type: const DynamicType());
Class klass = new Class(name: 'A', fields: <Field>[field]);
Library library = new Library(
new Uri(scheme: 'package', path: 'foo/bar.dart'),
diff --git a/pkg/kernel/test/verify_test.dart b/pkg/kernel/test/verify_test.dart
index 56ccfcf..5d3f20d 100644
--- a/pkg/kernel/test/verify_test.dart
+++ b/pkg/kernel/test/verify_test.dart
@@ -76,7 +76,7 @@
'Member redeclared',
(TestHarness test) {
Field field =
- new Field(new Name('field'), initializer: new NullLiteral());
+ new Field.mutable(new Name('field'), initializer: new NullLiteral());
test.addNode(Class(
name: 'Test',
supertype: test.objectClass.asRawSupertype,
@@ -166,7 +166,7 @@
'Class type parameter in static field',
(TestHarness test) {
TypeParameter node = test.classTypeParameter;
- test.addNode(Field(new Name('field'),
+ test.addNode(Field.mutable(new Name('field'),
initializer:
new TypeLiteral(new TypeParameterType(node, Nullability.legacy)),
isStatic: true));
@@ -235,7 +235,7 @@
negative1Test(
'Dangling field get',
(TestHarness test) {
- Field orphan = new Field(new Name('foo'));
+ Field orphan = new Field.mutable(new Name('foo'));
test.addNode(new PropertyGet(new NullLiteral(), orphan.name, orphan));
return orphan;
},
@@ -421,7 +421,7 @@
'Foo',
new FunctionType(
[test.otherLegacyRawType], const VoidType(), Nullability.legacy));
- var field = new Field(new Name('field'),
+ var field = new Field.mutable(new Name('field'),
type: new TypedefType(typedef_, Nullability.legacy), isStatic: true);
test.enclosingLibrary.addTypedef(typedef_);
test.enclosingLibrary.addField(field);
@@ -632,8 +632,8 @@
var foo =
new Typedef('Foo', test.otherLegacyRawType, typeParameters: [param]);
var typedefType = new TypedefType(foo, Nullability.legacy, []);
- var field =
- new Field(new Name('field'), type: typedefType, isStatic: true);
+ var field = new Field.mutable(new Name('field'),
+ type: typedefType, isStatic: true);
test.enclosingLibrary.addTypedef(foo);
test.enclosingLibrary.addField(field);
return typedefType;
@@ -646,7 +646,7 @@
'Dangling typedef reference',
(TestHarness test) {
var foo = new Typedef('Foo', test.otherLegacyRawType, typeParameters: []);
- var field = new Field(new Name('field'),
+ var field = new Field.mutable(new Name('field'),
type: new TypedefType(foo, Nullability.legacy, []), isStatic: true);
test.enclosingLibrary.addField(field);
return foo;
@@ -656,7 +656,7 @@
negative1Test(
'Non-static top-level field',
(TestHarness test) {
- var field = new Field(new Name('field'));
+ var field = new Field.mutable(new Name('field'));
test.enclosingLibrary.addField(field);
return null;
},
diff --git a/pkg/vm/lib/transformations/ffi_definitions.dart b/pkg/vm/lib/transformations/ffi_definitions.dart
index 868524b..30a1f71 100644
--- a/pkg/vm/lib/transformations/ffi_definitions.dart
+++ b/pkg/vm/lib/transformations/ffi_definitions.dart
@@ -712,14 +712,13 @@
Class struct, Map<Abi, int> sizes, IndexedClass indexedClass) {
var name = Name("#sizeOf");
var lookupField = indexedClass?.lookupField(name.text);
- final Field sizeOf = Field(name,
+ final Field sizeOf = Field.immutable(name,
isStatic: true,
isFinal: true,
initializer: _runtimeBranchOnLayout(sizes),
type: InterfaceType(intClass, Nullability.legacy),
fileUri: struct.fileUri,
- getterReference: lookupField?.getterReference,
- setterReference: lookupField?.setterReference)
+ getterReference: lookupField?.getterReference)
..fileOffset = struct.fileOffset;
_makeEntryPoint(sizeOf);
struct.addField(sizeOf);
diff --git a/pkg/vm/lib/transformations/ffi_use_sites.dart b/pkg/vm/lib/transformations/ffi_use_sites.dart
index 295b92d..a1ed18d 100644
--- a/pkg/vm/lib/transformations/ffi_use_sites.dart
+++ b/pkg/vm/lib/transformations/ffi_use_sites.dart
@@ -338,7 +338,7 @@
nativeFunctionClass, Nullability.legacy, node.arguments.types);
var name = Name("_#ffiCallback${callbackCount++}", currentLibrary);
var lookupField = currentLibraryIndex?.lookupField(name.text);
- final Field field = Field(name,
+ final Field field = Field.immutable(name,
type: InterfaceType(
pointerClass, Nullability.legacy, [nativeFunctionType]),
initializer: StaticInvocation(
@@ -351,8 +351,7 @@
isStatic: true,
isFinal: true,
fileUri: currentLibrary.fileUri,
- getterReference: lookupField?.getterReference,
- setterReference: lookupField?.setterReference)
+ getterReference: lookupField?.getterReference)
..fileOffset = node.fileOffset;
currentLibrary.addField(field);
return StaticGet(field);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field3_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field3_nnbd.dart.expect
index 001ee63..1431eb6 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field3_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/write_only_field3_nnbd.dart.expect
@@ -20,7 +20,7 @@
[@vm.direct-call.metadata=#lib::B.x] [@vm.inferred-type.metadata=!? (skip check)] this.{self::B::x} = 3;
}
}
-[@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] [@vm.unboxing-info.metadata=(i)->i]late static final field core::int staticLateB;
+[@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] [@vm.unboxing-info.metadata=(i)->i]late static final [setter] field core::int staticLateB;
static method main() → void {
[@vm.direct-call.metadata=#lib::A.use] [@vm.inferred-type.metadata=!? (skip check)] new self::A::•().{self::A::use}();
[@vm.direct-call.metadata=#lib::B.use] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•().{self::B::use}();
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.h b/runtime/vm/compiler/frontend/kernel_translation_helper.h
index 72b3106..daf26f1 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.h
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.h
@@ -456,10 +456,10 @@
kFinal = 1 << 0,
kConst = 1 << 1,
kStatic = 1 << 2,
- kIsCovariant = 1 << 5,
- kIsGenericCovariantImpl = 1 << 6,
- kIsLate = 1 << 7,
- kExtensionMember = 1 << 8,
+ kIsCovariant = 1 << 3,
+ kIsGenericCovariantImpl = 1 << 4,
+ kIsLate = 1 << 5,
+ kExtensionMember = 1 << 6,
};
explicit FieldHelper(KernelReaderHelper* helper)
diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h
index 48e3231..bad9b38 100644
--- a/runtime/vm/kernel_binary.h
+++ b/runtime/vm/kernel_binary.h
@@ -20,8 +20,8 @@
static const uint32_t kMagicProgramFile = 0x90ABCDEFu;
// Both version numbers are inclusive.
-static const uint32_t kMinSupportedKernelFormatVersion = 53;
-static const uint32_t kMaxSupportedKernelFormatVersion = 53;
+static const uint32_t kMinSupportedKernelFormatVersion = 54;
+static const uint32_t kMaxSupportedKernelFormatVersion = 54;
// Keep in sync with package:kernel/lib/binary/tag.dart
#define KERNEL_TAG_LIST(V) \
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 32ca631..f58c987 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -970,8 +970,8 @@
converter.IsSimple(helper_.ReaderOffset() + 1);
if (!has_simple_initializer || !converter.SimpleValue().IsNull()) {
field.set_has_nontrivial_initializer(true);
- return;
}
+ return;
}
field.set_has_initializer(false);
field.set_has_nontrivial_initializer(false);