mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 15:21:54 +00:00
[cfe] Add ClassDeclaration and ConstructorDeclaration interfaces
This prepares for supporting constructors in inline classes. Change-Id: I54e5c873f9352182fd197fe52177fc841fed426e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/277101 Reviewed-by: Chloe Stefantsova <cstefantsova@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
parent
f8307ed296
commit
851332b3be
|
@ -42,7 +42,33 @@ import 'type_variable_builder.dart';
|
|||
|
||||
const Uri? noUri = null;
|
||||
|
||||
abstract class ClassBuilder implements DeclarationBuilder {
|
||||
abstract class ClassMemberAccess {
|
||||
/// [Iterator] for all members declared in this class or any of its
|
||||
/// augmentations.
|
||||
///
|
||||
/// Duplicates and augmenting constructor are _not_ included.
|
||||
Iterator<T> fullConstructorIterator<T extends MemberBuilder>();
|
||||
|
||||
/// [NameIterator] for all constructors declared in this class or any of its
|
||||
/// augmentations.
|
||||
///
|
||||
/// Duplicates and augmenting constructors are _not_ included.
|
||||
NameIterator<T> fullConstructorNameIterator<T extends MemberBuilder>();
|
||||
|
||||
/// [Iterator] for all members declared in this class or any of its
|
||||
/// augmentations.
|
||||
///
|
||||
/// Duplicates and augmenting members are _not_ included.
|
||||
Iterator<T> fullMemberIterator<T extends Builder>();
|
||||
|
||||
/// [NameIterator] for all members declared in this class or any of its
|
||||
/// augmentations.
|
||||
///
|
||||
/// Duplicates and augmenting members are _not_ included.
|
||||
NameIterator<T> fullMemberNameIterator<T extends Builder>();
|
||||
}
|
||||
|
||||
abstract class ClassBuilder implements DeclarationBuilder, ClassMemberAccess {
|
||||
/// The type variables declared on a class, extension or mixin declaration.
|
||||
List<TypeVariableBuilder>? get typeVariables;
|
||||
|
||||
|
@ -128,33 +154,6 @@ abstract class ClassBuilder implements DeclarationBuilder {
|
|||
/// class.
|
||||
Member? lookupInstanceMember(ClassHierarchy hierarchy, Name name,
|
||||
{bool isSetter = false, bool isSuper = false});
|
||||
|
||||
// TODO(johnniwinther): Support filtering on the returns builder types in
|
||||
// these:
|
||||
|
||||
/// [Iterator] for all members declared in this class or any of its
|
||||
/// augmentations.
|
||||
///
|
||||
/// Duplicates and augmenting constructor are _not_ included.
|
||||
Iterator<T> fullConstructorIterator<T extends MemberBuilder>();
|
||||
|
||||
/// [NameIterator] for all constructors declared in this class or any of its
|
||||
/// augmentations.
|
||||
///
|
||||
/// Duplicates and augmenting constructors are _not_ included.
|
||||
NameIterator<T> fullConstructorNameIterator<T extends MemberBuilder>();
|
||||
|
||||
/// [Iterator] for all members declared in this class or any of its
|
||||
/// augmentations.
|
||||
///
|
||||
/// Duplicates and augmenting members are _not_ included.
|
||||
Iterator<T> fullMemberIterator<T extends Builder>();
|
||||
|
||||
/// [NameIterator] for all members declared in this class or any of its
|
||||
/// augmentations.
|
||||
///
|
||||
/// Duplicates and augmenting members are _not_ included.
|
||||
NameIterator<T> fullMemberNameIterator<T extends Builder>();
|
||||
}
|
||||
|
||||
abstract class ClassBuilderImpl extends DeclarationBuilderImpl
|
||||
|
|
|
@ -89,9 +89,9 @@ import '../modifier.dart'
|
|||
import '../names.dart' show emptyName, minusName, plusName;
|
||||
import '../problems.dart' show internalProblem, unhandled, unsupported;
|
||||
import '../scope.dart';
|
||||
import '../source/constructor_declaration.dart';
|
||||
import '../source/diet_parser.dart';
|
||||
import '../source/source_class_builder.dart';
|
||||
import '../source/source_constructor_builder.dart';
|
||||
import '../source/source_enum_builder.dart';
|
||||
import '../source/source_factory_builder.dart';
|
||||
import '../source/source_field_builder.dart';
|
||||
|
@ -961,25 +961,34 @@ class BodyBuilder extends StackListenerImpl
|
|||
Identifier identifier = pop() as Identifier;
|
||||
String name = identifier.name;
|
||||
Builder declaration;
|
||||
int fileOffset = identifier.charOffset;
|
||||
if (declarationBuilder != null) {
|
||||
declaration =
|
||||
declarationBuilder!.lookupLocalMember(name, required: true)!;
|
||||
} else {
|
||||
declaration = libraryBuilder.lookupLocalMember(name, required: true)!;
|
||||
}
|
||||
while (declaration.next != null) {
|
||||
// If we have duplicates, we try to find the right declaration.
|
||||
if (declaration.fileUri == uri &&
|
||||
declaration.charOffset == fileOffset) {
|
||||
break;
|
||||
}
|
||||
declaration = declaration.next!;
|
||||
}
|
||||
if (declaration.fileUri != uri || declaration.charOffset != fileOffset) {
|
||||
// If we don't have the right declaration, skip the initializer.
|
||||
continue;
|
||||
}
|
||||
SourceFieldBuilder fieldBuilder;
|
||||
if (declaration.isField && declaration.next == null) {
|
||||
if (declaration.isField) {
|
||||
fieldBuilder = declaration as SourceFieldBuilder;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
fields.add(fieldBuilder);
|
||||
if (initializer != null) {
|
||||
if (fieldBuilder.isDuplicate) {
|
||||
// Duplicate definition. The field might not be the correct one,
|
||||
// so we skip inference of the initializer.
|
||||
// Error reporting and recovery is handled elsewhere.
|
||||
} else if (fieldBuilder.hasBodyBeenBuilt) {
|
||||
if (fieldBuilder.hasBodyBeenBuilt) {
|
||||
// The initializer was already compiled (e.g., if it appear in the
|
||||
// outline, like constant field initializers) so we do not need to
|
||||
// perform type inference or transformations.
|
||||
|
@ -1082,7 +1091,7 @@ class BodyBuilder extends StackListenerImpl
|
|||
void prepareInitializers() {
|
||||
SourceFunctionBuilder member = this.member as SourceFunctionBuilder;
|
||||
scope = member.computeFormalParameterInitializerScope(scope);
|
||||
if (member is DeclaredSourceConstructorBuilder) {
|
||||
if (member is ConstructorDeclaration) {
|
||||
member.prepareInitializers();
|
||||
if (member.formals != null) {
|
||||
for (FormalParameterBuilder formal in member.formals!) {
|
||||
|
@ -1290,7 +1299,7 @@ class BodyBuilder extends StackListenerImpl
|
|||
}
|
||||
}
|
||||
}
|
||||
if (builder is AbstractSourceConstructorBuilder) {
|
||||
if (builder is ConstructorDeclaration) {
|
||||
finishConstructor(builder, asyncModifier, body,
|
||||
superParametersAsArguments: superParametersAsArguments);
|
||||
} else if (builder is SourceProcedureBuilder) {
|
||||
|
@ -1829,8 +1838,8 @@ class BodyBuilder extends StackListenerImpl
|
|||
handleNoInitializers();
|
||||
}
|
||||
if (doFinishConstructor) {
|
||||
AbstractSourceConstructorBuilder constructorBuilder =
|
||||
member as AbstractSourceConstructorBuilder;
|
||||
ConstructorDeclaration constructorBuilder =
|
||||
member as ConstructorDeclaration;
|
||||
List<FormalParameterBuilder>? formals = constructorBuilder.formals;
|
||||
finishConstructor(constructorBuilder, AsyncMarker.Sync, null,
|
||||
superParametersAsArguments: formals != null
|
||||
|
@ -1879,7 +1888,7 @@ class BodyBuilder extends StackListenerImpl
|
|||
return arguments;
|
||||
}
|
||||
|
||||
void finishConstructor(AbstractSourceConstructorBuilder builder,
|
||||
void finishConstructor(ConstructorDeclaration builder,
|
||||
AsyncMarker asyncModifier, Statement? body,
|
||||
{required List<Object /* Expression | NamedExpression */ >?
|
||||
superParametersAsArguments}) {
|
||||
|
@ -1984,7 +1993,7 @@ class BodyBuilder extends StackListenerImpl
|
|||
if (initializers.last is SuperInitializer) {
|
||||
SuperInitializer superInitializer =
|
||||
initializers.last as SuperInitializer;
|
||||
if (builder.declarationBuilder.isEnum) {
|
||||
if (builder.classDeclaration.isEnum) {
|
||||
initializers[initializers.length - 1] = buildInvalidInitializer(
|
||||
buildProblem(fasta.messageEnumConstructorSuperInitializer,
|
||||
superInitializer.fileOffset, noLength))
|
||||
|
@ -7932,8 +7941,8 @@ class BodyBuilder extends StackListenerImpl
|
|||
]);
|
||||
}
|
||||
}
|
||||
DeclaredSourceConstructorBuilder constructorBuilder =
|
||||
member as DeclaredSourceConstructorBuilder;
|
||||
ConstructorDeclaration constructorBuilder =
|
||||
member as ConstructorDeclaration;
|
||||
constructorBuilder.registerInitializedField(builder);
|
||||
return builder.buildInitializer(assignmentOffset, expression,
|
||||
isSynthetic: formal != null);
|
||||
|
|
|
@ -63,6 +63,8 @@ import '../messages.dart'
|
|||
templateSuperclassHasNoDefaultConstructor;
|
||||
import '../problems.dart' show unhandled;
|
||||
import '../scope.dart' show AmbiguousBuilder;
|
||||
import '../source/class_declaration.dart';
|
||||
import '../source/constructor_declaration.dart';
|
||||
import '../source/source_class_builder.dart' show SourceClassBuilder;
|
||||
import '../source/source_constructor_builder.dart';
|
||||
import '../source/source_field_builder.dart';
|
||||
|
@ -1259,34 +1261,6 @@ class KernelTarget extends TargetImplementation {
|
|||
if (builder.isPatch) return;
|
||||
Class cls = builder.cls;
|
||||
|
||||
/// Quotes below are from [Dart Programming Language Specification, 4th
|
||||
/// Edition](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf):
|
||||
List<SourceFieldBuilder> uninitializedFields = [];
|
||||
List<SourceFieldBuilder> nonFinalFields = [];
|
||||
List<SourceFieldBuilder> lateFinalFields = [];
|
||||
|
||||
Iterator<SourceFieldBuilder> fieldIterator =
|
||||
builder.fullMemberIterator<SourceFieldBuilder>();
|
||||
while (fieldIterator.moveNext()) {
|
||||
SourceFieldBuilder fieldBuilder = fieldIterator.current;
|
||||
if (fieldBuilder.isAbstract || fieldBuilder.isExternal) {
|
||||
// Skip abstract and external fields. These are abstract/external
|
||||
// getters/setters and have no initialization.
|
||||
continue;
|
||||
}
|
||||
if (fieldBuilder.isDeclarationInstanceMember && !fieldBuilder.isFinal) {
|
||||
nonFinalFields.add(fieldBuilder);
|
||||
}
|
||||
if (fieldBuilder.isDeclarationInstanceMember &&
|
||||
fieldBuilder.isLate &&
|
||||
fieldBuilder.isFinal) {
|
||||
lateFinalFields.add(fieldBuilder);
|
||||
}
|
||||
if (!fieldBuilder.hasInitializer) {
|
||||
uninitializedFields.add(fieldBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
Constructor? superTarget;
|
||||
for (Constructor constructor in cls.constructors) {
|
||||
if (constructor.isExternal) {
|
||||
|
@ -1336,63 +1310,95 @@ class KernelTarget extends TargetImplementation {
|
|||
constructor.function.body = new EmptyStatement()
|
||||
..parent = constructor.function;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
finishConstructorsInternal(builder);
|
||||
}
|
||||
|
||||
void finishConstructorsInternal(ClassDeclaration builder) {
|
||||
SourceLibraryBuilder libraryBuilder = builder.libraryBuilder;
|
||||
|
||||
/// Quotes below are from [Dart Programming Language Specification, 4th
|
||||
/// Edition](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf):
|
||||
List<SourceFieldBuilder> uninitializedFields = [];
|
||||
List<SourceFieldBuilder> nonFinalFields = [];
|
||||
List<SourceFieldBuilder> lateFinalFields = [];
|
||||
|
||||
Iterator<SourceFieldBuilder> fieldIterator =
|
||||
builder.fullMemberIterator<SourceFieldBuilder>();
|
||||
while (fieldIterator.moveNext()) {
|
||||
SourceFieldBuilder fieldBuilder = fieldIterator.current;
|
||||
if (fieldBuilder.isAbstract || fieldBuilder.isExternal) {
|
||||
// Skip abstract and external fields. These are abstract/external
|
||||
// getters/setters and have no initialization.
|
||||
continue;
|
||||
}
|
||||
if (fieldBuilder.isDeclarationInstanceMember && !fieldBuilder.isFinal) {
|
||||
nonFinalFields.add(fieldBuilder);
|
||||
}
|
||||
if (fieldBuilder.isDeclarationInstanceMember &&
|
||||
fieldBuilder.isLate &&
|
||||
fieldBuilder.isFinal) {
|
||||
lateFinalFields.add(fieldBuilder);
|
||||
}
|
||||
if (!fieldBuilder.hasInitializer) {
|
||||
uninitializedFields.add(fieldBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
Map<ConstructorDeclaration, Set<SourceFieldBuilder>>
|
||||
constructorInitializedFields = new Map.identity();
|
||||
Set<SourceFieldBuilder>? initializedFieldBuilders = null;
|
||||
|
||||
Iterator<ConstructorDeclaration> constructorIterator =
|
||||
builder.fullConstructorIterator<ConstructorDeclaration>();
|
||||
while (constructorIterator.moveNext()) {
|
||||
ConstructorDeclaration constructor = constructorIterator.current;
|
||||
if (constructor.isEffectivelyRedirecting) continue;
|
||||
if (constructor.isConst && nonFinalFields.isNotEmpty) {
|
||||
builder.addProblem(messageConstConstructorNonFinalField,
|
||||
constructor.fileOffset, noLength,
|
||||
constructor.charOffset, noLength,
|
||||
context: nonFinalFields
|
||||
.map((field) => messageConstConstructorNonFinalFieldCause
|
||||
.withLocation(field.fileUri, field.charOffset, noLength))
|
||||
.toList());
|
||||
nonFinalFields.clear();
|
||||
}
|
||||
SourceLibraryBuilder library = builder.libraryBuilder;
|
||||
if (library.isNonNullableByDefault) {
|
||||
if (libraryBuilder.isNonNullableByDefault) {
|
||||
if (constructor.isConst && lateFinalFields.isNotEmpty) {
|
||||
for (FieldBuilder field in lateFinalFields) {
|
||||
builder.addProblem(messageConstConstructorLateFinalFieldError,
|
||||
field.charOffset, noLength,
|
||||
context: [
|
||||
messageConstConstructorLateFinalFieldCause.withLocation(
|
||||
constructor.fileUri, constructor.fileOffset, noLength)
|
||||
constructor.fileUri!, constructor.charOffset, noLength)
|
||||
]);
|
||||
}
|
||||
lateFinalFields.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Map<DeclaredSourceConstructorBuilder, Set<SourceFieldBuilder>>
|
||||
constructorInitializedFields = new Map.identity();
|
||||
Set<SourceFieldBuilder>? initializedFields = null;
|
||||
|
||||
Iterator<DeclaredSourceConstructorBuilder> constructorIterator =
|
||||
builder.fullConstructorIterator<DeclaredSourceConstructorBuilder>();
|
||||
while (constructorIterator.moveNext()) {
|
||||
DeclaredSourceConstructorBuilder constructorBuilder =
|
||||
constructorIterator.current;
|
||||
if (constructorBuilder.isEffectivelyExternal) continue;
|
||||
if (constructorBuilder.isEffectivelyRedirecting) continue;
|
||||
if (constructor.isEffectivelyExternal) continue;
|
||||
Set<SourceFieldBuilder> fields =
|
||||
constructorBuilder.takeInitializedFields() ?? const {};
|
||||
constructorInitializedFields[constructorBuilder] = fields;
|
||||
(initializedFields ??= new Set<SourceFieldBuilder>.identity())
|
||||
constructor.takeInitializedFields() ?? const {};
|
||||
constructorInitializedFields[constructor] = fields;
|
||||
(initializedFieldBuilders ??= new Set<SourceFieldBuilder>.identity())
|
||||
.addAll(fields);
|
||||
}
|
||||
|
||||
// Run through all fields that aren't initialized by any constructor, and
|
||||
// set their initializer to `null`.
|
||||
for (SourceFieldBuilder fieldBuilder in uninitializedFields) {
|
||||
if (initializedFields == null ||
|
||||
!initializedFields.contains(fieldBuilder)) {
|
||||
if (initializedFieldBuilders == null ||
|
||||
!initializedFieldBuilders.contains(fieldBuilder)) {
|
||||
bool uninitializedFinalOrNonNullableFieldIsError =
|
||||
cls.enclosingLibrary.isNonNullableByDefault ||
|
||||
(cls.constructors.isNotEmpty || cls.isMixinDeclaration);
|
||||
libraryBuilder.isNonNullableByDefault ||
|
||||
builder.hasGenerativeConstructor ||
|
||||
builder.isMixinDeclaration;
|
||||
if (!fieldBuilder.isLate) {
|
||||
if (fieldBuilder.isFinal &&
|
||||
uninitializedFinalOrNonNullableFieldIsError) {
|
||||
String uri = '${fieldBuilder.libraryBuilder.importUri}';
|
||||
String uri = '${libraryBuilder.importUri}';
|
||||
String file = fieldBuilder.fileUri.pathSegments.last;
|
||||
if (uri == 'dart:html' ||
|
||||
uri == 'dart:svg' ||
|
||||
|
@ -1401,7 +1407,7 @@ class KernelTarget extends TargetImplementation {
|
|||
// TODO(johnniwinther): Use external getters instead of final
|
||||
// fields. See https://github.com/dart-lang/sdk/issues/33762
|
||||
} else {
|
||||
builder.libraryBuilder.addProblem(
|
||||
libraryBuilder.addProblem(
|
||||
templateFinalFieldNotInitialized
|
||||
.withArguments(fieldBuilder.name),
|
||||
fieldBuilder.charOffset,
|
||||
|
@ -1411,37 +1417,38 @@ class KernelTarget extends TargetImplementation {
|
|||
} else if (fieldBuilder.fieldType is! InvalidType &&
|
||||
fieldBuilder.fieldType.isPotentiallyNonNullable &&
|
||||
uninitializedFinalOrNonNullableFieldIsError) {
|
||||
SourceLibraryBuilder library = builder.libraryBuilder;
|
||||
if (library.isNonNullableByDefault) {
|
||||
library.addProblem(
|
||||
if (libraryBuilder.isNonNullableByDefault) {
|
||||
libraryBuilder.addProblem(
|
||||
templateFieldNonNullableWithoutInitializerError.withArguments(
|
||||
fieldBuilder.name,
|
||||
fieldBuilder.fieldType,
|
||||
library.isNonNullableByDefault),
|
||||
libraryBuilder.isNonNullableByDefault),
|
||||
fieldBuilder.charOffset,
|
||||
fieldBuilder.name.length,
|
||||
fieldBuilder.fileUri);
|
||||
}
|
||||
}
|
||||
fieldBuilder.field.initializer = new NullLiteral()
|
||||
..parent = fieldBuilder.field;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Run through all fields that are initialized by some constructor, and
|
||||
// make sure that all other constructors also initialize them.
|
||||
constructorInitializedFields.forEach(
|
||||
(DeclaredSourceConstructorBuilder constructorBuilder,
|
||||
Set<FieldBuilder> fieldBuilders) {
|
||||
for (MapEntry<ConstructorDeclaration, Set<FieldBuilder>> entry
|
||||
in constructorInitializedFields.entries) {
|
||||
ConstructorDeclaration constructorBuilder = entry.key;
|
||||
Set<FieldBuilder> fieldBuilders = entry.value;
|
||||
for (SourceFieldBuilder fieldBuilder
|
||||
in initializedFields!.difference(fieldBuilders)) {
|
||||
in initializedFieldBuilders!.difference(fieldBuilders)) {
|
||||
if (!fieldBuilder.hasInitializer && !fieldBuilder.isLate) {
|
||||
FieldInitializer initializer =
|
||||
new FieldInitializer(fieldBuilder.field, new NullLiteral())
|
||||
..isSynthetic = true;
|
||||
initializer.parent = constructorBuilder.constructor;
|
||||
constructorBuilder.constructor.initializers.insert(0, initializer);
|
||||
constructorBuilder.prependInitializer(initializer);
|
||||
if (fieldBuilder.isFinal) {
|
||||
builder.libraryBuilder.addProblem(
|
||||
libraryBuilder.addProblem(
|
||||
templateFinalFieldNotInitializedByConstructor
|
||||
.withArguments(fieldBuilder.name),
|
||||
constructorBuilder.charOffset,
|
||||
|
@ -1456,12 +1463,11 @@ class KernelTarget extends TargetImplementation {
|
|||
} else if (fieldBuilder.field.type is! InvalidType &&
|
||||
!fieldBuilder.isLate &&
|
||||
fieldBuilder.field.type.isPotentiallyNonNullable) {
|
||||
SourceLibraryBuilder library = builder.libraryBuilder;
|
||||
if (library.isNonNullableByDefault) {
|
||||
library.addProblem(
|
||||
if (libraryBuilder.isNonNullableByDefault) {
|
||||
libraryBuilder.addProblem(
|
||||
templateFieldNonNullableNotInitializedByConstructorError
|
||||
.withArguments(fieldBuilder.name, fieldBuilder.field.type,
|
||||
library.isNonNullableByDefault),
|
||||
libraryBuilder.isNonNullableByDefault),
|
||||
constructorBuilder.charOffset,
|
||||
noLength,
|
||||
constructorBuilder.fileUri,
|
||||
|
@ -1475,23 +1481,6 @@ class KernelTarget extends TargetImplementation {
|
|||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Set<Field>? initializedFieldsKernel = null;
|
||||
if (initializedFields != null) {
|
||||
for (FieldBuilder fieldBuilder in initializedFields) {
|
||||
(initializedFieldsKernel ??= new Set<Field>.identity())
|
||||
.add(fieldBuilder.field);
|
||||
}
|
||||
}
|
||||
|
||||
for (Field field in cls.fields) {
|
||||
if (field.initializer == null &&
|
||||
!field.isLate &&
|
||||
(initializedFieldsKernel == null ||
|
||||
!initializedFieldsKernel.contains(field))) {
|
||||
field.initializer = new NullLiteral()..parent = field;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
21
pkg/front_end/lib/src/fasta/source/class_declaration.dart
Normal file
21
pkg/front_end/lib/src/fasta/source/class_declaration.dart
Normal file
|
@ -0,0 +1,21 @@
|
|||
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import '../builder/class_builder.dart';
|
||||
import '../builder/declaration_builder.dart';
|
||||
import 'source_library_builder.dart';
|
||||
|
||||
/// Common interface for builders for a class declarations in source code, such
|
||||
/// as a regular class declaration and an inline class declaration.
|
||||
abstract class ClassDeclaration
|
||||
implements DeclarationBuilder, ClassMemberAccess {
|
||||
@override
|
||||
SourceLibraryBuilder get libraryBuilder;
|
||||
|
||||
bool get isMixinDeclaration;
|
||||
|
||||
/// Returns `true` if this class declaration has a generative constructor,
|
||||
/// either explicitly or implicitly through a no-name default constructor.
|
||||
bool get hasGenerativeConstructor;
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:kernel/ast.dart';
|
||||
|
||||
import '../kernel/expression_generator_helper.dart';
|
||||
import '../type_inference/inference_results.dart';
|
||||
import 'class_declaration.dart';
|
||||
import 'source_field_builder.dart';
|
||||
import 'source_function_builder.dart';
|
||||
|
||||
/// Common interface for builders for generative constructor declarations in
|
||||
/// source code, such as a generative constructor in a regular class or a
|
||||
/// generative constructor in an inline class.
|
||||
abstract class ConstructorDeclaration implements SourceFunctionBuilder {
|
||||
/// Returns the enclosing [ClassDeclaration].
|
||||
ClassDeclaration get classDeclaration;
|
||||
|
||||
/// Returns `true` if this constructor, including its augmentations, is
|
||||
/// external.
|
||||
///
|
||||
/// An augmented constructor is considered external if all of the origin
|
||||
/// and augmentation constructors are external.
|
||||
bool get isEffectivelyExternal;
|
||||
|
||||
/// Returns `true` if this constructor or any of its augmentations are
|
||||
/// redirecting.
|
||||
///
|
||||
/// An augmented constructor is considered redirecting if any of the origin
|
||||
/// or augmentation constructors is redirecting. Since it is an error if more
|
||||
/// than one is redirecting, only one can be redirecting in the without
|
||||
/// errors.
|
||||
bool get isEffectivelyRedirecting;
|
||||
|
||||
void addInitializer(Initializer initializer, ExpressionGeneratorHelper helper,
|
||||
{required InitializerInferenceResult? inferenceResult});
|
||||
|
||||
List<Initializer> get initializers;
|
||||
|
||||
void prepareInitializers();
|
||||
|
||||
void prependInitializer(Initializer initializer);
|
||||
|
||||
/// Registers field as being initialized by this constructor.
|
||||
///
|
||||
/// The field can be initialized either via an initializing formal or via an
|
||||
/// entry in the constructor initializer list.
|
||||
void registerInitializedField(SourceFieldBuilder fieldBuilder);
|
||||
|
||||
/// Returns the fields registered as initialized by this constructor.
|
||||
///
|
||||
/// Returns the set of fields previously registered via
|
||||
/// [registerInitializedField] and passes on the ownership of the collection
|
||||
/// to the caller.
|
||||
Set<SourceFieldBuilder>? takeInitializedFields();
|
||||
}
|
|
@ -40,6 +40,7 @@ import '../builder/type_variable_builder.dart';
|
|||
import '../builder/void_type_declaration_builder.dart';
|
||||
import '../dill/dill_member_builder.dart';
|
||||
import '../fasta_codes.dart';
|
||||
import '../identifiers.dart';
|
||||
import '../kernel/hierarchy/hierarchy_builder.dart';
|
||||
import '../kernel/hierarchy/hierarchy_node.dart';
|
||||
import '../kernel/kernel_helper.dart';
|
||||
|
@ -47,12 +48,12 @@ import '../kernel/redirecting_factory_body.dart'
|
|||
show RedirectingFactoryBody, redirectingName;
|
||||
import '../kernel/type_algorithms.dart' show computeTypeVariableBuilderVariance;
|
||||
import '../kernel/utils.dart' show compareProcedures;
|
||||
import '../identifiers.dart';
|
||||
import '../names.dart' show equalsName;
|
||||
import '../problems.dart' show unexpected, unhandled, unimplemented;
|
||||
import '../scope.dart';
|
||||
import '../type_inference/type_schema.dart';
|
||||
import '../util/helpers.dart';
|
||||
import 'class_declaration.dart';
|
||||
import 'source_constructor_builder.dart';
|
||||
import 'source_factory_builder.dart';
|
||||
import 'source_field_builder.dart';
|
||||
|
@ -93,7 +94,7 @@ Class initializeClass(
|
|||
}
|
||||
|
||||
class SourceClassBuilder extends ClassBuilderImpl
|
||||
implements Comparable<SourceClassBuilder> {
|
||||
implements Comparable<SourceClassBuilder>, ClassDeclaration {
|
||||
final Class actualCls;
|
||||
|
||||
final List<ConstructorReferenceBuilder>? constructorReferences;
|
||||
|
@ -398,6 +399,10 @@ class SourceClassBuilder extends ClassBuilderImpl
|
|||
NameIterator<T> fullConstructorNameIterator<T extends MemberBuilder>() =>
|
||||
new ClassConstructorNameIterator<T>(this, includeDuplicates: false);
|
||||
|
||||
@override
|
||||
bool get hasGenerativeConstructor =>
|
||||
fullConstructorNameIterator<SourceConstructorBuilder>().moveNext();
|
||||
|
||||
/// Looks up the constructor by [name] on the class built by this class
|
||||
/// builder.
|
||||
///
|
||||
|
|
|
@ -53,6 +53,8 @@ import '../source/source_member_builder.dart';
|
|||
import '../type_inference/inference_results.dart';
|
||||
import '../type_inference/type_schema.dart';
|
||||
import '../util/helpers.dart' show DelayedActionPerformer;
|
||||
import 'class_declaration.dart';
|
||||
import 'constructor_declaration.dart';
|
||||
import 'name_scheme.dart';
|
||||
import 'source_field_builder.dart';
|
||||
import 'source_function_builder.dart';
|
||||
|
@ -78,7 +80,7 @@ abstract class SourceConstructorBuilder
|
|||
|
||||
abstract class AbstractSourceConstructorBuilder
|
||||
extends SourceFunctionBuilderImpl
|
||||
implements SourceConstructorBuilder, Inferable {
|
||||
implements SourceConstructorBuilder, Inferable, ConstructorDeclaration {
|
||||
@override
|
||||
final OmittedTypeBuilder returnType;
|
||||
|
||||
|
@ -166,6 +168,7 @@ abstract class AbstractSourceConstructorBuilder
|
|||
}
|
||||
}
|
||||
|
||||
@override
|
||||
List<Initializer> get initializers;
|
||||
|
||||
@override
|
||||
|
@ -193,6 +196,7 @@ abstract class AbstractSourceConstructorBuilder
|
|||
|
||||
RedirectingInitializer? redirectingInitializer;
|
||||
|
||||
@override
|
||||
void addInitializer(Initializer initializer, ExpressionGeneratorHelper helper,
|
||||
{required InitializerInferenceResult? inferenceResult}) {
|
||||
if (initializer is SuperInitializer) {
|
||||
|
@ -390,6 +394,9 @@ class DeclaredSourceConstructorBuilder
|
|||
// TODO(johnniwinther): Use [NameScheme] for constructor tear-off names.
|
||||
}
|
||||
|
||||
@override
|
||||
ClassDeclaration get classDeclaration => classBuilder;
|
||||
|
||||
@override
|
||||
SourceClassBuilder get classBuilder =>
|
||||
super.classBuilder as SourceClassBuilder;
|
||||
|
@ -423,11 +430,7 @@ class DeclaredSourceConstructorBuilder
|
|||
@override
|
||||
bool get isClassInstanceMember => false;
|
||||
|
||||
/// Returns `true` if this constructor, including its augmentations, is
|
||||
/// external.
|
||||
///
|
||||
/// An augmented constructor is considered external if all of the origin
|
||||
/// and augmentation constructors are external.
|
||||
@override
|
||||
bool get isEffectivelyExternal {
|
||||
bool isExternal = this.isExternal;
|
||||
if (isExternal) {
|
||||
|
@ -441,13 +444,7 @@ class DeclaredSourceConstructorBuilder
|
|||
return isExternal;
|
||||
}
|
||||
|
||||
/// Returns `true` if this constructor or any of its augmentations are
|
||||
/// redirecting.
|
||||
///
|
||||
/// An augmented constructor is considered redirecting if any of the origin
|
||||
/// or augmentation constructors is redirecting. Since it is an error if more
|
||||
/// than one is redirecting, only one can be redirecting in the without
|
||||
/// errors.
|
||||
@override
|
||||
bool get isEffectivelyRedirecting {
|
||||
bool isRedirecting = this.isRedirecting;
|
||||
if (!isRedirecting) {
|
||||
|
@ -849,6 +846,7 @@ class DeclaredSourceConstructorBuilder
|
|||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void prepareInitializers() {
|
||||
// For const constructors we parse initializers already at the outlining
|
||||
// stage, there is no easy way to make body building stage skip initializer
|
||||
|
@ -864,10 +862,13 @@ class DeclaredSourceConstructorBuilder
|
|||
superInitializer = null;
|
||||
}
|
||||
|
||||
/// Registers field as being initialized by this constructor.
|
||||
///
|
||||
/// The field can be initialized either via an initializing formal or via an
|
||||
/// entry in the constructor initializer list.
|
||||
@override
|
||||
void prependInitializer(Initializer initializer) {
|
||||
initializer.parent = constructor;
|
||||
constructor.initializers.insert(0, initializer);
|
||||
}
|
||||
|
||||
@override
|
||||
void registerInitializedField(SourceFieldBuilder fieldBuilder) {
|
||||
if (isPatch) {
|
||||
origin.registerInitializedField(fieldBuilder);
|
||||
|
@ -876,11 +877,7 @@ class DeclaredSourceConstructorBuilder
|
|||
}
|
||||
}
|
||||
|
||||
/// Returns the fields registered as initialized by this constructor.
|
||||
///
|
||||
/// Returns the set of fields previously registered via
|
||||
/// [registerInitializedField] and passes on the ownership of the collection
|
||||
/// to the caller.
|
||||
@override
|
||||
Set<SourceFieldBuilder>? takeInitializedFields() {
|
||||
Set<SourceFieldBuilder>? result = _initializedFields;
|
||||
_initializedFields = null;
|
||||
|
@ -1028,8 +1025,10 @@ class SourceInlineClassConstructorBuilder
|
|||
late final Procedure _constructor;
|
||||
late final Procedure? _constructorTearOff;
|
||||
|
||||
Set<SourceFieldBuilder>? _initializedFields;
|
||||
|
||||
@override
|
||||
final List<Initializer> initializers = [];
|
||||
List<Initializer> initializers = [];
|
||||
|
||||
SourceInlineClassConstructorBuilder(
|
||||
List<MetadataBuilder>? metadata,
|
||||
|
@ -1082,6 +1081,9 @@ class SourceInlineClassConstructorBuilder
|
|||
}
|
||||
}
|
||||
|
||||
@override
|
||||
ClassDeclaration get classDeclaration => inlineClassBuilder;
|
||||
|
||||
SourceInlineClassBuilder get inlineClassBuilder =>
|
||||
parent as SourceInlineClassBuilder;
|
||||
|
||||
|
@ -1170,5 +1172,44 @@ class SourceInlineClassConstructorBuilder
|
|||
_buildFormals(_constructor);
|
||||
}
|
||||
|
||||
// TODO(johnniwinther): Generate initializers and return statement.
|
||||
@override
|
||||
void prepareInitializers() {
|
||||
// For const constructors we parse initializers already at the outlining
|
||||
// stage, there is no easy way to make body building stage skip initializer
|
||||
// parsing, so we simply clear parsed initializers and rebuild them
|
||||
// again.
|
||||
// For when doing an experimental incremental compilation they are also
|
||||
// potentially done more than once (because it rebuilds the bodies of an old
|
||||
// compile), and so we also clear them.
|
||||
// Note: this method clears both initializers from the target Kernel node
|
||||
// and internal state associated with parsing initializers.
|
||||
initializers = [];
|
||||
redirectingInitializer = null;
|
||||
superInitializer = null;
|
||||
}
|
||||
|
||||
@override
|
||||
void prependInitializer(Initializer initializer) {
|
||||
initializers.insert(0, initializer);
|
||||
}
|
||||
|
||||
@override
|
||||
void registerInitializedField(SourceFieldBuilder fieldBuilder) {
|
||||
(_initializedFields ??= {}).add(fieldBuilder);
|
||||
}
|
||||
|
||||
@override
|
||||
Set<SourceFieldBuilder>? takeInitializedFields() {
|
||||
Set<SourceFieldBuilder>? result = _initializedFields;
|
||||
_initializedFields = null;
|
||||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isEffectivelyExternal => isExternal;
|
||||
|
||||
@override
|
||||
bool get isEffectivelyRedirecting => isRedirecting;
|
||||
|
||||
// TODO(johnniwinther): Generate initializers and return statement.
|
||||
}
|
||||
|
|
|
@ -2,14 +2,15 @@
|
|||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:front_end/src/fasta/source/source_builder_mixins.dart';
|
||||
import 'package:kernel/ast.dart';
|
||||
|
||||
import '../../base/common.dart';
|
||||
import '../builder/builder.dart';
|
||||
import '../builder/inline_class_builder.dart';
|
||||
import '../builder/library_builder.dart';
|
||||
import '../builder/member_builder.dart';
|
||||
import '../builder/metadata_builder.dart';
|
||||
import '../builder/name_iterator.dart';
|
||||
import '../builder/type_builder.dart';
|
||||
import '../builder/type_variable_builder.dart';
|
||||
import '../fasta_codes.dart'
|
||||
|
@ -19,12 +20,15 @@ import '../fasta_codes.dart'
|
|||
noLength;
|
||||
import '../problems.dart';
|
||||
import '../scope.dart';
|
||||
import 'class_declaration.dart';
|
||||
import 'source_builder_mixins.dart';
|
||||
import 'source_field_builder.dart';
|
||||
import 'source_library_builder.dart';
|
||||
import 'source_member_builder.dart';
|
||||
|
||||
class SourceInlineClassBuilder extends InlineClassBuilderImpl
|
||||
with SourceDeclarationBuilderMixin {
|
||||
with SourceDeclarationBuilderMixin
|
||||
implements ClassDeclaration {
|
||||
final InlineClass _inlineClass;
|
||||
|
||||
SourceInlineClassBuilder? _origin;
|
||||
|
@ -197,4 +201,37 @@ class SourceInlineClassBuilder extends InlineClassBuilderImpl
|
|||
// TODO(johnniwinther): Implement representationType.
|
||||
@override
|
||||
DartType get declaredRepresentationType => throw new UnimplementedError();
|
||||
|
||||
@override
|
||||
Iterator<T> fullConstructorIterator<T extends MemberBuilder>() {
|
||||
// TODO(johnniwinther): Implement fullConstructorIterator
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
NameIterator<T> fullConstructorNameIterator<T extends MemberBuilder>() {
|
||||
// TODO(johnniwinther): Implement fullConstructorNameIterator
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Iterator<T> fullMemberIterator<T extends Builder>() {
|
||||
// TODO(johnniwinther): Implement fullMemberIterator
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
NameIterator<T> fullMemberNameIterator<T extends Builder>() {
|
||||
// TODO(johnniwinther): Implement fullMemberNameIterator
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isMixinDeclaration => false;
|
||||
|
||||
@override
|
||||
bool get hasGenerativeConstructor {
|
||||
// TODO(johnniwinther): Implement hasGenerativeConstructor
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -107,6 +107,7 @@ import '../operator.dart';
|
|||
import '../problems.dart' show unexpected, unhandled;
|
||||
import '../scope.dart';
|
||||
import '../util/helpers.dart';
|
||||
import 'constructor_declaration.dart';
|
||||
import 'name_scheme.dart';
|
||||
import 'source_class_builder.dart' show SourceClassBuilder;
|
||||
import 'source_constructor_builder.dart';
|
||||
|
@ -3990,9 +3991,9 @@ class SourceLibraryBuilder extends LibraryBuilderImpl {
|
|||
inErrorRecovery: inErrorRecovery);
|
||||
formals = member.formals;
|
||||
} else {
|
||||
assert(member is AbstractSourceConstructorBuilder,
|
||||
assert(member is ConstructorDeclaration,
|
||||
"Unexpected constructor member (${member.runtimeType}).");
|
||||
formals = (member as AbstractSourceConstructorBuilder).formals;
|
||||
formals = (member as ConstructorDeclaration).formals;
|
||||
}
|
||||
if (formals != null && formals.isNotEmpty) {
|
||||
for (FormalParameterBuilder formal in formals) {
|
||||
|
|
|
@ -74,7 +74,7 @@ import "dart:core" as core;
|
|||
|
||||
class E1 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E1> values = #C1;
|
||||
final field core::int element = null;
|
||||
final field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E1
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
@ -110,7 +110,7 @@ class E4 extends core::_Enum /*isEnum*/ {
|
|||
}
|
||||
class E5 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E5> values = #C8;
|
||||
static field core::int element = null;
|
||||
static field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E5
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
|
|
@ -74,7 +74,7 @@ import "dart:core" as core;
|
|||
|
||||
class E1 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E1> values = #C1;
|
||||
final field core::int element = null;
|
||||
final field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E1
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
@ -110,7 +110,7 @@ class E4 extends core::_Enum /*isEnum*/ {
|
|||
}
|
||||
class E5 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E5> values = #C8;
|
||||
static field core::int element = null;
|
||||
static field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E5
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
|
|
@ -74,7 +74,7 @@ import "dart:core" as core;
|
|||
|
||||
class E1 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E1> values = #C1;
|
||||
final field core::int element = null;
|
||||
final field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E1
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
@ -110,7 +110,7 @@ class E4 extends core::_Enum /*isEnum*/ {
|
|||
}
|
||||
class E5 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E5> values = #C8;
|
||||
static field core::int element = null;
|
||||
static field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E5
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
|
|
@ -74,7 +74,7 @@ import "dart:core" as core;
|
|||
|
||||
class E1 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E1> values = #C1;
|
||||
final field core::int element = null;
|
||||
final field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E1
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
@ -110,7 +110,7 @@ class E4 extends core::_Enum /*isEnum*/ {
|
|||
}
|
||||
class E5 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E5> values = #C8;
|
||||
static field core::int element = null;
|
||||
static field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E5
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
|
|
@ -74,7 +74,7 @@ import "dart:core" as core;
|
|||
|
||||
class E1 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E1> values = #C1;
|
||||
final field core::int element = null;
|
||||
final field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E1
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
@ -110,7 +110,7 @@ class E4 extends core::_Enum /*isEnum*/ {
|
|||
}
|
||||
class E5 extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::E5> values = #C8;
|
||||
static field core::int element = null;
|
||||
static field core::int element = 42;
|
||||
const constructor •(core::int #index, core::String #name) → self::E5
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
|
|
|
@ -168,7 +168,7 @@ extension Extension<T extends core::Object? = dynamic> on core::int {
|
|||
set instanceSetterAndStaticGetter = self::Extension|set#instanceSetterAndStaticGetter;
|
||||
set instanceSetterAndStaticField = self::Extension|set#instanceSetterAndStaticField;
|
||||
}
|
||||
static field core::int Extension|duplicateStaticField;
|
||||
static field core::int Extension|duplicateStaticField = 0;
|
||||
static method Extension|get#duplicateInstanceGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
|
||||
return 0;
|
||||
static method Extension|set#duplicateInstanceSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
|
||||
|
|
|
@ -168,7 +168,7 @@ extension Extension<T extends core::Object? = dynamic> on core::int {
|
|||
set instanceSetterAndStaticGetter = self::Extension|set#instanceSetterAndStaticGetter;
|
||||
set instanceSetterAndStaticField = self::Extension|set#instanceSetterAndStaticField;
|
||||
}
|
||||
static field core::int Extension|duplicateStaticField;
|
||||
static field core::int Extension|duplicateStaticField = 0;
|
||||
static method Extension|get#duplicateInstanceGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
|
||||
return 0;
|
||||
static method Extension|set#duplicateInstanceSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
|
||||
|
|
|
@ -168,7 +168,7 @@ extension Extension<T extends core::Object? = dynamic> on core::int {
|
|||
set instanceSetterAndStaticGetter = self::Extension|set#instanceSetterAndStaticGetter;
|
||||
set instanceSetterAndStaticField = self::Extension|set#instanceSetterAndStaticField;
|
||||
}
|
||||
static field core::int Extension|duplicateStaticField;
|
||||
static field core::int Extension|duplicateStaticField = 0;
|
||||
static method Extension|get#duplicateInstanceGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
|
||||
return 0;
|
||||
static method Extension|set#duplicateInstanceSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
|
||||
|
|
|
@ -168,7 +168,7 @@ extension Extension<T extends core::Object? = dynamic> on core::int {
|
|||
set instanceSetterAndStaticGetter = self::Extension|set#instanceSetterAndStaticGetter;
|
||||
set instanceSetterAndStaticField = self::Extension|set#instanceSetterAndStaticField;
|
||||
}
|
||||
static field core::int Extension|duplicateStaticField;
|
||||
static field core::int Extension|duplicateStaticField = 0;
|
||||
static method Extension|get#duplicateInstanceGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
|
||||
return 0;
|
||||
static method Extension|set#duplicateInstanceSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
|
||||
|
|
|
@ -168,7 +168,7 @@ extension Extension<T extends core::Object? = dynamic> on core::int {
|
|||
set instanceSetterAndStaticGetter = self::Extension|set#instanceSetterAndStaticGetter;
|
||||
set instanceSetterAndStaticField = self::Extension|set#instanceSetterAndStaticField;
|
||||
}
|
||||
static field core::int Extension|duplicateStaticField;
|
||||
static field core::int Extension|duplicateStaticField = 0;
|
||||
static method Extension|get#duplicateInstanceGetter<T extends core::Object? = dynamic>(lowered final core::int #this) → core::int
|
||||
return 0;
|
||||
static method Extension|set#duplicateInstanceSetter<T extends core::Object? = dynamic>(lowered final core::int #this, core::int value) → void {}
|
||||
|
|
|
@ -20,7 +20,7 @@ import "dart:core" as core;
|
|||
extension /* unnamed */ _extension#0 on core::int {
|
||||
static field foo = self::_extension#0|foo;
|
||||
}
|
||||
static field core::int _extension#0|foo;
|
||||
static field core::int _extension#0|foo = 2;
|
||||
static method test() → void {
|
||||
invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
|
|
|
@ -20,7 +20,7 @@ import "dart:core" as core;
|
|||
extension /* unnamed */ _extension#0 on core::int {
|
||||
static field foo = self::_extension#0|foo;
|
||||
}
|
||||
static field core::int _extension#0|foo;
|
||||
static field core::int _extension#0|foo = 2;
|
||||
static method test() → void {
|
||||
invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
|
|
|
@ -20,7 +20,7 @@ import "dart:core" as core;
|
|||
extension /* unnamed */ _extension#0 on core::int {
|
||||
static field foo = self::_extension#0|foo;
|
||||
}
|
||||
static field core::int _extension#0|foo;
|
||||
static field core::int _extension#0|foo = 2;
|
||||
static method test() → void {
|
||||
invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
|
|
|
@ -20,7 +20,7 @@ import "dart:core" as core;
|
|||
extension /* unnamed */ _extension#0 on core::int {
|
||||
static field foo = self::_extension#0|foo;
|
||||
}
|
||||
static field core::int _extension#0|foo;
|
||||
static field core::int _extension#0|foo = 2;
|
||||
static method test() → void {
|
||||
invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
|
|
|
@ -20,7 +20,7 @@ import "dart:core" as core;
|
|||
extension /* unnamed */ _extension#0 on core::int {
|
||||
static field foo = self::_extension#0|foo;
|
||||
}
|
||||
static field core::int _extension#0|foo;
|
||||
static field core::int _extension#0|foo = 2;
|
||||
static method test() → void {
|
||||
invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
|
|
|
@ -17,4 +17,4 @@ library /*isNonNullableByDefault*/;
|
|||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static field () → core::String a;
|
||||
static field () → core::String a = () → core::String => "b";
|
||||
|
|
|
@ -17,4 +17,4 @@ library /*isNonNullableByDefault*/;
|
|||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static field () → core::String a;
|
||||
static field () → core::String a = () → core::String => "b";
|
||||
|
|
|
@ -17,4 +17,4 @@ library /*isNonNullableByDefault*/;
|
|||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static field () → core::String a;
|
||||
static field () → core::String a = () → core::String => "b";
|
||||
|
|
|
@ -17,4 +17,4 @@ library /*isNonNullableByDefault*/;
|
|||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static field () → core::String a;
|
||||
static field () → core::String a = () → core::String => "b";
|
||||
|
|
|
@ -17,4 +17,4 @@ library /*isNonNullableByDefault*/;
|
|||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static field () → core::String a;
|
||||
static field () → core::String a = () → core::String => "b";
|
||||
|
|
|
@ -373,7 +373,7 @@ class C#3#0 extends core::Object { // from org-dartlang-testcase:///duplicated_d
|
|||
;
|
||||
}
|
||||
class C#2#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C#2#0
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -394,7 +394,7 @@ class C#1#0 extends core::Object {
|
|||
;
|
||||
}
|
||||
class C extends core::Object {
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -488,7 +488,7 @@ class AnotherEnum extends core::_Enum /*isEnum*/ {
|
|||
method _enumToString() → core::String
|
||||
return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static field core::String field;
|
||||
static field core::String field = "1st";
|
||||
static method main() → dynamic {
|
||||
"1st";
|
||||
}
|
||||
|
|
|
@ -373,7 +373,7 @@ class C#3#0 extends core::Object { // from org-dartlang-testcase:///duplicated_d
|
|||
;
|
||||
}
|
||||
class C#2#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C#2#0
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -394,7 +394,7 @@ class C#1#0 extends core::Object {
|
|||
;
|
||||
}
|
||||
class C extends core::Object {
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -488,7 +488,7 @@ class AnotherEnum extends core::_Enum /*isEnum*/ {
|
|||
method _enumToString() → core::String
|
||||
return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static field core::String field;
|
||||
static field core::String field = "1st";
|
||||
static method main() → dynamic {
|
||||
"1st";
|
||||
}
|
||||
|
|
|
@ -373,7 +373,7 @@ class C#3#0 extends core::Object { // from org-dartlang-testcase:///duplicated_d
|
|||
;
|
||||
}
|
||||
class C#2#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C#2#0
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -394,7 +394,7 @@ class C#1#0 extends core::Object {
|
|||
;
|
||||
}
|
||||
class C extends core::Object {
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -488,7 +488,7 @@ class AnotherEnum extends core::_Enum /*isEnum*/ {
|
|||
method _enumToString() → core::String
|
||||
return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static field core::String field;
|
||||
static field core::String field = "1st";
|
||||
static method main() → dynamic {
|
||||
"1st";
|
||||
}
|
||||
|
|
|
@ -373,7 +373,7 @@ class C#3#0 extends core::Object { // from org-dartlang-testcase:///duplicated_d
|
|||
;
|
||||
}
|
||||
class C#2#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C#2#0
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -394,7 +394,7 @@ class C#1#0 extends core::Object {
|
|||
;
|
||||
}
|
||||
class C extends core::Object {
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -488,7 +488,7 @@ class AnotherEnum extends core::_Enum /*isEnum*/ {
|
|||
method _enumToString() → core::String
|
||||
return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static field core::String field;
|
||||
static field core::String field = "1st";
|
||||
static method main() → dynamic {
|
||||
"1st";
|
||||
}
|
||||
|
|
|
@ -373,7 +373,7 @@ class C#3#0 extends core::Object { // from org-dartlang-testcase:///duplicated_d
|
|||
;
|
||||
}
|
||||
class C#2#0 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C#2#0
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -394,7 +394,7 @@ class C#1#0 extends core::Object {
|
|||
;
|
||||
}
|
||||
class C extends core::Object {
|
||||
field core::String field = null;
|
||||
field core::String field = "1st";
|
||||
constructor •(dynamic a) → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
@ -488,7 +488,7 @@ class AnotherEnum extends core::_Enum /*isEnum*/ {
|
|||
method _enumToString() → core::String
|
||||
return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static field core::String field;
|
||||
static field core::String field = "1st";
|
||||
static method main() → dynamic {
|
||||
"1st";
|
||||
}
|
||||
|
|
|
@ -21,7 +21,9 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
field dynamic x = null;
|
||||
field dynamic x = invalid-expression "pkg/front_end/testcases/general/issue38961.dart:6:15: Error: Can't access 'this' in a field initializer.
|
||||
dynamic x = this;
|
||||
^^^^";
|
||||
synthetic constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -21,7 +21,9 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
field dynamic x = null;
|
||||
field dynamic x = invalid-expression "pkg/front_end/testcases/general/issue38961.dart:6:15: Error: Can't access 'this' in a field initializer.
|
||||
dynamic x = this;
|
||||
^^^^";
|
||||
synthetic constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -21,7 +21,9 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
field dynamic x = null;
|
||||
field dynamic x = invalid-expression "pkg/front_end/testcases/general/issue38961.dart:6:15: Error: Can't access 'this' in a field initializer.
|
||||
dynamic x = this;
|
||||
^^^^";
|
||||
synthetic constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -21,7 +21,9 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
field dynamic x = null;
|
||||
field dynamic x = invalid-expression "pkg/front_end/testcases/general/issue38961.dart:6:15: Error: Can't access 'this' in a field initializer.
|
||||
dynamic x = this;
|
||||
^^^^";
|
||||
synthetic constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -21,7 +21,9 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
field dynamic x = null;
|
||||
field dynamic x = invalid-expression "pkg/front_end/testcases/general/issue38961.dart:6:15: Error: Can't access 'this' in a field initializer.
|
||||
dynamic x = this;
|
||||
^^^^";
|
||||
synthetic constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -17,7 +17,7 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class A extends core::Object {
|
||||
static final field core::int X = null;
|
||||
static final field core::int X = 0;
|
||||
static final field core::int foo = invalid-expression "pkg/front_end/testcases/general/issue41252.dart:9:26: Error: Can't use 'X' because it is declared more than once.
|
||||
static final int foo = X + 1;
|
||||
^"{<invalid>}.+(1);
|
||||
|
|
|
@ -17,7 +17,7 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class A extends core::Object {
|
||||
static final field core::int X = null;
|
||||
static final field core::int X = 0;
|
||||
static final field core::int foo = invalid-expression "pkg/front_end/testcases/general/issue41252.dart:9:26: Error: Can't use 'X' because it is declared more than once.
|
||||
static final int foo = X + 1;
|
||||
^"{<invalid>}.+(1);
|
||||
|
|
|
@ -17,7 +17,7 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class A extends core::Object {
|
||||
static final field core::int X = null;
|
||||
static final field core::int X = 0;
|
||||
static final field core::int foo = invalid-expression "pkg/front_end/testcases/general/issue41252.dart:9:26: Error: Can't use 'X' because it is declared more than once.
|
||||
static final int foo = X + 1;
|
||||
^"{<invalid>}.+(1);
|
||||
|
|
|
@ -17,7 +17,7 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class A extends core::Object {
|
||||
static final field core::int X = null;
|
||||
static final field core::int X = 0;
|
||||
static final field core::int foo = invalid-expression "pkg/front_end/testcases/general/issue41252.dart:9:26: Error: Can't use 'X' because it is declared more than once.
|
||||
static final int foo = X + 1;
|
||||
^"{<invalid>}.+(1);
|
||||
|
|
|
@ -17,7 +17,7 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class A extends core::Object {
|
||||
static final field core::int X = null;
|
||||
static final field core::int X = 0;
|
||||
static final field core::int foo = invalid-expression "pkg/front_end/testcases/general/issue41252.dart:9:26: Error: Can't use 'X' because it is declared more than once.
|
||||
static final int foo = X + 1;
|
||||
^"{<invalid>}.+(1);
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
// @dart = 2.9
|
||||
|
||||
class C {
|
||||
static var field;
|
||||
static final finalField;
|
||||
}
|
||||
|
||||
class D {
|
||||
static var field;
|
||||
static final finalField;
|
||||
|
||||
factory D() => throw '';
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
library;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/general/uninitialized_static_field.dart:5:1: Error: Library doesn't support null safety.
|
||||
// // @dart = 2.9
|
||||
// ^^^^^^^^^^^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/uninitialized_static_field.dart:9:16: Error: Final field 'finalField' is not initialized.
|
||||
// Try to initialize the field in the declaration or in every constructor.
|
||||
// static final finalField;
|
||||
// ^^^^^^^^^^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
synthetic constructor •() → self::C*
|
||||
: super core::Object::•()
|
||||
;
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
||||
class D extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
static factory •() → self::D*
|
||||
return throw "";
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
library;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/general/uninitialized_static_field.dart:5:1: Error: Library doesn't support null safety.
|
||||
// // @dart = 2.9
|
||||
// ^^^^^^^^^^^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/uninitialized_static_field.dart:9:16: Error: Final field 'finalField' is not initialized.
|
||||
// Try to initialize the field in the declaration or in every constructor.
|
||||
// static final finalField;
|
||||
// ^^^^^^^^^^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
synthetic constructor •() → self::C*
|
||||
: super core::Object::•()
|
||||
;
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
||||
class D extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
static factory •() → self::D*
|
||||
return throw "";
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
// @dart = 2.9
|
||||
class C {
|
||||
static var field;
|
||||
static final finalField;
|
||||
}
|
||||
|
||||
class D {
|
||||
static var field;
|
||||
static final finalField;
|
||||
factory D() => throw '';
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
// @dart = 2.9
|
||||
class C {
|
||||
static final finalField;
|
||||
static var field;
|
||||
}
|
||||
|
||||
class D {
|
||||
factory D() => throw '';
|
||||
static final finalField;
|
||||
static var field;
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
library;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/general/uninitialized_static_field.dart:9:16: Error: Final field 'finalField' is not initialized.
|
||||
// Try to initialize the field in the declaration or in every constructor.
|
||||
// static final finalField;
|
||||
// ^^^^^^^^^^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
synthetic constructor •() → self::C*
|
||||
: super core::Object::•()
|
||||
;
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
||||
class D extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
static factory •() → self::D*
|
||||
return throw "";
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
library;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/general/uninitialized_static_field.dart:9:16: Error: Final field 'finalField' is not initialized.
|
||||
// Try to initialize the field in the declaration or in every constructor.
|
||||
// static final finalField;
|
||||
// ^^^^^^^^^^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
synthetic constructor •() → self::C*
|
||||
: super core::Object::•()
|
||||
;
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
||||
class D extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
static factory •() → self::D*
|
||||
return throw "";
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
static field dynamic field;
|
||||
static final field dynamic finalField;
|
||||
synthetic constructor •() → self::C*
|
||||
;
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
||||
class D extends core::Object {
|
||||
static field dynamic field;
|
||||
static final field dynamic finalField;
|
||||
static factory •() → self::D*
|
||||
;
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
library;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/general/uninitialized_static_field.dart:9:16: Error: Final field 'finalField' is not initialized.
|
||||
// Try to initialize the field in the declaration or in every constructor.
|
||||
// static final finalField;
|
||||
// ^^^^^^^^^^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class C extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
synthetic constructor •() → self::C*
|
||||
: super core::Object::•()
|
||||
;
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
||||
class D extends core::Object {
|
||||
static field dynamic field = null;
|
||||
static final field dynamic finalField = null;
|
||||
static factory •() → self::D*
|
||||
return throw "";
|
||||
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
|
||||
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
|
||||
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
|
||||
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
|
||||
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
|
||||
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
|
||||
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
|
||||
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
|
||||
abstract member-signature method toString() → core::String*; -> core::Object::toString
|
||||
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
|
||||
}
|
|
@ -108,14 +108,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
field core::int instanceField = null;
|
||||
field core::int instanceField = 1;
|
||||
field core::int instanceFieldAndSetter1 = 1;
|
||||
field core::int instanceFieldAndSetter2 = 1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter2;
|
||||
final field core::int instanceDuplicateFieldAndSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndSetter = 1;
|
||||
final field core::int instanceFieldAndDuplicateSetter = 1;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -108,14 +108,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
field core::int instanceField = null;
|
||||
field core::int instanceField = 1;
|
||||
field core::int instanceFieldAndSetter1 = 1;
|
||||
field core::int instanceFieldAndSetter2 = 1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter2;
|
||||
final field core::int instanceDuplicateFieldAndSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndSetter = 1;
|
||||
final field core::int instanceFieldAndDuplicateSetter = 1;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -108,14 +108,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
field core::int instanceField = null;
|
||||
field core::int instanceField = 1;
|
||||
field core::int instanceFieldAndSetter1 = 1;
|
||||
field core::int instanceFieldAndSetter2 = 1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter2;
|
||||
final field core::int instanceDuplicateFieldAndSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndSetter = 1;
|
||||
final field core::int instanceFieldAndDuplicateSetter = 1;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -108,14 +108,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
field core::int instanceField = null;
|
||||
field core::int instanceField = 1;
|
||||
field core::int instanceFieldAndSetter1 = 1;
|
||||
field core::int instanceFieldAndSetter2 = 1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter2;
|
||||
final field core::int instanceDuplicateFieldAndSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndSetter = 1;
|
||||
final field core::int instanceFieldAndDuplicateSetter = 1;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -108,14 +108,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
field core::int instanceField = null;
|
||||
field core::int instanceField = 1;
|
||||
field core::int instanceFieldAndSetter1 = 1;
|
||||
field core::int instanceFieldAndSetter2 = 1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter1;
|
||||
late final [setter] field core::int instanceLateFinalFieldAndSetter2;
|
||||
final field core::int instanceDuplicateFieldAndSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndSetter = 1;
|
||||
final field core::int instanceFieldAndDuplicateSetter = 1;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = null;
|
||||
final field core::int instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -283,14 +283,14 @@ extension Extension on core::int {
|
|||
set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|instanceField;
|
||||
static field core::int Extension|instanceField = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter1 = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|instanceFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|instanceMethod(lowered final core::int #this) → core::int
|
||||
return 1;
|
||||
static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
|
||||
|
|
|
@ -283,14 +283,14 @@ extension Extension on core::int {
|
|||
set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|instanceField;
|
||||
static field core::int Extension|instanceField = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter1 = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|instanceFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|instanceMethod(lowered final core::int #this) → core::int
|
||||
return 1;
|
||||
static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
|
||||
|
|
|
@ -283,14 +283,14 @@ extension Extension on core::int {
|
|||
set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|instanceField;
|
||||
static field core::int Extension|instanceField = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter1 = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|instanceFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|instanceMethod(lowered final core::int #this) → core::int
|
||||
return 1;
|
||||
static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
|
||||
|
|
|
@ -283,14 +283,14 @@ extension Extension on core::int {
|
|||
set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|instanceField;
|
||||
static field core::int Extension|instanceField = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter1 = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|instanceFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|instanceMethod(lowered final core::int #this) → core::int
|
||||
return 1;
|
||||
static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
|
||||
|
|
|
@ -283,14 +283,14 @@ extension Extension on core::int {
|
|||
set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|instanceField;
|
||||
static field core::int Extension|instanceField = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter1 = 1;
|
||||
static field core::int Extension|instanceFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|instanceFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|instanceMethod(lowered final core::int #this) → core::int
|
||||
return 1;
|
||||
static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
|
||||
|
|
|
@ -176,14 +176,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
static field core::int staticField = null;
|
||||
static field core::int staticField = 1;
|
||||
static field core::int staticFieldAndSetter1 = 1;
|
||||
static field core::int staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter2;
|
||||
static final field core::int staticDuplicateFieldAndSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -176,14 +176,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
static field core::int staticField = null;
|
||||
static field core::int staticField = 1;
|
||||
static field core::int staticFieldAndSetter1 = 1;
|
||||
static field core::int staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter2;
|
||||
static final field core::int staticDuplicateFieldAndSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -176,14 +176,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
static field core::int staticField = null;
|
||||
static field core::int staticField = 1;
|
||||
static field core::int staticFieldAndSetter1 = 1;
|
||||
static field core::int staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter2;
|
||||
static final field core::int staticDuplicateFieldAndSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -176,14 +176,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
static field core::int staticField = null;
|
||||
static field core::int staticField = 1;
|
||||
static field core::int staticFieldAndSetter1 = 1;
|
||||
static field core::int staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter2;
|
||||
static final field core::int staticDuplicateFieldAndSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -176,14 +176,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
static field core::int staticField = null;
|
||||
static field core::int staticField = 1;
|
||||
static field core::int staticFieldAndSetter1 = 1;
|
||||
static field core::int staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int staticLateFinalFieldAndSetter2;
|
||||
static final field core::int staticDuplicateFieldAndSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = null;
|
||||
static final field core::int staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -198,14 +198,14 @@ extension Extension on core::int {
|
|||
static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|staticField;
|
||||
static field core::int Extension|staticField = 1;
|
||||
static field core::int Extension|staticFieldAndSetter1 = 1;
|
||||
static field core::int Extension|staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|staticMethod() → core::int
|
||||
return 1;
|
||||
static get Extension|staticGetter() → core::int
|
||||
|
|
|
@ -198,14 +198,14 @@ extension Extension on core::int {
|
|||
static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|staticField;
|
||||
static field core::int Extension|staticField = 1;
|
||||
static field core::int Extension|staticFieldAndSetter1 = 1;
|
||||
static field core::int Extension|staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|staticMethod() → core::int
|
||||
return 1;
|
||||
static get Extension|staticGetter() → core::int
|
||||
|
|
|
@ -198,14 +198,14 @@ extension Extension on core::int {
|
|||
static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|staticField;
|
||||
static field core::int Extension|staticField = 1;
|
||||
static field core::int Extension|staticFieldAndSetter1 = 1;
|
||||
static field core::int Extension|staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|staticMethod() → core::int
|
||||
return 1;
|
||||
static get Extension|staticGetter() → core::int
|
||||
|
|
|
@ -198,14 +198,14 @@ extension Extension on core::int {
|
|||
static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|staticField;
|
||||
static field core::int Extension|staticField = 1;
|
||||
static field core::int Extension|staticFieldAndSetter1 = 1;
|
||||
static field core::int Extension|staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|staticMethod() → core::int
|
||||
return 1;
|
||||
static get Extension|staticGetter() → core::int
|
||||
|
|
|
@ -198,14 +198,14 @@ extension Extension on core::int {
|
|||
static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
|
||||
}
|
||||
static field dynamic result;
|
||||
static field core::int Extension|staticField;
|
||||
static field core::int Extension|staticField = 1;
|
||||
static field core::int Extension|staticFieldAndSetter1 = 1;
|
||||
static field core::int Extension|staticFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndSetter = 1;
|
||||
static final field core::int Extension|staticFieldAndDuplicateSetter = 1;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter = 1;
|
||||
static method Extension|staticMethod() → core::int
|
||||
return 1;
|
||||
static get Extension|staticGetter() → core::int
|
||||
|
|
|
@ -232,14 +232,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
static field dynamic result;
|
||||
static field core::int topLevelField;
|
||||
static field core::int topLevelField = 1;
|
||||
static field core::int topLevelFieldAndSetter1 = 1;
|
||||
static field core::int topLevelFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter = 1;
|
||||
static final field core::int topLevelFieldAndDuplicateSetter = 1;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter = 1;
|
||||
static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
|
||||
var field = topLevelMethod;
|
||||
^";
|
||||
|
|
|
@ -232,14 +232,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
static field dynamic result;
|
||||
static field core::int topLevelField;
|
||||
static field core::int topLevelField = 1;
|
||||
static field core::int topLevelFieldAndSetter1 = 1;
|
||||
static field core::int topLevelFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter = 1;
|
||||
static final field core::int topLevelFieldAndDuplicateSetter = 1;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter = 1;
|
||||
static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
|
||||
var field = topLevelMethod;
|
||||
^";
|
||||
|
|
|
@ -232,14 +232,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
static field dynamic result;
|
||||
static field core::int topLevelField;
|
||||
static field core::int topLevelField = 1;
|
||||
static field core::int topLevelFieldAndSetter1 = 1;
|
||||
static field core::int topLevelFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter = 1;
|
||||
static final field core::int topLevelFieldAndDuplicateSetter = 1;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter = 1;
|
||||
static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
|
||||
var field = topLevelMethod;
|
||||
^";
|
||||
|
|
|
@ -232,14 +232,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
static field dynamic result;
|
||||
static field core::int topLevelField;
|
||||
static field core::int topLevelField = 1;
|
||||
static field core::int topLevelFieldAndSetter1 = 1;
|
||||
static field core::int topLevelFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter = 1;
|
||||
static final field core::int topLevelFieldAndDuplicateSetter = 1;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter = 1;
|
||||
static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
|
||||
var field = topLevelMethod;
|
||||
^";
|
||||
|
|
|
@ -232,14 +232,14 @@ import self as self;
|
|||
import "dart:core" as core;
|
||||
|
||||
static field dynamic result;
|
||||
static field core::int topLevelField;
|
||||
static field core::int topLevelField = 1;
|
||||
static field core::int topLevelFieldAndSetter1 = 1;
|
||||
static field core::int topLevelFieldAndSetter2 = 1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
|
||||
late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndSetter = 1;
|
||||
static final field core::int topLevelFieldAndDuplicateSetter = 1;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
|
||||
static final field core::int topLevelDuplicateFieldAndDuplicateSetter = 1;
|
||||
static field invalid-type field = invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:82:13: Error: Can't use 'topLevelMethod' because it is declared more than once.
|
||||
var field = topLevelMethod;
|
||||
^";
|
||||
|
|
|
@ -1068,17 +1068,17 @@ extension Extension on core::int? {
|
|||
static field core::int? topLevelFieldAndSetter;
|
||||
static field core::int? topLevelFieldAndDuplicateSetter;
|
||||
static field core::int? duplicateTopLevelFieldAndSetter1;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2 = null;
|
||||
static field core::int? Extension|extensionStaticFieldAndSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
|
||||
|
@ -1086,9 +1086,9 @@ static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter
|
|||
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2 = null;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2 = null;
|
||||
static const field dynamic _exports# = #C1 /*isLegacy*/;
|
||||
static method test() → dynamic {
|
||||
self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
|
||||
|
|
|
@ -1068,17 +1068,17 @@ extension Extension on core::int? {
|
|||
static field core::int? topLevelFieldAndSetter;
|
||||
static field core::int? topLevelFieldAndDuplicateSetter;
|
||||
static field core::int? duplicateTopLevelFieldAndSetter1;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2 = null;
|
||||
static field core::int? Extension|extensionStaticFieldAndSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
|
||||
|
@ -1086,9 +1086,9 @@ static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter
|
|||
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2 = null;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2 = null;
|
||||
static const field dynamic _exports# = #C1 /*isLegacy*/;
|
||||
static method test() → dynamic {
|
||||
self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
|
||||
|
|
|
@ -1068,17 +1068,17 @@ extension Extension on core::int? {
|
|||
static field core::int? topLevelFieldAndSetter;
|
||||
static field core::int? topLevelFieldAndDuplicateSetter;
|
||||
static field core::int? duplicateTopLevelFieldAndSetter1;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2 = null;
|
||||
static field core::int? Extension|extensionStaticFieldAndSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
|
||||
|
@ -1086,9 +1086,9 @@ static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter
|
|||
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2 = null;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2 = null;
|
||||
static const field dynamic _exports# = #C1 /*isLegacy*/;
|
||||
static method test() → dynamic {
|
||||
self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
|
||||
|
|
|
@ -1068,17 +1068,17 @@ extension Extension on core::int? {
|
|||
static field core::int? topLevelFieldAndSetter;
|
||||
static field core::int? topLevelFieldAndDuplicateSetter;
|
||||
static field core::int? duplicateTopLevelFieldAndSetter1;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2 = null;
|
||||
static field core::int? Extension|extensionStaticFieldAndSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
|
||||
|
@ -1086,9 +1086,9 @@ static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter
|
|||
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2 = null;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2 = null;
|
||||
static const field dynamic _exports# = #C1 /*isLegacy*/;
|
||||
static method test() → dynamic {
|
||||
self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
|
||||
|
|
|
@ -1068,17 +1068,17 @@ extension Extension on core::int? {
|
|||
static field core::int? topLevelFieldAndSetter;
|
||||
static field core::int? topLevelFieldAndDuplicateSetter;
|
||||
static field core::int? duplicateTopLevelFieldAndSetter1;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2;
|
||||
static final field core::int? duplicateTopLevelFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndSetter2 = null;
|
||||
static field core::int? Extension|extensionStaticFieldAndSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndSetter2 = null;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
|
||||
late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
|
||||
static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
|
||||
|
@ -1086,9 +1086,9 @@ static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter
|
|||
static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
|
||||
static field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
|
||||
static field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionInstanceFieldAndStaticSetter2 = null;
|
||||
static field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter1;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2;
|
||||
static final field core::int? Extension|duplicateExtensionStaticFieldAndInstanceSetter2 = null;
|
||||
static const field dynamic _exports# = #C1 /*isLegacy*/;
|
||||
static method test() → dynamic {
|
||||
self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
|
||||
|
|
|
@ -278,17 +278,17 @@ import "dart:core" as core;
|
|||
|
||||
class Class extends core::Object {
|
||||
field core::int? methodAndField2 = null;
|
||||
final field core::int? methodAndFinalField2 = null;
|
||||
final field core::int? methodAndFinalField2 = 0;
|
||||
field core::int? methodAndFieldAndSetter2 = null;
|
||||
field core::int? methodAndFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = 0;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = 0;
|
||||
field core::int? fieldAndSetter1 = null;
|
||||
field core::int? fieldAndSetter2 = null;
|
||||
field core::int? fieldAndFinalFieldAndSetter1 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = 0;
|
||||
field core::int? fieldAndFinalFieldAndSetter3 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = 0;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -278,17 +278,17 @@ import "dart:core" as core;
|
|||
|
||||
class Class extends core::Object {
|
||||
field core::int? methodAndField2 = null;
|
||||
final field core::int? methodAndFinalField2 = null;
|
||||
final field core::int? methodAndFinalField2 = 0;
|
||||
field core::int? methodAndFieldAndSetter2 = null;
|
||||
field core::int? methodAndFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = 0;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = 0;
|
||||
field core::int? fieldAndSetter1 = null;
|
||||
field core::int? fieldAndSetter2 = null;
|
||||
field core::int? fieldAndFinalFieldAndSetter1 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = 0;
|
||||
field core::int? fieldAndFinalFieldAndSetter3 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = 0;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -278,17 +278,17 @@ import "dart:core" as core;
|
|||
|
||||
class Class extends core::Object {
|
||||
field core::int? methodAndField2 = null;
|
||||
final field core::int? methodAndFinalField2 = null;
|
||||
final field core::int? methodAndFinalField2 = 0;
|
||||
field core::int? methodAndFieldAndSetter2 = null;
|
||||
field core::int? methodAndFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = 0;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = 0;
|
||||
field core::int? fieldAndSetter1 = null;
|
||||
field core::int? fieldAndSetter2 = null;
|
||||
field core::int? fieldAndFinalFieldAndSetter1 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = 0;
|
||||
field core::int? fieldAndFinalFieldAndSetter3 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = 0;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -278,17 +278,17 @@ import "dart:core" as core;
|
|||
|
||||
class Class extends core::Object {
|
||||
field core::int? methodAndField2 = null;
|
||||
final field core::int? methodAndFinalField2 = null;
|
||||
final field core::int? methodAndFinalField2 = 0;
|
||||
field core::int? methodAndFieldAndSetter2 = null;
|
||||
field core::int? methodAndFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = 0;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = 0;
|
||||
field core::int? fieldAndSetter1 = null;
|
||||
field core::int? fieldAndSetter2 = null;
|
||||
field core::int? fieldAndFinalFieldAndSetter1 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = 0;
|
||||
field core::int? fieldAndFinalFieldAndSetter3 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = 0;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -278,17 +278,17 @@ import "dart:core" as core;
|
|||
|
||||
class Class extends core::Object {
|
||||
field core::int? methodAndField2 = null;
|
||||
final field core::int? methodAndFinalField2 = null;
|
||||
final field core::int? methodAndFinalField2 = 0;
|
||||
field core::int? methodAndFieldAndSetter2 = null;
|
||||
field core::int? methodAndFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? methodAndFinalFieldAndSetter2 = 0;
|
||||
final field core::int? methodAndFinalFieldAndSetter4 = 0;
|
||||
field core::int? fieldAndSetter1 = null;
|
||||
field core::int? fieldAndSetter2 = null;
|
||||
field core::int? fieldAndFinalFieldAndSetter1 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter2 = 0;
|
||||
field core::int? fieldAndFinalFieldAndSetter3 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = null;
|
||||
final field core::int? fieldAndFinalFieldAndSetter4 = 0;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
|
|
|
@ -38,7 +38,7 @@ import self as iss;
|
|||
import "dart:core" as core;
|
||||
|
||||
typedef bar = () → core::bool;
|
||||
static field core::int foo;
|
||||
static field core::int foo = 42;
|
||||
static method baz() → core::int {
|
||||
return 42;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ import self as iss;
|
|||
import "dart:core" as core;
|
||||
|
||||
typedef bar = () → core::bool;
|
||||
static field core::int foo;
|
||||
static field core::int foo = 42;
|
||||
static method baz() → core::int {
|
||||
return 42;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ import self as iss;
|
|||
import "dart:core" as core;
|
||||
|
||||
typedef bar = () → core::bool;
|
||||
static field core::int foo;
|
||||
static field core::int foo = 42;
|
||||
static method baz() → core::int {
|
||||
return 42;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ import self as iss;
|
|||
import "dart:core" as core;
|
||||
|
||||
typedef bar = () → core::bool;
|
||||
static field core::int foo;
|
||||
static field core::int foo = 42;
|
||||
static method baz() → core::int {
|
||||
return 42;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ import self as iss;
|
|||
import "dart:core" as core;
|
||||
|
||||
typedef bar = () → core::bool;
|
||||
static field core::int foo;
|
||||
static field core::int foo = 42;
|
||||
static method baz() → core::int {
|
||||
return 42;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import "dart:core" as core;
|
|||
|
||||
static const field core::int y = #C1;
|
||||
@#C1
|
||||
static field core::int x;
|
||||
static field core::int x = 1;
|
||||
static method main() → dynamic {
|
||||
core::print(#C1);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import "dart:core" as core;
|
|||
|
||||
static const field core::int y = #C1;
|
||||
@#C1
|
||||
static field core::int x;
|
||||
static field core::int x = 1;
|
||||
static method main() → dynamic {
|
||||
core::print(#C1);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import "dart:core" as core;
|
|||
|
||||
static const field core::int y = #C1;
|
||||
@#C1
|
||||
static field core::int x;
|
||||
static field core::int x = 1;
|
||||
static method main() → dynamic {
|
||||
core::print(#C1);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import "dart:core" as core;
|
|||
|
||||
static const field core::int y = #C1;
|
||||
@#C1
|
||||
static field core::int x;
|
||||
static field core::int x = 1;
|
||||
static method main() → dynamic {
|
||||
core::print(#C1);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import "dart:core" as core;
|
|||
|
||||
static const field core::int y = #C1;
|
||||
@#C1
|
||||
static field core::int x;
|
||||
static field core::int x = 1;
|
||||
static method main() → dynamic {
|
||||
core::print(#C1);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue