[cfe] Add representation field to ExtensionTypeDeclaration

This adds the representation field of an extension type declaration
as an abstract getter in the ExtensionTypeDeclaraiton marking it as
a ProcedureStubKind.RepresentationField

These are never used as interface targets and are therefore skipped
in the type flow analysis.

TEST=existing

Change-Id: Ie645e63e0995a31895e985a2025dccb1476d16bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/330782
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ömer Ağacan <omersa@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
Johnni Winther 2023-10-19 10:15:25 +00:00
parent fd1a969918
commit d252bb11a3
404 changed files with 2594 additions and 206 deletions

View file

@ -28,6 +28,7 @@ bool memberIsIgnorable(ir.Member node, {ir.Class? cls}) {
case ir.ProcedureStubKind.MemberSignature:
case ir.ProcedureStubKind.AbstractMixinStub:
case ir.ProcedureStubKind.ConcreteMixinStub:
case ir.ProcedureStubKind.RepresentationField:
return true;
}
}

View file

@ -807,7 +807,8 @@ class ClosureLayouter extends RecursiveVisitor {
@override
void visitProcedure(Procedure node) {
if (node.isInstanceMember) {
if (node.isInstanceMember &&
node.stubKind != ProcedureStubKind.RepresentationField) {
ProcedureAttributesMetadata metadata = procedureAttributeMetadata[node]!;
if (metadata.hasTearOffUses) {
_visitFunctionNode(node.function);

View file

@ -8881,17 +8881,20 @@ class BodyBuilder extends StackListenerImpl
..fileOffset = charOffset;
}
Initializer buildDuplicatedInitializer(Field field, Expression value,
String name, int offset, int previousInitializerOffset) {
return new ShadowInvalidFieldInitializer(
field,
value,
new VariableDeclaration.forValue(buildProblem(
Initializer buildDuplicatedInitializer(
SourceFieldBuilder fieldBuilder,
Expression value,
String name,
int offset,
int previousInitializerOffset) {
return fieldBuilder.buildErroneousInitializer(
buildProblem(
fasta.templateConstructorInitializeSameInstanceVariableSeveralTimes
.withArguments(name),
offset,
noLength)))
..fileOffset = offset;
noLength),
value,
fileOffset: offset);
}
/// Parameter [formalType] should only be passed in the special case of
@ -8923,7 +8926,7 @@ class BodyBuilder extends StackListenerImpl
initializedFields ??= <String, int>{};
if (initializedFields!.containsKey(name)) {
return <Initializer>[
buildDuplicatedInitializer(builder.field, expression, name,
buildDuplicatedInitializer(builder, expression, name,
assignmentOffset, initializedFields![name]!)
];
}
@ -8964,12 +8967,9 @@ class BodyBuilder extends StackListenerImpl
charOffset: assignmentOffset,
isConstructorInvocation: true);
return <Initializer>[
new ShadowInvalidFieldInitializer(
builder.field,
expression,
new VariableDeclaration.forValue(
forest.createThrow(assignmentOffset, invocation)))
..fileOffset = assignmentOffset
builder.buildErroneousInitializer(
forest.createThrow(assignmentOffset, invocation), expression,
fileOffset: assignmentOffset)
];
} else {
if (formal != null && formal.type is! OmittedTypeBuilder) {

View file

@ -188,6 +188,13 @@ class ForwardingNode {
case ProcedureStubKind.ConcreteMixinStub:
finalTarget = interfaceMember.stubTarget!;
break;
case ProcedureStubKind.RepresentationField:
assert(
false,
"Unexpected representation field as forwarding stub target "
"$interfaceMember.");
finalTarget = interfaceMember;
break;
}
} else {
finalTarget = interfaceMember;

View file

@ -899,12 +899,11 @@ class ShadowInvalidInitializer extends LocalInitializer
/// Concrete shadow object representing an invalid initializer in kernel form.
class ShadowInvalidFieldInitializer extends LocalInitializer
implements InitializerJudgment {
Field field;
DartType fieldType;
Expression value;
ShadowInvalidFieldInitializer(
this.field, this.value, VariableDeclaration variable)
: super(variable) {
ShadowInvalidFieldInitializer(this.fieldType, this.value, Expression effect)
: super(new VariableDeclaration.forValue(effect)) {
value.parent = this;
}
@ -3440,3 +3439,35 @@ class ExtensionTypeRedirectingInitializer extends InternalInitializer {
String toString() =>
'ExtensionTypeRedirectingInitializer(${toStringInternal()})';
}
/// Internal expression for an explicit initialization of an extension type
/// declaration representation field.
class ExtensionTypeRepresentationFieldInitializer extends InternalInitializer {
Reference fieldReference;
Expression value;
ExtensionTypeRepresentationFieldInitializer(Procedure field, this.value)
: assert(field.stubKind == ProcedureStubKind.RepresentationField),
this.fieldReference = field.reference {
value.parent = this;
}
/// [Procedure] that represents the representation field.
Procedure get field => fieldReference.asProcedure;
@override
InitializerInferenceResult acceptInference(InferenceVisitorImpl visitor) {
return visitor.visitExtensionTypeRepresentationFieldInitializer(this);
}
@override
void toTextInternal(AstPrinter printer) {
printer.writeMemberName(fieldReference);
printer.write(" = ");
printer.writeExpression(value);
}
@override
String toString() =>
'ExtensionTypeRepresentationFieldInitializer(${toStringInternal()})';
}

View file

@ -8,7 +8,7 @@ import 'package:_fe_analyzer_shared/src/messages/severity.dart' show Severity;
import 'package:kernel/ast.dart';
import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
import 'package:kernel/core_types.dart';
import 'package:kernel/reference_from_index.dart' show IndexedClass;
import 'package:kernel/reference_from_index.dart' show IndexedContainer;
import 'package:kernel/target/changed_structure_notifier.dart'
show ChangedStructureNotifier;
import 'package:kernel/target/targets.dart' show DiagnosticReporter, Target;
@ -849,7 +849,7 @@ class KernelTarget extends TargetImplementation {
if (proc.isFactory) return;
}
IndexedClass? indexedClass = builder.referencesFromIndexed;
IndexedContainer? indexedClass = builder.referencesFromIndexed;
Reference? constructorReference;
Reference? tearOffReference;
if (indexedClass != null) {
@ -907,7 +907,7 @@ class KernelTarget extends TargetImplementation {
installForwardingConstructors(supertype);
}
IndexedClass? indexedClass = builder.referencesFromIndexed;
IndexedContainer? indexedClass = builder.referencesFromIndexed;
Reference? constructorReference;
Reference? tearOffReference;
if (indexedClass != null) {
@ -1458,8 +1458,7 @@ class KernelTarget extends TargetImplementation {
fieldBuilder.fileUri);
}
}
fieldBuilder.field.initializer = new NullLiteral()
..parent = fieldBuilder.field;
fieldBuilder.buildImplicitDefaultValue();
}
}
}
@ -1473,9 +1472,7 @@ class KernelTarget extends TargetImplementation {
for (SourceFieldBuilder fieldBuilder
in initializedFieldBuilders!.difference(fieldBuilders)) {
if (!fieldBuilder.hasInitializer && !fieldBuilder.isLate) {
FieldInitializer initializer =
new FieldInitializer(fieldBuilder.field, new NullLiteral())
..isSynthetic = true;
Initializer initializer = fieldBuilder.buildImplicitInitializer();
constructorBuilder.prependInitializer(initializer);
if (fieldBuilder.isFinal) {
libraryBuilder.addProblem(

View file

@ -53,8 +53,7 @@ class LoadLibraryBuilder extends BuilderImpl {
LoadLibrary expression = createLoadLibrary(charOffset, forest, null);
String prefix = expression.import.name!;
Name name = new Name('_#loadLibrary_$prefix', parent.library);
Reference? reference =
parent.referencesFromIndexed?.lookupGetterReference(name);
Reference? reference = parent.indexedLibrary?.lookupGetterReference(name);
return tearoff = new Procedure(
name,
ProcedureKind.Method,

View file

@ -7,7 +7,7 @@ import 'package:kernel/ast.dart';
import '../kernel/constructor_tearoff_lowering.dart';
import '../kernel/late_lowering.dart' as late_lowering;
enum FieldNameType { Field, Getter, Setter, IsSetField }
enum FieldNameType { Field, Getter, Setter, IsSetField, RepresentationField }
enum ContainerType { Library, Class, ExtensionType, Extension }
@ -32,6 +32,7 @@ class NameScheme {
bool get isExtensionTypeMember =>
containerType == ContainerType.ExtensionType;
// TODO(johnniwinther): Why do we need [isSynthesized] ?
MemberName getFieldMemberName(FieldNameType fieldNameType, String name,
{required bool isSynthesized}) {
bool hasSynthesizedName;
@ -93,6 +94,8 @@ class NameScheme {
return baseName;
case FieldNameType.IsSetField:
return "$namePrefix$baseName${late_lowering.lateIsSetSuffix}";
case FieldNameType.RepresentationField:
return name;
}
}
}

View file

@ -1034,7 +1034,8 @@ class OutlineBuilder extends StackListenerImpl {
}
libraryBuilder.currentTypeParameterScopeBuilder
.markAsClassDeclaration(name.lexeme, name.charOffset, typeVariables);
libraryBuilder.setCurrentClassName(name.lexeme);
libraryBuilder.beginIndexedContainer(name.lexeme,
isExtensionTypeDeclaration: false);
inAbstractOrSealedClass = abstractToken != null || sealedToken != null;
push(abstractToken != null ? abstractMask : 0);
push(macroToken ?? NullValues.Token);
@ -1066,7 +1067,8 @@ class OutlineBuilder extends StackListenerImpl {
push(typeVariables ?? NullValues.NominalVariables);
libraryBuilder.currentTypeParameterScopeBuilder
.markAsMixinDeclaration(name.lexeme, name.charOffset, typeVariables);
libraryBuilder.setCurrentClassName(name.lexeme);
libraryBuilder.beginIndexedContainer(name.lexeme,
isExtensionTypeDeclaration: false);
}
@override
@ -1374,7 +1376,7 @@ class OutlineBuilder extends StackListenerImpl {
isAugmentation: augmentToken != null,
isMixinClass: mixinToken != null);
}
libraryBuilder.setCurrentClassName(null);
libraryBuilder.endIndexedContainer();
popDeclarationContext(DeclarationContext.Class);
}
@ -1463,7 +1465,7 @@ class OutlineBuilder extends StackListenerImpl {
isBase: baseToken != null,
isAugmentation: augmentToken != null);
}
libraryBuilder.setCurrentClassName(null);
libraryBuilder.endIndexedContainer();
popDeclarationContext(DeclarationContext.Mixin);
}
@ -1547,13 +1549,15 @@ class OutlineBuilder extends StackListenerImpl {
pushDeclarationContext(DeclarationContext.ExtensionType);
List<NominalVariableBuilder>? typeVariables =
pop() as List<NominalVariableBuilder>?;
String name = nameToken.lexeme;
int offset = nameToken.charOffset;
push(nameToken.lexeme);
push(name);
push(offset);
push(typeVariables ?? NullValues.NominalVariables);
libraryBuilder.currentTypeParameterScopeBuilder
.markAsExtensionTypeDeclaration(
nameToken.lexeme, offset, typeVariables);
.markAsExtensionTypeDeclaration(name, offset, typeVariables);
libraryBuilder.beginIndexedContainer(name,
isExtensionTypeDeclaration: true);
}
@override
@ -1595,6 +1599,7 @@ class OutlineBuilder extends StackListenerImpl {
nameOffset,
endToken.charOffset);
libraryBuilder.endIndexedContainer();
popDeclarationContext(DeclarationContext.ExtensionType);
}
@ -2815,7 +2820,8 @@ class OutlineBuilder extends StackListenerImpl {
} else {
declarationName = '#enum';
}
libraryBuilder.setCurrentClassName(declarationName);
libraryBuilder.beginIndexedContainer(declarationName,
isExtensionTypeDeclaration: false);
pushDeclarationContext(DeclarationContext.Enum);
libraryBuilder.beginNestedDeclaration(
TypeParameterScopeKind.enumDeclaration, declarationName);
@ -2980,7 +2986,7 @@ class OutlineBuilder extends StackListenerImpl {
.resolveNamedTypes(typeVariables, libraryBuilder);
}
libraryBuilder.setCurrentClassName(null);
libraryBuilder.endIndexedContainer();
checkEmpty(enumKeyword.charOffset);
popDeclarationContext(DeclarationContext.Enum);
}

View file

@ -170,33 +170,42 @@ mixin SourceDeclarationBuilderMixin implements DeclarationBuilderMixin {
void _buildMember(SourceMemberBuilder memberBuilder, Member member,
Member? tearOff, BuiltMemberKind memberKind,
{required bool addMembersToLibrary}) {
if (addMembersToLibrary &&
!memberBuilder.isPatch &&
if (!memberBuilder.isPatch &&
!memberBuilder.isDuplicate &&
!memberBuilder.isConflictingSetter) {
Reference addMember(Member member) {
if (member is Field) {
libraryBuilder.library.addField(member);
return member.fieldReference;
} else if (member is Procedure) {
libraryBuilder.library.addProcedure(member);
return member.reference;
} else {
unhandled("${member.runtimeType}", "buildBuilders", member.fileOffset,
member.fileUri);
if (memberKind == BuiltMemberKind.ExtensionTypeRepresentationField) {
addMemberInternal(memberBuilder, memberKind, member, tearOff);
} else {
if (addMembersToLibrary) {
Reference addMember(Member member) {
if (member is Field) {
libraryBuilder.library.addField(member);
return member.fieldReference;
} else if (member is Procedure) {
libraryBuilder.library.addProcedure(member);
return member.reference;
} else {
unhandled("${member.runtimeType}", "buildBuilders",
member.fileOffset, member.fileUri);
}
}
Reference memberReference = addMember(member);
Reference? tearOffReference;
if (tearOff != null) {
tearOffReference = addMember(tearOff);
}
addMemberDescriptorInternal(
memberBuilder, memberKind, memberReference, tearOffReference);
}
}
Reference memberReference = addMember(member);
Reference? tearOffReference;
if (tearOff != null) {
tearOffReference = addMember(tearOff);
}
addMemberDescriptorInternal(
memberBuilder, memberKind, memberReference, tearOffReference);
}
}
/// Adds [member] and [tearOff] to this declaration.
void addMemberInternal(SourceMemberBuilder memberBuilder,
BuiltMemberKind memberKind, Member member, Member? tearOff);
/// Adds a descriptor for [member] to this declaration.
void addMemberDescriptorInternal(
SourceMemberBuilder memberBuilder,

View file

@ -8,7 +8,7 @@ import 'package:kernel/ast.dart';
import 'package:kernel/class_hierarchy.dart'
show ClassHierarchy, ClassHierarchyBase, ClassHierarchyMembers;
import 'package:kernel/core_types.dart';
import 'package:kernel/reference_from_index.dart' show IndexedClass;
import 'package:kernel/reference_from_index.dart' show IndexedContainer;
import 'package:kernel/src/bounds_checks.dart';
import 'package:kernel/src/legacy_erasure.dart';
import 'package:kernel/src/types.dart' show Types;
@ -59,7 +59,7 @@ Class initializeClass(
int startCharOffset,
int charOffset,
int charEndOffset,
IndexedClass? referencesFrom,
IndexedContainer? referencesFrom,
{required bool isAugmentation}) {
cls ??= new Class(
name: name,
@ -69,7 +69,7 @@ Class initializeClass(
// from index even when available.
// TODO(johnniwinther): Avoid creating [Class] so early in the builder
// that we end up creating unneeded nodes.
reference: isAugmentation ? null : referencesFrom?.cls.reference,
reference: isAugmentation ? null : referencesFrom?.reference,
fileUri: parent.fileUri);
if (cls.startFileOffset == TreeNode.noOffset) {
cls.startFileOffset = startCharOffset;
@ -107,7 +107,7 @@ class SourceClassBuilder extends ClassBuilderImpl
@override
TypeBuilder? mixedInTypeBuilder;
final IndexedClass? referencesFromIndexed;
final IndexedContainer? referencesFromIndexed;
@override
final bool isMacro;

View file

@ -1339,6 +1339,11 @@ class ExtensionTypeInitializerToStatementConverter
..fileOffset = node.fileOffset)
..fileOffset = node.fileOffset);
return;
} else if (node is ExtensionTypeRepresentationFieldInitializer) {
thisVariable
..initializer = (node.value..parent = thisVariable)
..fileOffset = node.fileOffset;
return;
}
throw new UnsupportedError(
"Unexpected initializer $node (${node.runtimeType})");

View file

@ -107,6 +107,13 @@ class SourceExtensionBuilder extends ExtensionBuilderImpl
return _extension;
}
@override
void addMemberInternal(SourceMemberBuilder memberBuilder,
BuiltMemberKind memberKind, Member member, Member? tearOff) {
unhandled("${memberBuilder.runtimeType}:${memberKind}", "addMemberInternal",
memberBuilder.charOffset, memberBuilder.fileUri);
}
@override
void addMemberDescriptorInternal(
SourceMemberBuilder memberBuilder,
@ -128,8 +135,12 @@ class SourceExtensionBuilder extends ExtensionBuilderImpl
case BuiltMemberKind.ExtensionTypeOperator:
case BuiltMemberKind.ExtensionTypeFactory:
case BuiltMemberKind.ExtensionTypeRedirectingFactory:
unhandled("${memberBuilder.runtimeType}:${memberKind}", "buildMembers",
memberBuilder.charOffset, memberBuilder.fileUri);
case BuiltMemberKind.ExtensionTypeRepresentationField:
unhandled(
"${memberBuilder.runtimeType}:${memberKind}",
"addMemberDescriptorInternal",
memberBuilder.charOffset,
memberBuilder.fileUri);
case BuiltMemberKind.ExtensionField:
case BuiltMemberKind.LateIsSetField:
kind = ExtensionMemberKind.Field;

View file

@ -455,6 +455,41 @@ class SourceExtensionTypeDeclarationBuilder
}
}
@override
void addMemberInternal(SourceMemberBuilder memberBuilder,
BuiltMemberKind memberKind, Member member, Member? tearOff) {
switch (memberKind) {
case BuiltMemberKind.Constructor:
case BuiltMemberKind.RedirectingFactory:
case BuiltMemberKind.Field:
case BuiltMemberKind.Method:
case BuiltMemberKind.Factory:
case BuiltMemberKind.ExtensionMethod:
case BuiltMemberKind.ExtensionGetter:
case BuiltMemberKind.ExtensionSetter:
case BuiltMemberKind.ExtensionOperator:
case BuiltMemberKind.ExtensionField:
case BuiltMemberKind.LateIsSetField:
case BuiltMemberKind.ExtensionTypeConstructor:
case BuiltMemberKind.ExtensionTypeFactory:
case BuiltMemberKind.ExtensionTypeRedirectingFactory:
case BuiltMemberKind.ExtensionTypeMethod:
case BuiltMemberKind.ExtensionTypeGetter:
case BuiltMemberKind.LateGetter:
case BuiltMemberKind.ExtensionTypeSetter:
case BuiltMemberKind.LateSetter:
case BuiltMemberKind.ExtensionTypeOperator:
unhandled(
"${memberBuilder.runtimeType}:${memberKind}",
"addMemberInternal",
memberBuilder.charOffset,
memberBuilder.fileUri);
case BuiltMemberKind.ExtensionTypeRepresentationField:
assert(tearOff == null, "Unexpected tear-off $tearOff");
extensionTypeDeclaration.addProcedure(member as Procedure);
}
}
@override
void addMemberDescriptorInternal(
SourceMemberBuilder memberBuilder,
@ -473,6 +508,7 @@ class SourceExtensionTypeDeclarationBuilder
case BuiltMemberKind.ExtensionGetter:
case BuiltMemberKind.ExtensionSetter:
case BuiltMemberKind.ExtensionOperator:
case BuiltMemberKind.ExtensionTypeRepresentationField:
unhandled("${memberBuilder.runtimeType}:${memberKind}", "buildMembers",
memberBuilder.charOffset, memberBuilder.fileUri);
case BuiltMemberKind.ExtensionField:

View file

@ -26,6 +26,7 @@ import '../kernel/body_builder_context.dart';
import '../kernel/hierarchy/class_member.dart';
import '../kernel/hierarchy/members_builder.dart';
import '../kernel/implicit_field_type.dart';
import '../kernel/internal_ast.dart';
import '../kernel/kernel_helper.dart';
import '../kernel/late_lowering.dart' as late_lowering;
import '../kernel/member_covariance.dart';
@ -135,6 +136,23 @@ class SourceFieldBuilder extends SourceMemberBuilderImpl
isFinal: isFinal,
isCovariantByDeclaration: isCovariantByDeclaration,
isNonNullableByDefault: libraryBuilder.isNonNullableByDefault);
} else if (fieldNameScheme.isExtensionTypeMember &&
fieldNameScheme.isInstanceMember) {
assert(fieldReference == null);
assert(fieldSetterReference == null);
assert(lateIsSetFieldReference == null);
assert(lateIsSetGetterReference == null);
assert(lateIsSetSetterReference == null);
assert(lateGetterReference == null);
assert(lateSetterReference == null);
_fieldEncoding = new RepresentationFieldEncoding(
this,
name,
fieldNameScheme,
fileUri,
charOffset,
charEndOffset,
fieldGetterReference);
} else if (isLate &&
libraryBuilder.loader.target.backendTarget.isLateFieldLoweringEnabled(
hasInitializer: hasInitializer,
@ -355,6 +373,23 @@ class SourceFieldBuilder extends SourceMemberBuilderImpl
isSynthetic: isSynthetic);
}
/// Creates the AST node for this field as the default initializer.
void buildImplicitDefaultValue() {
_fieldEncoding.buildImplicitDefaultValue();
}
/// Create the [Initializer] for the implicit initialization of this field
/// in a constructor.
Initializer buildImplicitInitializer() {
return _fieldEncoding.buildImplicitInitializer();
}
Initializer buildErroneousInitializer(Expression effect, Expression value,
{required int fileOffset}) {
return _fieldEncoding.buildErroneousInitializer(effect, value,
fileOffset: fileOffset);
}
@override
bool get isAssignable {
if (isConst) return false;
@ -568,6 +603,16 @@ abstract class FieldEncoding {
List<Initializer> createInitializer(int fileOffset, Expression value,
{required bool isSynthetic});
/// Creates the AST node for this field as the default initializer.
void buildImplicitDefaultValue();
/// Create the [Initializer] for the implicit initialization of this field
/// in a constructor.
Initializer buildImplicitInitializer();
Initializer buildErroneousInitializer(Expression effect, Expression value,
{required int fileOffset});
/// Registers that the (implicit) setter associated with this field needs to
/// contain a runtime type check to deal with generic covariance.
void setGenericCovariantImpl();
@ -701,9 +746,6 @@ class RegularFieldEncoding implements FieldEncoding {
@override
void registerMembers(SourceLibraryBuilder library,
SourceFieldBuilder fieldBuilder, BuildNodesCallback f) {
if (fieldBuilder.isExtensionTypeMember && !fieldBuilder.isStatic) {
return;
}
f(
member: _field,
kind:
@ -744,6 +786,23 @@ class RegularFieldEncoding implements FieldEncoding {
@override
bool get isLateLowering => false;
@override
void buildImplicitDefaultValue() {
_field.initializer = new NullLiteral()..parent = _field;
}
@override
Initializer buildImplicitInitializer() {
return new FieldInitializer(_field, new NullLiteral())..isSynthetic = true;
}
@override
Initializer buildErroneousInitializer(Expression effect, Expression value,
{required int fileOffset}) {
return new ShadowInvalidFieldInitializer(type, value, effect)
..fileOffset = fileOffset;
}
}
class SourceFieldMember extends BuilderClassMember {
@ -1213,6 +1272,22 @@ mixin LateWithoutInitializer on AbstractLateFieldEncoding {
isSetEncoding: isSetEncoding,
forField: true);
}
@override
void buildImplicitDefaultValue() {
throw new UnsupportedError("$runtimeType.buildImplicitDefaultValue");
}
@override
Initializer buildImplicitInitializer() {
throw new UnsupportedError("$runtimeType.buildImplicitInitializer");
}
@override
Initializer buildErroneousInitializer(Expression effect, Expression value,
{required int fileOffset}) {
throw new UnsupportedError("$runtimeType.buildDuplicatedInitializer");
}
}
class LateFieldWithoutInitializerEncoding extends AbstractLateFieldEncoding
@ -1300,6 +1375,22 @@ class LateFieldWithInitializerEncoding extends AbstractLateFieldEncoding
_createFieldSet(_lateIsSetField!, value),
isSetEncoding: isSetEncoding);
}
@override
void buildImplicitDefaultValue() {
throw new UnsupportedError("$runtimeType.buildImplicitDefaultValue");
}
@override
Initializer buildImplicitInitializer() {
throw new UnsupportedError("$runtimeType.buildImplicitInitializer");
}
@override
Initializer buildErroneousInitializer(Expression effect, Expression value,
{required int fileOffset}) {
throw new UnsupportedError("$runtimeType.buildDuplicatedInitializer");
}
}
class LateFinalFieldWithoutInitializerEncoding extends AbstractLateFieldEncoding
@ -1415,6 +1506,22 @@ class LateFinalFieldWithInitializerEncoding extends AbstractLateFieldEncoding {
CoreTypes coreTypes, String name, VariableDeclaration parameter) =>
throw new UnsupportedError(
'$runtimeType._createSetterBody is not supported.');
@override
void buildImplicitDefaultValue() {
throw new UnsupportedError("$runtimeType.buildImplicitDefaultValue");
}
@override
Initializer buildImplicitInitializer() {
throw new UnsupportedError("$runtimeType.buildImplicitInitializer");
}
@override
Initializer buildErroneousInitializer(Expression effect, Expression value,
{required int fileOffset}) {
throw new UnsupportedError("$runtimeType.buildDuplicatedInitializer");
}
}
class _SynthesizedFieldClassMember implements ClassMember {
@ -1463,7 +1570,7 @@ class _SynthesizedFieldClassMember implements ClassMember {
bool get isProperty => isField || isGetter || isSetter;
@override
DeclarationBuilder get declarationBuilder => fieldBuilder.classBuilder!;
DeclarationBuilder get declarationBuilder => fieldBuilder.declarationBuilder!;
@override
bool isObjectMember(ClassBuilder objectClass) {
@ -1750,6 +1857,7 @@ class AbstractOrExternalFieldEncoding implements FieldEncoding {
@override
void createBodies(CoreTypes coreTypes, Expression? initializer) {
// TODO(johnniwinther): Enable this assert.
//assert(initializer != null);
}
@ -1864,6 +1972,157 @@ class AbstractOrExternalFieldEncoding implements FieldEncoding {
@override
bool get isLateLowering => false;
@override
void buildImplicitDefaultValue() {
throw new UnsupportedError("$runtimeType.buildImplicitDefaultValue");
}
@override
Initializer buildImplicitInitializer() {
throw new UnsupportedError("$runtimeType.buildImplicitInitializer");
}
@override
Initializer buildErroneousInitializer(Expression effect, Expression value,
{required int fileOffset}) {
throw new UnsupportedError("$runtimeType.buildDuplicatedInitializer");
}
}
/// The encoding of an extension type declaration representation field.
class RepresentationFieldEncoding implements FieldEncoding {
final SourceFieldBuilder _fieldBuilder;
late Procedure _getter;
DartType? _type;
RepresentationFieldEncoding(
this._fieldBuilder,
String name,
NameScheme nameScheme,
Uri fileUri,
int charOffset,
int charEndOffset,
Reference? getterReference) {
_getter = new Procedure(
dummyName, ProcedureKind.Getter, new FunctionNode(null),
isAbstractFieldAccessor: true,
fileUri: fileUri,
reference: getterReference)
..stubKind = ProcedureStubKind.RepresentationField
..fileOffset = charOffset
..fileEndOffset = charEndOffset
..isNonNullableByDefault = true;
nameScheme
.getFieldMemberName(FieldNameType.RepresentationField, name,
isSynthesized: true)
.attachMember(_getter);
}
@override
DartType get type {
assert(_type != null,
"Type has not been computed for field ${_fieldBuilder.name}.");
return _type!;
}
@override
void set type(DartType value) {
assert(_type == null || _type is InferredType,
"Type has already been computed for field ${_fieldBuilder.name}.");
_type = value;
if (value is! InferredType) {
_getter.function.returnType = value;
}
}
@override
void createBodies(CoreTypes coreTypes, Expression? initializer) {
// TODO(johnniwinther): Enable this assert.
//assert(initializer != null);
}
@override
List<Initializer> createInitializer(int fileOffset, Expression value,
{required bool isSynthetic}) {
return <Initializer>[
new ExtensionTypeRepresentationFieldInitializer(_getter, value)
];
}
@override
void build(
SourceLibraryBuilder libraryBuilder, SourceFieldBuilder fieldBuilder) {
_getter..isConst = fieldBuilder.isConst;
_getter
..isStatic = false
..isExtensionMember = false
..isExtensionTypeMember = true
..isAbstract = true
..isExternal = false;
}
@override
void registerMembers(SourceLibraryBuilder library,
SourceFieldBuilder fieldBuilder, BuildNodesCallback f) {
f(member: _getter, kind: BuiltMemberKind.ExtensionTypeRepresentationField);
}
@override
void setGenericCovariantImpl() {
throw new UnsupportedError("$runtimeType.setGenericCovariantImpl");
}
@override
Field get field {
throw new UnsupportedError("$runtimeType.field");
}
@override
Iterable<Annotatable> get annotatables => [_getter];
@override
Member get readTarget => _getter;
@override
Member? get writeTarget => null;
@override
Iterable<Member> get exportedMembers => [_getter];
@override
List<ClassMember> getLocalMembers(SourceFieldBuilder fieldBuilder) =>
<ClassMember>[
new _SynthesizedFieldClassMember(fieldBuilder, _getter,
_SynthesizedFieldMemberKind.RepresentationField,
forSetter: false, isInternalImplementation: false)
];
@override
List<ClassMember> getLocalSetters(SourceFieldBuilder fieldBuilder) =>
const <ClassMember>[];
@override
bool get isLateLowering => false;
@override
void buildImplicitDefaultValue() {
// Not needed.
}
@override
Initializer buildImplicitInitializer() {
return new ExtensionTypeRepresentationFieldInitializer(
_getter, new NullLiteral());
}
@override
Initializer buildErroneousInitializer(Expression effect, Expression value,
{required int fileOffset}) {
return new ShadowInvalidFieldInitializer(type, value, effect)
..fileOffset = fileOffset;
}
}
enum _SynthesizedFieldMemberKind {
@ -1878,4 +2137,7 @@ enum _SynthesizedFieldMemberKind {
/// A getter or setter used for abstract or external fields.
AbstractExternalGetterSetter,
/// A getter for an extension type declaration representation field.
RepresentationField,
}

View file

@ -213,8 +213,11 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
final LibraryBuilder? _nameOrigin;
final Library? referencesFrom;
final IndexedLibrary? referencesFromIndexed;
IndexedClass? _currentClassReferencesFromIndexed;
final IndexedLibrary? indexedLibrary;
// TODO(johnniwinther): Use [_indexedContainer] for library members and make
// it [null] when there is null corresponding [IndexedContainer].
IndexedContainer? _indexedContainer;
/// Exports that can't be serialized.
///
@ -320,7 +323,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
Map<String, Builder>? omittedTypes})
: _languageVersion = packageLanguageVersion,
currentTypeParameterScopeBuilder = _libraryTypeParameterScopeBuilder,
referencesFromIndexed =
indexedLibrary =
referencesFrom == null ? null : new IndexedLibrary(referencesFrom),
_immediateOrigin = origin,
_omittedTypeDeclarationBuilders = omittedTypes,
@ -1156,9 +1159,9 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
if (unserializableExports != null) {
Name fieldName = new Name(unserializableExportName, library);
Reference? fieldReference =
referencesFromIndexed?.lookupFieldReference(fieldName);
indexedLibrary?.lookupFieldReference(fieldName);
Reference? getterReference =
referencesFromIndexed?.lookupGetterReference(fieldName);
indexedLibrary?.lookupGetterReference(fieldName);
library.addField(new Field.immutable(fieldName,
initializer: new StringLiteral(jsonEncode(unserializableExports)),
isStatic: true,
@ -2051,7 +2054,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
startOffset,
nameOffset,
endOffset,
_currentClassReferencesFromIndexed,
_indexedContainer,
isMixinDeclaration: isMixinDeclaration,
isMacro: isMacro,
isSealed: isSealed,
@ -2092,7 +2095,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
constructors.forEach(setParentAndCheckConflicts);
setters.forEach(setParentAndCheckConflicts);
addBuilder(className, classBuilder, nameOffset,
getterReference: _currentClassReferencesFromIndexed?.cls.reference);
getterReference: _indexedContainer?.reference);
}
Map<String, NominalVariableBuilder>? checkTypeVariables(
@ -2307,7 +2310,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
Extension? referenceFrom;
ExtensionName extensionName = declaration.extensionName!;
if (name != null) {
referenceFrom = referencesFromIndexed?.lookupExtension(name);
referenceFrom = indexedLibrary?.lookupExtension(name);
}
ExtensionBuilder extensionBuilder = new SourceExtensionBuilder(
@ -2385,7 +2388,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
new ConstructorScope(name, constructors);
ExtensionTypeDeclaration? referenceFrom =
referencesFromIndexed?.lookupExtensionTypeDeclaration(name);
indexedLibrary?.lookupExtensionTypeDeclaration(name);
SourceFieldBuilder? representationFieldBuilder;
outer:
@ -2481,7 +2484,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
new ConstructorScope(name, constructors);
ExtensionTypeDeclaration? referenceFrom =
referencesFromIndexed?.lookupExtensionTypeDeclaration(name);
indexedLibrary?.lookupExtensionTypeDeclaration(name);
SourceFieldBuilder? representationFieldBuilder;
outer:
@ -2799,9 +2802,9 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
: metadata.first.charOffset;
IndexedClass? referencesFromIndexedClass;
if (referencesFromIndexed != null) {
if (indexedLibrary != null) {
referencesFromIndexedClass =
referencesFromIndexed!.lookupIndexedClass(fullname);
indexedLibrary!.lookupIndexedClass(fullname);
}
SourceClassBuilder application = new SourceClassBuilder(
@ -2959,6 +2962,8 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
(modifiers & staticMask) == 0;
final bool isExtensionMember = currentTypeParameterScopeBuilder.kind ==
TypeParameterScopeKind.extensionDeclaration;
final bool isExtensionTypeMember = currentTypeParameterScopeBuilder.kind ==
TypeParameterScopeKind.extensionTypeDeclaration;
ContainerType containerType =
currentTypeParameterScopeBuilder.containerType;
ContainerName? containerName =
@ -2977,21 +2982,29 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
isInstanceMember: isInstanceMember,
containerName: containerName,
containerType: containerType,
libraryName: referencesFrom != null
? new LibraryName(referencesFrom!.reference)
libraryName: indexedLibrary != null
? new LibraryName(indexedLibrary!.reference)
: libraryName);
if (referencesFrom != null) {
IndexedContainer indexedContainer =
(_currentClassReferencesFromIndexed ?? referencesFromIndexed)!;
if (isExtensionMember && isInstanceMember && isExternal) {
/// An external extension instance field is special. It is treated
/// as an external getter/setter pair and is therefore encoded as a pair
/// of top level methods using the extension instance member naming
/// convention.
IndexedContainer? indexedContainer = _indexedContainer ?? indexedLibrary;
if (indexedContainer != null) {
if ((isExtensionMember || isExtensionTypeMember) &&
isInstanceMember &&
isExternal) {
/// An external extension (type) instance field is special. It is
/// treated as an external getter/setter pair and is therefore encoded
/// as a pair of top level methods using the extension instance member
/// naming convention.
fieldGetterReference = indexedContainer.lookupGetterReference(
nameScheme.getProcedureMemberName(ProcedureKind.Getter, name).name);
fieldSetterReference = indexedContainer.lookupGetterReference(
nameScheme.getProcedureMemberName(ProcedureKind.Setter, name).name);
} else if (isExtensionTypeMember && isInstanceMember) {
Name nameToLookup = nameScheme
.getFieldMemberName(FieldNameType.RepresentationField, name,
isSynthesized: true)
.name;
fieldGetterReference =
indexedContainer.lookupGetterReference(nameToLookup);
} else {
Name nameToLookup = nameScheme
.getFieldMemberName(FieldNameType.Field, name,
@ -3119,21 +3132,13 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
Reference? constructorReference;
Reference? tearOffReference;
if (_currentClassReferencesFromIndexed != null) {
constructorReference = _currentClassReferencesFromIndexed!
.lookupConstructorReference(nameScheme
.getConstructorMemberName(constructorName, isTearOff: false)
.name);
tearOffReference = _currentClassReferencesFromIndexed!
.lookupGetterReference(nameScheme
.getConstructorMemberName(constructorName, isTearOff: true)
.name);
} else if (referencesFromIndexed != null) {
constructorReference = referencesFromIndexed!.lookupGetterReference(
IndexedContainer? indexedContainer = _indexedContainer;
if (indexedContainer != null) {
constructorReference = indexedContainer.lookupConstructorReference(
nameScheme
.getConstructorMemberName(constructorName, isTearOff: false)
.name);
tearOffReference = referencesFromIndexed!.lookupGetterReference(nameScheme
tearOffReference = indexedContainer.lookupGetterReference(nameScheme
.getConstructorMemberName(constructorName, isTearOff: true)
.name);
}
@ -3244,33 +3249,26 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
}
Reference? procedureReference;
Reference? tearOffReference;
if (referencesFrom != null) {
IndexedContainer? indexedContainer = _indexedContainer ?? indexedLibrary;
if (indexedContainer != null) {
Name nameToLookup = nameScheme.getProcedureMemberName(kind, name).name;
if (_currentClassReferencesFromIndexed != null) {
if (kind == ProcedureKind.Setter) {
procedureReference = _currentClassReferencesFromIndexed!
.lookupSetterReference(nameToLookup);
if (kind == ProcedureKind.Setter) {
if ((isExtensionMember || isExtensionTypeMember) && isInstanceMember) {
// Extension (type) instance setters are encoded as methods.
procedureReference =
indexedContainer.lookupGetterReference(nameToLookup);
} else {
procedureReference = _currentClassReferencesFromIndexed!
.lookupGetterReference(nameToLookup);
procedureReference =
indexedContainer.lookupSetterReference(nameToLookup);
}
} else {
if (kind == ProcedureKind.Setter &&
// Extension (type) instance setters are encoded as methods.
!((isExtensionMember || isExtensionTypeMember) &&
isInstanceMember)) {
procedureReference =
referencesFromIndexed!.lookupSetterReference(nameToLookup);
} else {
procedureReference =
referencesFromIndexed!.lookupGetterReference(nameToLookup);
}
procedureReference =
indexedContainer.lookupGetterReference(nameToLookup);
if ((isExtensionMember || isExtensionTypeMember) &&
kind == ProcedureKind.Method) {
tearOffReference = referencesFromIndexed!.lookupGetterReference(
nameScheme
.getProcedureMemberName(ProcedureKind.Getter, name)
.name);
tearOffReference = indexedContainer.lookupGetterReference(nameScheme
.getProcedureMemberName(ProcedureKind.Getter, name)
.name);
}
}
}
@ -3356,28 +3354,26 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
isInstanceMember: false,
libraryName: referencesFrom != null
? new LibraryName(
(_currentClassReferencesFromIndexed ?? referencesFromIndexed)!
.library
.reference)
(_indexedContainer ?? indexedLibrary)!.library.reference)
: libraryName);
Reference? constructorReference;
Reference? tearOffReference;
if (_currentClassReferencesFromIndexed != null) {
constructorReference = _currentClassReferencesFromIndexed!
.lookupConstructorReference(procedureNameScheme
.getConstructorMemberName(procedureName, isTearOff: false)
.name);
tearOffReference = _currentClassReferencesFromIndexed!
.lookupGetterReference(procedureNameScheme
.getConstructorMemberName(procedureName, isTearOff: true)
.name);
} else if (referencesFromIndexed != null) {
constructorReference = referencesFromIndexed!.lookupGetterReference(
if (_indexedContainer != null) {
constructorReference = _indexedContainer!.lookupConstructorReference(
procedureNameScheme
.getConstructorMemberName(procedureName, isTearOff: false)
.name);
tearOffReference = referencesFromIndexed!.lookupGetterReference(
tearOffReference = _indexedContainer!.lookupGetterReference(
procedureNameScheme
.getConstructorMemberName(procedureName, isTearOff: true)
.name);
} else if (indexedLibrary != null) {
constructorReference = indexedLibrary!.lookupGetterReference(
procedureNameScheme
.getConstructorMemberName(procedureName, isTearOff: false)
.name);
tearOffReference = indexedLibrary!.lookupGetterReference(
procedureNameScheme
.getConstructorMemberName(procedureName, isTearOff: true)
.name);
@ -3469,8 +3465,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
int charEndOffset) {
IndexedClass? referencesFromIndexedClass;
if (referencesFrom != null) {
referencesFromIndexedClass =
referencesFromIndexed!.lookupIndexedClass(name);
referencesFromIndexedClass = indexedLibrary!.lookupIndexedClass(name);
}
// Nested declaration began in `OutlineBuilder.beginEnum`.
TypeParameterScopeBuilder declaration =
@ -3565,7 +3560,7 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
typeVariable.variance = pendingVariance;
}
}
Typedef? referenceFrom = referencesFromIndexed?.lookupTypedef(name);
Typedef? referenceFrom = indexedLibrary?.lookupTypedef(name);
TypeAliasBuilder typedefBuilder = new SourceTypeAliasBuilder(
metadata, name, typeVariables, type, this, charOffset,
referenceFrom: referenceFrom);
@ -5302,22 +5297,37 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
_extensionsInScope = null;
}
/// Set to some non-null name when entering a class; set to null when leaving
/// the class.
/// Call this when entering a class, mixin, enum, or extension type
/// declaration.
///
/// Called in OutlineBuilder.beginClassDeclaration,
/// OutlineBuilder.endClassDeclaration,
/// OutlineBuilder.beginMixinDeclaration,
/// OutlineBuilder.endMixinDeclaration.
void setCurrentClassName(String? name) {
if (name == null) {
_currentClassReferencesFromIndexed = null;
} else if (referencesFrom != null) {
_currentClassReferencesFromIndexed =
referencesFromIndexed!.lookupIndexedClass(name);
/// This is done to set up the current [_indexedContainer] used to lookup
/// references of members from a previous incremental compilation.
///
/// Called in `OutlineBuilder.beginClassDeclaration`,
/// `OutlineBuilder.beginEnum`, `OutlineBuilder.beginMixinDeclaration` and
/// `OutlineBuilder.beginExtensionTypeDeclaration`.
void beginIndexedContainer(String name,
{required bool isExtensionTypeDeclaration}) {
if (indexedLibrary != null) {
if (isExtensionTypeDeclaration) {
_indexedContainer =
indexedLibrary!.lookupIndexedExtensionTypeDeclaration(name);
} else {
_indexedContainer = indexedLibrary!.lookupIndexedClass(name);
}
}
}
/// Call this when leaving a class, mixin, enum, or extension type
/// declaration.
///
/// Called in `OutlineBuilder.endClassDeclaration`,
/// `OutlineBuilder.endEnum`, `OutlineBuilder.endMixinDeclaration` and
/// `OutlineBuilder.endExtensionTypeDeclaration`.
void endIndexedContainer() {
_indexedContainer = null;
}
void registerPendingNullability(
Uri fileUri, int charOffset, TypeParameterType type) {
_pendingNullabilities

View file

@ -2580,8 +2580,7 @@ severity: $severity
Library target = library.buildOutlineNodes(coreLibrary);
if (library.referencesFrom != null) {
referenceFromIndex ??= new ReferenceFromIndex();
referenceFromIndex!
.addIndexedLibrary(target, library.referencesFromIndexed!);
referenceFromIndex!.addIndexedLibrary(target, library.indexedLibrary!);
}
libraries.add(target);
}

View file

@ -197,6 +197,7 @@ enum BuiltMemberKind {
ExtensionTypeOperator,
ExtensionTypeFactory,
ExtensionTypeRedirectingFactory,
ExtensionTypeRepresentationField,
LateIsSetField,
LateGetter,
LateSetter,

View file

@ -269,11 +269,11 @@ class SourceTypeAliasBuilder extends TypeAliasBuilderImpl {
Name targetName =
new Name(constructorName, declaration.libraryBuilder.library);
Reference? tearOffReference;
if (libraryBuilder.referencesFromIndexed != null) {
if (libraryBuilder.indexedLibrary != null) {
Name tearOffName = new Name(
typedefTearOffName(name, constructorName),
libraryBuilder.referencesFromIndexed!.library);
tearOffReference = libraryBuilder.referencesFromIndexed!
libraryBuilder.indexedLibrary!.library);
tearOffReference = libraryBuilder.indexedLibrary!
.lookupGetterReference(tearOffName);
}

View file

@ -2056,7 +2056,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase
InitializerInferenceResult visitShadowInvalidFieldInitializer(
ShadowInvalidFieldInitializer node) {
ExpressionInferenceResult initializerResult =
inferExpression(node.value, node.field.type, isVoidAllowed: false);
inferExpression(node.value, node.fieldType, isVoidAllowed: false);
node.value = initializerResult.expression..parent = node;
return const SuccessfulInitializerInferenceResult();
}
@ -7870,6 +7870,20 @@ class InferenceVisitorImpl extends InferenceVisitorBase
inferenceResult);
}
InitializerInferenceResult visitExtensionTypeRepresentationFieldInitializer(
ExtensionTypeRepresentationFieldInitializer node) {
DartType fieldType = node.field.getterType;
fieldType = constructorDeclaration!.substituteFieldType(fieldType);
ExpressionInferenceResult initializerResult =
inferExpression(node.value, fieldType);
Expression initializer = ensureAssignableResult(
fieldType, initializerResult,
fileOffset: node.fileOffset)
.expression;
node.value = initializer..parent = node;
return const SuccessfulInitializerInferenceResult();
}
@override
ExpressionInferenceResult visitRethrow(Rethrow node, DartType typeContext) {
flowAnalysis.handleExit();

View file

@ -224,6 +224,9 @@ class InheritanceDataExtractor extends CfeDataExtractor<Features> {
features.add(Tag.concreteMixinStub);
features[Tag.stubTarget] = memberQualifiedName(member.stubTarget!);
break;
case ProcedureStubKind.RepresentationField:
// TODO: Handle this case.
break;
}
}
@ -362,6 +365,9 @@ class InheritanceDataExtractor extends CfeDataExtractor<Features> {
features.add(Tag.concreteMixinStub);
features[Tag.stubTarget] = memberQualifiedName(member.stubTarget!);
break;
case ProcedureStubKind.RepresentationField:
// TODO: Handle this case.
break;
}
}

View file

@ -18,6 +18,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -20,6 +20,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -18,6 +18,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -18,6 +18,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -17,6 +17,7 @@ class A extends core::Object {
}
@js_::JS::•()
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -20,6 +20,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -18,6 +18,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -20,6 +20,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -18,6 +18,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -18,6 +18,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -17,6 +17,7 @@ class A extends core::Object {
}
@js_::JS::•()
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -20,6 +20,7 @@ class A extends core::Object {
}
@#C2
extension type B(self::A a) {
abstract inline-class-member representation-field get a() → self::A;
get field = self::B|get#field;
set field = self::B|set#field;
method method = self::B|method;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -3,18 +3,21 @@ import self as self;
import "dart:core" as core;
extension type I(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::I|constructor#_;
constructor tearoff _ = self::I|constructor#_#_#tearOff;
static factory • = self::I|constructor#;
static factory tearoff • = self::I|constructor#_#new#tearOff;
}
extension type J(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor _ = self::J|constructor#_;
constructor tearoff _ = self::J|constructor#_#_#tearOff;
static factory • = self::J|constructor#;
static factory tearoff • = self::J|constructor#_#new#tearOff;
}
extension type K<T extends core::Object? = dynamic>(T% i) {
abstract inline-class-member representation-field get i() → T%;
constructor _ = self::K|constructor#_;
constructor tearoff _ = self::K|constructor#_#_#tearOff;
static factory • = self::K|constructor#;

View file

@ -21,10 +21,12 @@ class B extends self::A {
;
}
extension type E(self::B it) implements self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */ {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}

View file

@ -21,10 +21,12 @@ class B extends self::A {
;
}
extension type E(self::B it) implements self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */ {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}

View file

@ -21,10 +21,12 @@ class B extends self::A {
;
}
extension type E(self::B it) implements self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */ {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}

View file

@ -21,10 +21,12 @@ class B extends self::A {
;
}
extension type E(self::B it) implements self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */ {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}

View file

@ -18,10 +18,12 @@ class B extends self::A {
;
}
extension type E(self::B it) implements self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */ {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}

View file

@ -21,10 +21,12 @@ class B extends self::A {
;
}
extension type E(self::B it) implements self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */ {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}

View file

@ -4,6 +4,7 @@ import "dart:core" as core;
@#C2
extension type A(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
method m = self::A|m;
method tearoff m = self::A|get#m;
constructor • = self::A|constructor#;

View file

@ -4,6 +4,7 @@ import "dart:core" as core;
@#C2
extension type A(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
method m = self::A|m;
method tearoff m = self::A|get#m;
constructor • = self::A|constructor#;

View file

@ -4,6 +4,7 @@ import "dart:core" as core;
@#C2
extension type A(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
method m = self::A|m;
method tearoff m = self::A|get#m;
constructor • = self::A|constructor#;

View file

@ -4,6 +4,7 @@ import "dart:core" as core;
@#C2
extension type A(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
method m = self::A|m;
method tearoff m = self::A|get#m;
constructor • = self::A|constructor#;

View file

@ -4,6 +4,7 @@ import "dart:core" as core;
@core::Deprecated::•("")
extension type A(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
method m = self::A|m;
method tearoff m = self::A|get#m;
constructor • = self::A|constructor#;

View file

@ -4,6 +4,7 @@ import "dart:core" as core;
@#C2
extension type A(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
method m = self::A|m;
method tearoff m = self::A|get#m;
constructor • = self::A|constructor#;

View file

@ -295,22 +295,27 @@ class B extends self::A {
;
}
extension type C(core::Object? o) {
abstract inline-class-member representation-field get o() → core::Object?;
constructor • = self::C|constructor#;
constructor tearoff • = self::C|constructor#_#new#tearOff;
}
extension type D(core::Object o) {
abstract inline-class-member representation-field get o() → core::Object;
constructor • = self::D|constructor#;
constructor tearoff • = self::D|constructor#_#new#tearOff;
}
extension type E(self::B it) implements self::A {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */, self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}
extension type G<T extends core::Object? = dynamic>(T% o) {
abstract inline-class-member representation-field get o() → T%;
constructor • = self::G|constructor#;
constructor tearoff • = self::G|constructor#_#new#tearOff;
}

View file

@ -295,22 +295,27 @@ class B extends self::A {
;
}
extension type C(core::Object? o) {
abstract inline-class-member representation-field get o() → core::Object?;
constructor • = self::C|constructor#;
constructor tearoff • = self::C|constructor#_#new#tearOff;
}
extension type D(core::Object o) {
abstract inline-class-member representation-field get o() → core::Object;
constructor • = self::D|constructor#;
constructor tearoff • = self::D|constructor#_#new#tearOff;
}
extension type E(self::B it) implements self::A {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */, self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}
extension type G<T extends core::Object? = dynamic>(T% o) {
abstract inline-class-member representation-field get o() → T%;
constructor • = self::G|constructor#;
constructor tearoff • = self::G|constructor#_#new#tearOff;
}

View file

@ -295,22 +295,27 @@ class B extends self::A {
;
}
extension type C(core::Object? o) {
abstract inline-class-member representation-field get o() → core::Object?;
constructor • = self::C|constructor#;
constructor tearoff • = self::C|constructor#_#new#tearOff;
}
extension type D(core::Object o) {
abstract inline-class-member representation-field get o() → core::Object;
constructor • = self::D|constructor#;
constructor tearoff • = self::D|constructor#_#new#tearOff;
}
extension type E(self::B it) implements self::A {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */, self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}
extension type G<T extends core::Object? = dynamic>(T% o) {
abstract inline-class-member representation-field get o() → T%;
constructor • = self::G|constructor#;
constructor tearoff • = self::G|constructor#_#new#tearOff;
}

View file

@ -295,22 +295,27 @@ class B extends self::A {
;
}
extension type C(core::Object? o) {
abstract inline-class-member representation-field get o() → core::Object?;
constructor • = self::C|constructor#;
constructor tearoff • = self::C|constructor#_#new#tearOff;
}
extension type D(core::Object o) {
abstract inline-class-member representation-field get o() → core::Object;
constructor • = self::D|constructor#;
constructor tearoff • = self::D|constructor#_#new#tearOff;
}
extension type E(self::B it) implements self::A {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */, self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}
extension type G<T extends core::Object? = dynamic>(T% o) {
abstract inline-class-member representation-field get o() → T%;
constructor • = self::G|constructor#;
constructor tearoff • = self::G|constructor#_#new#tearOff;
}

View file

@ -11,22 +11,27 @@ class B extends self::A {
;
}
extension type C(core::Object? o) {
abstract inline-class-member representation-field get o() → core::Object?;
constructor • = self::C|constructor#;
constructor tearoff • = self::C|constructor#_#new#tearOff;
}
extension type D(core::Object o) {
abstract inline-class-member representation-field get o() → core::Object;
constructor • = self::D|constructor#;
constructor tearoff • = self::D|constructor#_#new#tearOff;
}
extension type E(self::B it) implements self::A {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */, self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}
extension type G<T extends core::Object? = dynamic>(T% o) {
abstract inline-class-member representation-field get o() → T%;
constructor • = self::G|constructor#;
constructor tearoff • = self::G|constructor#_#new#tearOff;
}

View file

@ -295,22 +295,27 @@ class B extends self::A {
;
}
extension type C(core::Object? o) {
abstract inline-class-member representation-field get o() → core::Object?;
constructor • = self::C|constructor#;
constructor tearoff • = self::C|constructor#_#new#tearOff;
}
extension type D(core::Object o) {
abstract inline-class-member representation-field get o() → core::Object;
constructor • = self::D|constructor#;
constructor tearoff • = self::D|constructor#_#new#tearOff;
}
extension type E(self::B it) implements self::A {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::E|constructor#;
constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* = self::B */, self::B {
abstract inline-class-member representation-field get it() → self::B;
constructor • = self::F|constructor#;
constructor tearoff • = self::F|constructor#_#new#tearOff;
}
extension type G<T extends core::Object? = dynamic>(T% o) {
abstract inline-class-member representation-field get o() → T%;
constructor • = self::G|constructor#;
constructor tearoff • = self::G|constructor#_#new#tearOff;
}

View file

@ -89,75 +89,90 @@ class C2 extends core::Object implements self::C1 {
return 1;
}
extension type I1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
method x = self::I1|x;
method tearoff x = self::I1|get#x;
constructor • = self::I1|constructor#;
constructor tearoff • = self::I1|constructor#_#new#tearOff;
}
extension type I2(core::int id1) {
abstract inline-class-member representation-field get id1() → core::int;
constructor • = self::I2|constructor#;
constructor tearoff • = self::I2|constructor#_#new#tearOff;
}
extension type I3(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
get property = self::I3|get#property;
constructor • = self::I3|constructor#;
constructor tearoff • = self::I3|constructor#_#new#tearOff;
}
extension type I4(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::I4|property;
constructor • = self::I4|constructor#;
constructor tearoff • = self::I4|constructor#_#new#tearOff;
}
extension type ET1(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get x = get self::ET1|x;
constructor • = self::ET1|constructor#;
constructor tearoff • = self::ET1|constructor#_#new#tearOff;
}
extension type ET2(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method x = self::ET2|x;
constructor • = self::ET2|constructor#;
constructor tearoff • = self::ET2|constructor#_#new#tearOff;
}
extension type ET3(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set x = set self::ET3|x;
constructor • = self::ET3|constructor#;
constructor tearoff • = self::ET3|constructor#_#new#tearOff;
}
extension type ET4(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field x = self::ET4|x;
constructor • = self::ET4|constructor#;
constructor tearoff • = self::ET4|constructor#_#new#tearOff;
}
extension type ET5(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method id1 = self::ET5|id1;
constructor • = self::ET5|constructor#;
constructor tearoff • = self::ET5|constructor#_#new#tearOff;
}
extension type ET6(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get id1 = get self::ET6|id1;
constructor • = self::ET6|constructor#;
constructor tearoff • = self::ET6|constructor#_#new#tearOff;
}
extension type ET7(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field id1 = self::ET7|id1;
constructor • = self::ET7|constructor#;
constructor tearoff • = self::ET7|constructor#_#new#tearOff;
}
extension type ET8(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set id1 = set self::ET8|id1;
constructor • = self::ET8|constructor#;
constructor tearoff • = self::ET8|constructor#_#new#tearOff;
}
extension type ET9(core::int id) implements self::I3 /* = core::int */, self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
constructor • = self::ET9|constructor#;
constructor tearoff • = self::ET9|constructor#_#new#tearOff;
}
extension type ET10(core::int id) implements self::I3 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::ET10|property;
constructor • = self::ET10|constructor#;
constructor tearoff • = self::ET10|constructor#_#new#tearOff;
}
extension type ET11(core::int id) implements self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
get property = self::ET11|get#property;
constructor • = self::ET11|constructor#;
constructor tearoff • = self::ET11|constructor#_#new#tearOff;

View file

@ -89,75 +89,90 @@ class C2 extends core::Object implements self::C1 {
return 1;
}
extension type I1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
method x = self::I1|x;
method tearoff x = self::I1|get#x;
constructor • = self::I1|constructor#;
constructor tearoff • = self::I1|constructor#_#new#tearOff;
}
extension type I2(core::int id1) {
abstract inline-class-member representation-field get id1() → core::int;
constructor • = self::I2|constructor#;
constructor tearoff • = self::I2|constructor#_#new#tearOff;
}
extension type I3(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
get property = self::I3|get#property;
constructor • = self::I3|constructor#;
constructor tearoff • = self::I3|constructor#_#new#tearOff;
}
extension type I4(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::I4|property;
constructor • = self::I4|constructor#;
constructor tearoff • = self::I4|constructor#_#new#tearOff;
}
extension type ET1(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get x = get self::ET1|x;
constructor • = self::ET1|constructor#;
constructor tearoff • = self::ET1|constructor#_#new#tearOff;
}
extension type ET2(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method x = self::ET2|x;
constructor • = self::ET2|constructor#;
constructor tearoff • = self::ET2|constructor#_#new#tearOff;
}
extension type ET3(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set x = set self::ET3|x;
constructor • = self::ET3|constructor#;
constructor tearoff • = self::ET3|constructor#_#new#tearOff;
}
extension type ET4(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field x = self::ET4|x;
constructor • = self::ET4|constructor#;
constructor tearoff • = self::ET4|constructor#_#new#tearOff;
}
extension type ET5(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method id1 = self::ET5|id1;
constructor • = self::ET5|constructor#;
constructor tearoff • = self::ET5|constructor#_#new#tearOff;
}
extension type ET6(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get id1 = get self::ET6|id1;
constructor • = self::ET6|constructor#;
constructor tearoff • = self::ET6|constructor#_#new#tearOff;
}
extension type ET7(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field id1 = self::ET7|id1;
constructor • = self::ET7|constructor#;
constructor tearoff • = self::ET7|constructor#_#new#tearOff;
}
extension type ET8(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set id1 = set self::ET8|id1;
constructor • = self::ET8|constructor#;
constructor tearoff • = self::ET8|constructor#_#new#tearOff;
}
extension type ET9(core::int id) implements self::I3 /* = core::int */, self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
constructor • = self::ET9|constructor#;
constructor tearoff • = self::ET9|constructor#_#new#tearOff;
}
extension type ET10(core::int id) implements self::I3 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::ET10|property;
constructor • = self::ET10|constructor#;
constructor tearoff • = self::ET10|constructor#_#new#tearOff;
}
extension type ET11(core::int id) implements self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
get property = self::ET11|get#property;
constructor • = self::ET11|constructor#;
constructor tearoff • = self::ET11|constructor#_#new#tearOff;

View file

@ -89,75 +89,90 @@ class C2 extends core::Object implements self::C1 {
return 1;
}
extension type I1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
method x = self::I1|x;
method tearoff x = self::I1|get#x;
constructor • = self::I1|constructor#;
constructor tearoff • = self::I1|constructor#_#new#tearOff;
}
extension type I2(core::int id1) {
abstract inline-class-member representation-field get id1() → core::int;
constructor • = self::I2|constructor#;
constructor tearoff • = self::I2|constructor#_#new#tearOff;
}
extension type I3(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
get property = self::I3|get#property;
constructor • = self::I3|constructor#;
constructor tearoff • = self::I3|constructor#_#new#tearOff;
}
extension type I4(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::I4|property;
constructor • = self::I4|constructor#;
constructor tearoff • = self::I4|constructor#_#new#tearOff;
}
extension type ET1(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get x = get self::ET1|x;
constructor • = self::ET1|constructor#;
constructor tearoff • = self::ET1|constructor#_#new#tearOff;
}
extension type ET2(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method x = self::ET2|x;
constructor • = self::ET2|constructor#;
constructor tearoff • = self::ET2|constructor#_#new#tearOff;
}
extension type ET3(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set x = set self::ET3|x;
constructor • = self::ET3|constructor#;
constructor tearoff • = self::ET3|constructor#_#new#tearOff;
}
extension type ET4(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field x = self::ET4|x;
constructor • = self::ET4|constructor#;
constructor tearoff • = self::ET4|constructor#_#new#tearOff;
}
extension type ET5(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method id1 = self::ET5|id1;
constructor • = self::ET5|constructor#;
constructor tearoff • = self::ET5|constructor#_#new#tearOff;
}
extension type ET6(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get id1 = get self::ET6|id1;
constructor • = self::ET6|constructor#;
constructor tearoff • = self::ET6|constructor#_#new#tearOff;
}
extension type ET7(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field id1 = self::ET7|id1;
constructor • = self::ET7|constructor#;
constructor tearoff • = self::ET7|constructor#_#new#tearOff;
}
extension type ET8(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set id1 = set self::ET8|id1;
constructor • = self::ET8|constructor#;
constructor tearoff • = self::ET8|constructor#_#new#tearOff;
}
extension type ET9(core::int id) implements self::I3 /* = core::int */, self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
constructor • = self::ET9|constructor#;
constructor tearoff • = self::ET9|constructor#_#new#tearOff;
}
extension type ET10(core::int id) implements self::I3 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::ET10|property;
constructor • = self::ET10|constructor#;
constructor tearoff • = self::ET10|constructor#_#new#tearOff;
}
extension type ET11(core::int id) implements self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
get property = self::ET11|get#property;
constructor • = self::ET11|constructor#;
constructor tearoff • = self::ET11|constructor#_#new#tearOff;

View file

@ -89,75 +89,90 @@ class C2 extends core::Object implements self::C1 {
return 1;
}
extension type I1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
method x = self::I1|x;
method tearoff x = self::I1|get#x;
constructor • = self::I1|constructor#;
constructor tearoff • = self::I1|constructor#_#new#tearOff;
}
extension type I2(core::int id1) {
abstract inline-class-member representation-field get id1() → core::int;
constructor • = self::I2|constructor#;
constructor tearoff • = self::I2|constructor#_#new#tearOff;
}
extension type I3(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
get property = self::I3|get#property;
constructor • = self::I3|constructor#;
constructor tearoff • = self::I3|constructor#_#new#tearOff;
}
extension type I4(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::I4|property;
constructor • = self::I4|constructor#;
constructor tearoff • = self::I4|constructor#_#new#tearOff;
}
extension type ET1(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get x = get self::ET1|x;
constructor • = self::ET1|constructor#;
constructor tearoff • = self::ET1|constructor#_#new#tearOff;
}
extension type ET2(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method x = self::ET2|x;
constructor • = self::ET2|constructor#;
constructor tearoff • = self::ET2|constructor#_#new#tearOff;
}
extension type ET3(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set x = set self::ET3|x;
constructor • = self::ET3|constructor#;
constructor tearoff • = self::ET3|constructor#_#new#tearOff;
}
extension type ET4(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field x = self::ET4|x;
constructor • = self::ET4|constructor#;
constructor tearoff • = self::ET4|constructor#_#new#tearOff;
}
extension type ET5(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method id1 = self::ET5|id1;
constructor • = self::ET5|constructor#;
constructor tearoff • = self::ET5|constructor#_#new#tearOff;
}
extension type ET6(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get id1 = get self::ET6|id1;
constructor • = self::ET6|constructor#;
constructor tearoff • = self::ET6|constructor#_#new#tearOff;
}
extension type ET7(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field id1 = self::ET7|id1;
constructor • = self::ET7|constructor#;
constructor tearoff • = self::ET7|constructor#_#new#tearOff;
}
extension type ET8(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set id1 = set self::ET8|id1;
constructor • = self::ET8|constructor#;
constructor tearoff • = self::ET8|constructor#_#new#tearOff;
}
extension type ET9(core::int id) implements self::I3 /* = core::int */, self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
constructor • = self::ET9|constructor#;
constructor tearoff • = self::ET9|constructor#_#new#tearOff;
}
extension type ET10(core::int id) implements self::I3 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::ET10|property;
constructor • = self::ET10|constructor#;
constructor tearoff • = self::ET10|constructor#_#new#tearOff;
}
extension type ET11(core::int id) implements self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
get property = self::ET11|get#property;
constructor • = self::ET11|constructor#;
constructor tearoff • = self::ET11|constructor#_#new#tearOff;

View file

@ -88,75 +88,90 @@ class C2 extends core::Object implements self::C1 {
;
}
extension type I1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
method x = self::I1|x;
method tearoff x = self::I1|get#x;
constructor • = self::I1|constructor#;
constructor tearoff • = self::I1|constructor#_#new#tearOff;
}
extension type I2(core::int id1) {
abstract inline-class-member representation-field get id1() → core::int;
constructor • = self::I2|constructor#;
constructor tearoff • = self::I2|constructor#_#new#tearOff;
}
extension type I3(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
get property = self::I3|get#property;
constructor • = self::I3|constructor#;
constructor tearoff • = self::I3|constructor#_#new#tearOff;
}
extension type I4(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::I4|property;
constructor • = self::I4|constructor#;
constructor tearoff • = self::I4|constructor#_#new#tearOff;
}
extension type ET1(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get x = get self::ET1|x;
constructor • = self::ET1|constructor#;
constructor tearoff • = self::ET1|constructor#_#new#tearOff;
}
extension type ET2(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method x = self::ET2|x;
constructor • = self::ET2|constructor#;
constructor tearoff • = self::ET2|constructor#_#new#tearOff;
}
extension type ET3(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set x = set self::ET3|x;
constructor • = self::ET3|constructor#;
constructor tearoff • = self::ET3|constructor#_#new#tearOff;
}
extension type ET4(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field x = self::ET4|x;
constructor • = self::ET4|constructor#;
constructor tearoff • = self::ET4|constructor#_#new#tearOff;
}
extension type ET5(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method id1 = self::ET5|id1;
constructor • = self::ET5|constructor#;
constructor tearoff • = self::ET5|constructor#_#new#tearOff;
}
extension type ET6(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get id1 = get self::ET6|id1;
constructor • = self::ET6|constructor#;
constructor tearoff • = self::ET6|constructor#_#new#tearOff;
}
extension type ET7(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field id1 = self::ET7|id1;
constructor • = self::ET7|constructor#;
constructor tearoff • = self::ET7|constructor#_#new#tearOff;
}
extension type ET8(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set id1 = set self::ET8|id1;
constructor • = self::ET8|constructor#;
constructor tearoff • = self::ET8|constructor#_#new#tearOff;
}
extension type ET9(core::int id) implements self::I3 /* = core::int */, self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
constructor • = self::ET9|constructor#;
constructor tearoff • = self::ET9|constructor#_#new#tearOff;
}
extension type ET10(core::int id) implements self::I3 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::ET10|property;
constructor • = self::ET10|constructor#;
constructor tearoff • = self::ET10|constructor#_#new#tearOff;
}
extension type ET11(core::int id) implements self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
get property = self::ET11|get#property;
constructor • = self::ET11|constructor#;
constructor tearoff • = self::ET11|constructor#_#new#tearOff;

View file

@ -89,75 +89,90 @@ class C2 extends core::Object implements self::C1 {
return 1;
}
extension type I1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
method x = self::I1|x;
method tearoff x = self::I1|get#x;
constructor • = self::I1|constructor#;
constructor tearoff • = self::I1|constructor#_#new#tearOff;
}
extension type I2(core::int id1) {
abstract inline-class-member representation-field get id1() → core::int;
constructor • = self::I2|constructor#;
constructor tearoff • = self::I2|constructor#_#new#tearOff;
}
extension type I3(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
get property = self::I3|get#property;
constructor • = self::I3|constructor#;
constructor tearoff • = self::I3|constructor#_#new#tearOff;
}
extension type I4(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::I4|property;
constructor • = self::I4|constructor#;
constructor tearoff • = self::I4|constructor#_#new#tearOff;
}
extension type ET1(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get x = get self::ET1|x;
constructor • = self::ET1|constructor#;
constructor tearoff • = self::ET1|constructor#_#new#tearOff;
}
extension type ET2(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method x = self::ET2|x;
constructor • = self::ET2|constructor#;
constructor tearoff • = self::ET2|constructor#_#new#tearOff;
}
extension type ET3(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set x = set self::ET3|x;
constructor • = self::ET3|constructor#;
constructor tearoff • = self::ET3|constructor#_#new#tearOff;
}
extension type ET4(core::int id) implements self::I1 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field x = self::ET4|x;
constructor • = self::ET4|constructor#;
constructor tearoff • = self::ET4|constructor#_#new#tearOff;
}
extension type ET5(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static method id1 = self::ET5|id1;
constructor • = self::ET5|constructor#;
constructor tearoff • = self::ET5|constructor#_#new#tearOff;
}
extension type ET6(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static get id1 = get self::ET6|id1;
constructor • = self::ET6|constructor#;
constructor tearoff • = self::ET6|constructor#_#new#tearOff;
}
extension type ET7(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static field id1 = self::ET7|id1;
constructor • = self::ET7|constructor#;
constructor tearoff • = self::ET7|constructor#_#new#tearOff;
}
extension type ET8(core::int id) implements self::I2 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set id1 = set self::ET8|id1;
constructor • = self::ET8|constructor#;
constructor tearoff • = self::ET8|constructor#_#new#tearOff;
}
extension type ET9(core::int id) implements self::I3 /* = core::int */, self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
constructor • = self::ET9|constructor#;
constructor tearoff • = self::ET9|constructor#_#new#tearOff;
}
extension type ET10(core::int id) implements self::I3 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
static set property = set self::ET10|property;
constructor • = self::ET10|constructor#;
constructor tearoff • = self::ET10|constructor#_#new#tearOff;
}
extension type ET11(core::int id) implements self::I4 /* = core::int */ {
abstract inline-class-member representation-field get id() → core::int;
get property = self::ET11|get#property;
constructor • = self::ET11|constructor#;
constructor tearoff • = self::ET11|constructor#_#new#tearOff;

View file

@ -21,6 +21,7 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;

View file

@ -21,6 +21,7 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;

View file

@ -21,6 +21,7 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;

View file

@ -21,6 +21,7 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;

View file

@ -21,6 +21,7 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int i) {
abstract inline-class-member representation-field get i() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;

View file

@ -3,12 +3,14 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;
constructor tearoff named = self::Class|constructor#_#named#tearOff;
}
extension type GenericClass<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::GenericClass|constructor#;
constructor tearoff • = self::GenericClass|constructor#_#new#tearOff;
}

View file

@ -3,12 +3,14 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;
constructor tearoff named = self::Class|constructor#_#named#tearOff;
}
extension type GenericClass<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::GenericClass|constructor#;
constructor tearoff • = self::GenericClass|constructor#_#new#tearOff;
}

View file

@ -3,12 +3,14 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;
constructor tearoff named = self::Class|constructor#_#named#tearOff;
}
extension type GenericClass<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::GenericClass|constructor#;
constructor tearoff • = self::GenericClass|constructor#_#new#tearOff;
}

View file

@ -3,12 +3,14 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;
constructor tearoff named = self::Class|constructor#_#named#tearOff;
}
extension type GenericClass<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::GenericClass|constructor#;
constructor tearoff • = self::GenericClass|constructor#_#new#tearOff;
}

View file

@ -3,12 +3,14 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;
constructor tearoff named = self::Class|constructor#_#named#tearOff;
}
extension type GenericClass<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::GenericClass|constructor#;
constructor tearoff • = self::GenericClass|constructor#_#new#tearOff;
}

View file

@ -3,12 +3,14 @@ import self as self;
import "dart:core" as core;
extension type Class(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class|constructor#;
constructor tearoff • = self::Class|constructor#_#new#tearOff;
constructor named = self::Class|constructor#named;
constructor tearoff named = self::Class|constructor#_#named#tearOff;
}
extension type GenericClass<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::GenericClass|constructor#;
constructor tearoff • = self::GenericClass|constructor#_#new#tearOff;
}

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type Class1(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class1|constructor#;
constructor tearoff • = self::Class1|constructor#_#new#tearOff;
constructor named1 = self::Class1|constructor#named1;
@ -19,6 +20,7 @@ extension type Class1(core::int it) {
constructor tearoff named6 = self::Class1|constructor#_#named6#tearOff;
}
extension type Class2<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::Class2|constructor#;
constructor tearoff • = self::Class2|constructor#_#new#tearOff;
constructor named1 = self::Class2|constructor#named1;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type Class1(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class1|constructor#;
constructor tearoff • = self::Class1|constructor#_#new#tearOff;
constructor named1 = self::Class1|constructor#named1;
@ -19,6 +20,7 @@ extension type Class1(core::int it) {
constructor tearoff named6 = self::Class1|constructor#_#named6#tearOff;
}
extension type Class2<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::Class2|constructor#;
constructor tearoff • = self::Class2|constructor#_#new#tearOff;
constructor named1 = self::Class2|constructor#named1;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type Class1(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class1|constructor#;
constructor tearoff • = self::Class1|constructor#_#new#tearOff;
constructor named1 = self::Class1|constructor#named1;
@ -19,6 +20,7 @@ extension type Class1(core::int it) {
constructor tearoff named6 = self::Class1|constructor#_#named6#tearOff;
}
extension type Class2<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::Class2|constructor#;
constructor tearoff • = self::Class2|constructor#_#new#tearOff;
constructor named1 = self::Class2|constructor#named1;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type Class1(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class1|constructor#;
constructor tearoff • = self::Class1|constructor#_#new#tearOff;
constructor named1 = self::Class1|constructor#named1;
@ -19,6 +20,7 @@ extension type Class1(core::int it) {
constructor tearoff named6 = self::Class1|constructor#_#named6#tearOff;
}
extension type Class2<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::Class2|constructor#;
constructor tearoff • = self::Class2|constructor#_#new#tearOff;
constructor named1 = self::Class2|constructor#named1;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type Class1(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class1|constructor#;
constructor tearoff • = self::Class1|constructor#_#new#tearOff;
constructor named1 = self::Class1|constructor#named1;
@ -19,6 +20,7 @@ extension type Class1(core::int it) {
constructor tearoff named6 = self::Class1|constructor#_#named6#tearOff;
}
extension type Class2<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::Class2|constructor#;
constructor tearoff • = self::Class2|constructor#_#new#tearOff;
constructor named1 = self::Class2|constructor#named1;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type Class1(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
constructor • = self::Class1|constructor#;
constructor tearoff • = self::Class1|constructor#_#new#tearOff;
constructor named1 = self::Class1|constructor#named1;
@ -19,6 +20,7 @@ extension type Class1(core::int it) {
constructor tearoff named6 = self::Class1|constructor#_#named6#tearOff;
}
extension type Class2<T extends core::Object? = dynamic>(T% it) {
abstract inline-class-member representation-field get it() → T%;
constructor • = self::Class2|constructor#;
constructor tearoff • = self::Class2|constructor#_#new#tearOff;
constructor named1 = self::Class2|constructor#named1;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type V1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
constructor n0 = self::V1|constructor#n0;
constructor tearoff n0 = self::V1|constructor#_#n0#tearOff;
constructor • = self::V1|constructor#;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type V1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
constructor n0 = self::V1|constructor#n0;
constructor tearoff n0 = self::V1|constructor#_#n0#tearOff;
constructor • = self::V1|constructor#;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type V1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
constructor n0 = self::V1|constructor#n0;
constructor tearoff n0 = self::V1|constructor#_#n0#tearOff;
constructor • = self::V1|constructor#;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type V1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
constructor n0 = self::V1|constructor#n0;
constructor tearoff n0 = self::V1|constructor#_#n0#tearOff;
constructor • = self::V1|constructor#;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type V1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
constructor n0 = self::V1|constructor#n0;
constructor tearoff n0 = self::V1|constructor#_#n0#tearOff;
constructor • = self::V1|constructor#;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type V1(core::int id) {
abstract inline-class-member representation-field get id() → core::int;
constructor n0 = self::V1|constructor#n0;
constructor tearoff n0 = self::V1|constructor#_#n0#tearOff;
constructor • = self::V1|constructor#;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type I(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I|m;
method tearoff m = self::I|get#m;
constructor _ = self::I|constructor#_;
@ -11,6 +12,7 @@ extension type I(core::int it) {
constructor tearoff • = self::I|constructor#_#new#tearOff;
}
extension type I2(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I2|m;
method tearoff m = self::I2|get#m;
constructor _ = self::I2|constructor#_;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type I(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I|m;
method tearoff m = self::I|get#m;
constructor _ = self::I|constructor#_;
@ -11,6 +12,7 @@ extension type I(core::int it) {
constructor tearoff • = self::I|constructor#_#new#tearOff;
}
extension type I2(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I2|m;
method tearoff m = self::I2|get#m;
constructor _ = self::I2|constructor#_;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type I(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I|m;
method tearoff m = self::I|get#m;
constructor _ = self::I|constructor#_;
@ -11,6 +12,7 @@ extension type I(core::int it) {
constructor tearoff • = self::I|constructor#_#new#tearOff;
}
extension type I2(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I2|m;
method tearoff m = self::I2|get#m;
constructor _ = self::I2|constructor#_;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type I(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I|m;
method tearoff m = self::I|get#m;
constructor _ = self::I|constructor#_;
@ -11,6 +12,7 @@ extension type I(core::int it) {
constructor tearoff • = self::I|constructor#_#new#tearOff;
}
extension type I2(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I2|m;
method tearoff m = self::I2|get#m;
constructor _ = self::I2|constructor#_;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type I(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I|m;
method tearoff m = self::I|get#m;
constructor _ = self::I|constructor#_;
@ -11,6 +12,7 @@ extension type I(core::int it) {
constructor tearoff • = self::I|constructor#_#new#tearOff;
}
extension type I2(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I2|m;
method tearoff m = self::I2|get#m;
constructor _ = self::I2|constructor#_;

View file

@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
extension type I(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I|m;
method tearoff m = self::I|get#m;
constructor _ = self::I|constructor#_;
@ -11,6 +12,7 @@ extension type I(core::int it) {
constructor tearoff • = self::I|constructor#_#new#tearOff;
}
extension type I2(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method m = self::I2|m;
method tearoff m = self::I2|get#m;
constructor _ = self::I2|constructor#_;

View file

@ -30,6 +30,7 @@ import self as self;
import "dart:core" as core;
extension type ExtensionType(core::int it) {
abstract inline-class-member representation-field get it() → core::int;
method constructorAndMethod = self::ExtensionType|constructorAndMethod;
method tearoff constructorAndMethod = self::ExtensionType|get#constructorAndMethod;
method factoryAndMethod = self::ExtensionType|factoryAndMethod;

Some files were not shown because too many files have changed in this diff Show more