Skip to content

Commit

Permalink
[kernel] Make Member.name non-nullable
Browse files Browse the repository at this point in the history
Change-Id: Id2befd868e93985d6af463c2ccd410cd56b68187
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/194721
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
  • Loading branch information
johnniwinther authored and commit-bot@chromium.org committed Apr 12, 2021
1 parent d30d9ed commit 64460ec
Show file tree
Hide file tree
Showing 40 changed files with 1,317 additions and 383 deletions.
8 changes: 6 additions & 2 deletions pkg/front_end/lib/src/fasta/builder/constructor_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ class ConstructorBuilderImpl extends FunctionBuilderImpl
Member referenceFrom,
[String nativeMethodName])
: _constructor = new Constructor(null,
name: new Name(name, compilationUnit.library),
fileUri: compilationUnit.fileUri,
reference: referenceFrom?.reference)
..startFileOffset = startCharOffset
Expand Down Expand Up @@ -196,17 +197,20 @@ class ConstructorBuilderImpl extends FunctionBuilderImpl
f(member, BuiltMemberKind.Constructor);
}

bool _hasBeenBuilt = false;

@override
Constructor build(SourceLibraryBuilder libraryBuilder) {
if (_constructor.name == null) {
if (!_hasBeenBuilt) {
_constructor.function = buildFunction(libraryBuilder);
_constructor.function.parent = _constructor;
_constructor.function.fileOffset = charOpenParenOffset;
_constructor.function.fileEndOffset = _constructor.fileEndOffset;
_constructor.function.typeParameters = const <TypeParameter>[];
_constructor.isConst = isConst;
_constructor.isExternal = isExternal;
_constructor.name = new Name(name, libraryBuilder.library);
updatePrivateMemberName(_constructor, libraryBuilder);
_hasBeenBuilt = true;
}
if (formals != null) {
bool needsInference = false;
Expand Down
45 changes: 41 additions & 4 deletions pkg/front_end/lib/src/fasta/builder/enum_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,33 @@ class EnumBuilder extends SourceClassBuilder {
/// static const List<E> values = const <E>[id0, ..., idn-1];
/// String toString() => _name;
/// }
FieldNameScheme instanceFieldNameScheme = new FieldNameScheme(
isInstanceMember: true,
className: name,
isExtensionMember: false,
extensionName: null,
libraryReference: referencesFrom != null
? referencesFromIndexed.library.reference
: parent.library.reference);

FieldNameScheme staticFieldNameScheme = new FieldNameScheme(
isInstanceMember: false,
className: name,
isExtensionMember: false,
extensionName: null,
libraryReference: referencesFrom != null
? referencesFromIndexed.library.reference
: parent.library.reference);

ProcedureNameScheme procedureNameScheme = new ProcedureNameScheme(
isStatic: false,
isExtensionMember: false,
extensionName: null,
libraryReference: referencesFrom != null
? referencesFromIndexed.library.reference
: parent.library.reference);

Constructor constructorReference;
Reference toStringReference;
Reference indexGetterReference;
Expand Down Expand Up @@ -210,6 +237,8 @@ class EnumBuilder extends SourceClassBuilder {
parent,
charOffset,
charOffset,
instanceFieldNameScheme,
isInstanceMember: true,
fieldGetterReference: indexGetterReference,
fieldSetterReference: indexSetterReference);
members["_name"] = new SourceFieldBuilder(
Expand All @@ -221,6 +250,8 @@ class EnumBuilder extends SourceClassBuilder {
parent,
charOffset,
charOffset,
instanceFieldNameScheme,
isInstanceMember: true,
fieldGetterReference: _nameGetterReference,
fieldSetterReference: _nameSetterReference);
ConstructorBuilder constructorBuilder = new ConstructorBuilderImpl(
Expand Down Expand Up @@ -251,6 +282,8 @@ class EnumBuilder extends SourceClassBuilder {
parent,
charOffset,
charOffset,
staticFieldNameScheme,
isInstanceMember: false,
fieldGetterReference: valuesGetterReference,
fieldSetterReference: valuesSetterReference);
members["values"] = valuesBuilder;
Expand All @@ -263,18 +296,20 @@ class EnumBuilder extends SourceClassBuilder {
0,
stringType,
"toString",
null,
null,
/* typeVariables = */ null,
/* formals = */ null,
ProcedureKind.Method,
parent,
charOffset,
charOffset,
charOffset,
charEndOffset,
toStringReference,
null,
/* tearOffReference = */ null,
AsyncMarker.Sync,
/* isExtensionInstanceMember = */ false);
procedureNameScheme,
isExtensionMember: false,
isInstanceMember: true);
members["toString"] = toStringBuilder;
String className = name;
if (enumConstantInfos != null) {
Expand Down Expand Up @@ -329,6 +364,8 @@ class EnumBuilder extends SourceClassBuilder {
parent,
enumConstantInfo.charOffset,
enumConstantInfo.charOffset,
staticFieldNameScheme,
isInstanceMember: false,
fieldGetterReference: getterReference,
fieldSetterReference: setterReference);
members[name] = fieldBuilder..next = existing;
Expand Down
Loading

0 comments on commit 64460ec

Please sign in to comment.