| Index: pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart
|
| index ee90588e0fec5d36b0c47bda0f3bdb4b057a0b46..c6f206933384f2afa355c9da30b58ad13d0ce9ef 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart
|
| @@ -34,16 +34,22 @@ class KernelFieldBuilder extends FieldBuilder<Expression> {
|
| final Field field;
|
| final List<MetadataBuilder> metadata;
|
| final KernelTypeBuilder type;
|
| - final Token initializerToken;
|
| -
|
| - KernelFieldBuilder(this.metadata, this.type, String name, int modifiers,
|
| - Builder compilationUnit, int charOffset, this.initializerToken)
|
| + final Token initializerTokenForInference;
|
| + final bool hasInitializer;
|
| +
|
| + KernelFieldBuilder(
|
| + this.metadata,
|
| + this.type,
|
| + String name,
|
| + int modifiers,
|
| + Builder compilationUnit,
|
| + int charOffset,
|
| + this.initializerTokenForInference,
|
| + this.hasInitializer)
|
| : field = new KernelField(null, fileUri: compilationUnit?.relativeFileUri)
|
| ..fileOffset = charOffset,
|
| super(name, modifiers, compilationUnit, charOffset);
|
|
|
| - bool get hasInitializer => initializerToken != null;
|
| -
|
| void set initializer(Expression value) {
|
| if (!hasInitializer && value is! NullLiteral && !isConst && !isFinal) {
|
| internalError("Attempt to set initializer on field without initializer.");
|
| @@ -63,7 +69,9 @@ class KernelFieldBuilder extends FieldBuilder<Expression> {
|
| ..hasImplicitGetter = isInstanceMember
|
| ..hasImplicitSetter = isInstanceMember && !isConst && !isFinal
|
| ..isStatic = !isInstanceMember;
|
| - if (initializerToken != null && !initializerToken.isEof) {
|
| + if (initializerTokenForInference != null &&
|
| + !initializerTokenForInference.isEof) {
|
| + assert(type == null);
|
| library.loader.typeInferenceEngine.recordField(field);
|
| }
|
| return field;
|
| @@ -74,7 +82,8 @@ class KernelFieldBuilder extends FieldBuilder<Expression> {
|
| @override
|
| void prepareInitializerInference(
|
| SourceLibraryBuilder library, ClassBuilder currentClass) {
|
| - if (initializerToken != null && !initializerToken.isEof) {
|
| + if (initializerTokenForInference != null &&
|
| + !initializerTokenForInference.isEof) {
|
| var memberScope =
|
| currentClass == null ? library.scope : currentClass.scope;
|
| // TODO(paulberry): Is it correct to pass library.uri into BodyBuilder, or
|
| @@ -95,7 +104,7 @@ class KernelFieldBuilder extends FieldBuilder<Expression> {
|
| library.uri,
|
| typeInferrer);
|
| Parser parser = new Parser(bodyBuilder);
|
| - Token token = parser.parseExpression(initializerToken);
|
| + Token token = parser.parseExpression(initializerTokenForInference);
|
| Expression expression = bodyBuilder.popForValue();
|
| bodyBuilder.checkEmpty(token.charOffset);
|
| initializer = expression;
|
|
|