| Index: pkg/front_end/lib/src/fasta/source/source_library_builder.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
|
| index 8c552e4db4346458578408dd758395361e4e552b..3a0985fd7039b44a01d49d6bf507669a71f3ea05 100644
|
| --- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
|
| @@ -4,6 +4,11 @@
|
|
|
| library fasta.source_library_builder;
|
|
|
| +import 'package:front_end/src/fasta/scanner/token.dart' show SymbolToken, Token;
|
| +
|
| +import 'package:front_end/src/fasta/type_inference/type_inferrer.dart'
|
| + show TypeInferrer;
|
| +
|
| import 'package:kernel/ast.dart' show AsyncMarker, ProcedureKind;
|
|
|
| import '../combinator.dart' show Combinator;
|
| @@ -171,14 +176,23 @@ abstract class SourceLibraryBuilder<T extends TypeBuilder, R>
|
| int charOffset);
|
|
|
| void addField(List<MetadataBuilder> metadata, int modifiers, T type,
|
| - String name, int charOffset);
|
| + String name, int charOffset, Token initializer);
|
|
|
| void addFields(List<MetadataBuilder> metadata, int modifiers, T type,
|
| - List<Object> namesAndOffsets) {
|
| - for (int i = 0; i < namesAndOffsets.length; i += 2) {
|
| - String name = namesAndOffsets[i];
|
| - int charOffset = namesAndOffsets[i + 1];
|
| - addField(metadata, modifiers, type, name, charOffset);
|
| + List<Object> namesOffsetsAndInitializers) {
|
| + for (int i = 0; i < namesOffsetsAndInitializers.length; i += 4) {
|
| + String name = namesOffsetsAndInitializers[i];
|
| + int charOffset = namesOffsetsAndInitializers[i + 1];
|
| + Token initializer;
|
| + if (type == null) {
|
| + initializer = namesOffsetsAndInitializers[i + 2];
|
| + Token afterInitializer = namesOffsetsAndInitializers[i + 3];
|
| + // TODO(paulberry): figure out a way to do this without using
|
| + // Token.previous.
|
| + afterInitializer?.previous
|
| + ?.setNext(new SymbolToken.eof(afterInitializer.offset));
|
| + }
|
| + addField(metadata, modifiers, type, name, charOffset, initializer);
|
| }
|
| }
|
|
|
| @@ -469,6 +483,14 @@ abstract class SourceLibraryBuilder<T extends TypeBuilder, R>
|
|
|
| @override
|
| String get fullNameForErrors => name ?? "<library '$relativeFileUri'>";
|
| +
|
| + @override
|
| + void prepareInitializerInference(TypeInferrer typeInferrer,
|
| + LibraryBuilder library, ClassBuilder currentClass) {
|
| + forEach((String name, Builder member) {
|
| + member.prepareInitializerInference(typeInferrer, library, currentClass);
|
| + });
|
| + }
|
| }
|
|
|
| /// Unlike [Scope], this scope is used during construction of builders to
|
|
|