Skip to content

Commit 0177076

Browse files
johnniwinthercommit-bot@chromium.org
authored andcommitted
[cfe] Merge KernelBodyBuilder into BodyBuilder
Change-Id: Ica7d23a54659606ef8d01c647dc8d89f10796bb3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/109712 Reviewed-by: Dan Rubel <[email protected]> Commit-Queue: Johnni Winther <[email protected]>
1 parent 05b5883 commit 0177076

File tree

9 files changed

+52
-112
lines changed

9 files changed

+52
-112
lines changed

pkg/front_end/lib/src/fasta/kernel/body_builder.dart

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ import 'expression_generator.dart'
104104

105105
import 'expression_generator_helper.dart' show ExpressionGeneratorHelper;
106106

107+
import 'fangorn.dart' show Fangorn;
108+
107109
import 'forest.dart' show Forest;
108110

109111
import 'implicit_type_argument.dart' show ImplicitTypeArgument;
@@ -134,8 +136,10 @@ const noLocation = null;
134136
// has been enabled by default.
135137
const invalidCollectionElement = const Object();
136138

137-
abstract class BodyBuilder extends ScopeListener<JumpTarget>
139+
class BodyBuilder extends ScopeListener<JumpTarget>
138140
implements ExpressionGeneratorHelper, EnsureLoaded {
141+
final Forest forest;
142+
139143
// TODO(ahe): Rename [library] to 'part'.
140144
@override
141145
final KernelLibraryBuilder library;
@@ -277,7 +281,8 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
277281
this.isInstanceMember,
278282
this.uri,
279283
this.typeInferrer)
280-
: enableNative =
284+
: forest = const Fangorn(),
285+
enableNative =
281286
library.loader.target.backendTarget.enableNative(library.uri),
282287
stringExpectedAfterNative =
283288
library.loader.target.backendTarget.nativeExtensionExpectsString,
@@ -312,6 +317,25 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
312317
field.parent is KernelClassBuilder ? field.parent : null,
313318
typeInferrer);
314319

320+
BodyBuilder.forOutlineExpression(
321+
KernelLibraryBuilder library,
322+
KernelClassBuilder classBuilder,
323+
ModifierBuilder member,
324+
Scope scope,
325+
Uri fileUri)
326+
: this(
327+
library,
328+
member,
329+
scope,
330+
null,
331+
library.loader.hierarchy,
332+
library.loader.coreTypes,
333+
classBuilder,
334+
member?.isInstanceMember ?? false,
335+
fileUri,
336+
library.loader.typeInferenceEngine?.createLocalTypeInferrer(
337+
fileUri, classBuilder?.target?.thisType, library));
338+
315339
bool get inConstructor {
316340
return functionNestingLevel == 0 && member is KernelConstructorBuilder;
317341
}
@@ -5358,9 +5382,11 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
53585382
return new DeferredCheckJudgment(check, expression);
53595383
}
53605384

5361-
/// TODO(ahe): This method is temporarily implemented by subclasses. Once type
5362-
/// promotion is independent of shadow nodes, remove this method.
5363-
void enterThenForTypePromotion(Expression condition);
5385+
/// TODO(ahe): This method is temporarily implemented. Once type promotion is
5386+
/// independent of shadow nodes, remove this method.
5387+
void enterThenForTypePromotion(Expression condition) {
5388+
typePromoter?.enterThen(condition);
5389+
}
53645390

53655391
bool isErroneousNode(TreeNode node) {
53665392
return library.loader.handledErrors.isNotEmpty &&

pkg/front_end/lib/src/fasta/kernel/kernel_body_builder.dart

Lines changed: 0 additions & 69 deletions
This file was deleted.

pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import '../type_inference/type_inferrer.dart' show TypeInferrerImpl;
2929

3030
import '../type_inference/type_schema.dart' show UnknownType;
3131

32-
import 'kernel_body_builder.dart' show KernelBodyBuilder;
32+
import 'body_builder.dart' show BodyBuilder;
3333

3434
import 'kernel_builder.dart'
3535
show
@@ -124,9 +124,8 @@ class KernelFieldBuilder extends FieldBuilder<Expression> {
124124
classBuilder.hasConstConstructor)) &&
125125
constInitializerToken != null) {
126126
Scope scope = classBuilder?.scope ?? library.scope;
127-
KernelBodyBuilder bodyBuilder =
128-
new KernelBodyBuilder.forOutlineExpression(
129-
library, classBuilder, this, scope, fileUri);
127+
BodyBuilder bodyBuilder = new BodyBuilder.forOutlineExpression(
128+
library, classBuilder, this, scope, fileUri);
130129
bodyBuilder.constantContext =
131130
isConst ? ConstantContext.inferred : ConstantContext.none;
132131
initializer = bodyBuilder.parseFieldInitializer(constInitializerToken)
@@ -172,8 +171,7 @@ class KernelFieldBuilder extends FieldBuilder<Expression> {
172171
TypeInferrerImpl typeInferrer = library.loader.typeInferenceEngine
173172
.createTopLevelTypeInferrer(
174173
fileUri, field.enclosingClass?.thisType, null);
175-
KernelBodyBuilder bodyBuilder =
176-
new KernelBodyBuilder.forField(this, typeInferrer);
174+
BodyBuilder bodyBuilder = new BodyBuilder.forField(this, typeInferrer);
177175
bodyBuilder.constantContext =
178176
isConst ? ConstantContext.inferred : ConstantContext.none;
179177
initializer = bodyBuilder.parseFieldInitializer(type.initializerToken);

pkg/front_end/lib/src/fasta/kernel/kernel_formal_parameter_builder.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import '../scope.dart' show Scope;
1616

1717
import '../source/source_loader.dart' show SourceLoader;
1818

19-
import 'kernel_body_builder.dart' show KernelBodyBuilder;
19+
import 'body_builder.dart' show BodyBuilder;
2020

2121
import 'kernel_builder.dart'
2222
show
@@ -109,9 +109,8 @@ class KernelFormalParameterBuilder extends FormalParameterBuilder<TypeBuilder> {
109109
initializerToken != null) {
110110
final ClassBuilder classBuilder = parent.parent;
111111
Scope scope = classBuilder.scope;
112-
KernelBodyBuilder bodyBuilder =
113-
new KernelBodyBuilder.forOutlineExpression(
114-
library, classBuilder, this, scope, fileUri);
112+
BodyBuilder bodyBuilder = new BodyBuilder.forOutlineExpression(
113+
library, classBuilder, this, scope, fileUri);
115114
bodyBuilder.constantContext = ConstantContext.required;
116115
target.initializer = bodyBuilder.parseFieldInitializer(initializerToken)
117116
..parent = target;

pkg/front_end/lib/src/fasta/kernel/kernel_metadata_builder.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ library fasta.kernel_metadata_builder;
66

77
import 'package:kernel/ast.dart' show Annotatable, Class, Library;
88

9-
import 'kernel_body_builder.dart' show KernelBodyBuilder;
9+
import 'body_builder.dart' show BodyBuilder;
1010

1111
import 'kernel_builder.dart'
1212
show
@@ -37,7 +37,7 @@ class KernelMetadataBuilder extends MetadataBuilder {
3737
Scope scope = parent is Library || parent is Class || classBuilder == null
3838
? library.scope
3939
: classBuilder.scope;
40-
KernelBodyBuilder bodyBuilder = new KernelBodyBuilder.forOutlineExpression(
40+
BodyBuilder bodyBuilder = new BodyBuilder.forOutlineExpression(
4141
library, classBuilder, member, scope, fileUri);
4242
for (int i = 0; i < metadata.length; ++i) {
4343
KernelMetadataBuilder annotationBuilder = metadata[i];

pkg/front_end/lib/src/fasta/kernel/kernel_procedure_builder.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ import '../source/source_loader.dart' show SourceLoader;
6262
import '../type_inference/type_inference_engine.dart'
6363
show IncludesTypeParametersNonCovariantly, Variance;
6464

65-
import 'kernel_body_builder.dart' show KernelBodyBuilder;
65+
import 'body_builder.dart' show BodyBuilder;
6666

6767
import 'kernel_builder.dart'
6868
show
@@ -520,9 +520,8 @@ class KernelConstructorBuilder extends KernelFunctionBuilder {
520520
// for const constructors into the outline.
521521
if (isConst && beginInitializers != null) {
522522
ClassBuilder classBuilder = parent;
523-
KernelBodyBuilder bodyBuilder =
524-
new KernelBodyBuilder.forOutlineExpression(
525-
library, classBuilder, this, classBuilder.scope, fileUri);
523+
BodyBuilder bodyBuilder = new BodyBuilder.forOutlineExpression(
524+
library, classBuilder, this, classBuilder.scope, fileUri);
526525
bodyBuilder.constantContext = ConstantContext.inferred;
527526
bodyBuilder.parseInitializers(beginInitializers);
528527
if (library.loader is SourceLoader) {

pkg/front_end/lib/src/fasta/source/diet_listener.dart

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import '../fasta_codes.dart'
3737

3838
import '../ignored_parser_errors.dart' show isIgnoredParserError;
3939

40-
import '../kernel/kernel_body_builder.dart' show KernelBodyBuilder;
40+
import '../kernel/body_builder.dart' show BodyBuilder;
4141

4242
import '../kernel/kernel_builder.dart'
4343
show KernelFormalParameterBuilder, KernelTypeAliasBuilder, TypeBuilder;
@@ -619,17 +619,8 @@ class DietListener extends StackListener {
619619
ConstantContext constantContext = builder.isConstructor && builder.isConst
620620
? ConstantContext.inferred
621621
: ConstantContext.none;
622-
return new KernelBodyBuilder(
623-
library,
624-
builder,
625-
memberScope,
626-
formalParameterScope,
627-
hierarchy,
628-
coreTypes,
629-
currentClass,
630-
isInstanceMember,
631-
uri,
632-
typeInferrer)
622+
return new BodyBuilder(library, builder, memberScope, formalParameterScope,
623+
hierarchy, coreTypes, currentClass, isInstanceMember, uri, typeInferrer)
633624
..constantContext = constantContext;
634625
}
635626

pkg/front_end/test/fasta/generator_to_string_test.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,9 @@ import 'package:front_end/src/fasta/kernel/kernel_target.dart'
4545
import 'package:front_end/src/fasta/fasta_codes.dart'
4646
show Message, templateUnspecified;
4747

48-
import 'package:front_end/src/fasta/kernel/expression_generator.dart' /*
49-
show Generator*/
50-
;
48+
import 'package:front_end/src/fasta/kernel/expression_generator.dart';
5149

52-
import 'package:front_end/src/fasta/kernel/kernel_body_builder.dart'
53-
show KernelBodyBuilder;
50+
import 'package:front_end/src/fasta/kernel/body_builder.dart' show BodyBuilder;
5451

5552
import 'package:front_end/src/fasta/scanner.dart' show Token, scanString;
5653

@@ -98,7 +95,7 @@ main() {
9895
new TypeParameter("T"), libraryBuilder);
9996
VariableDeclaration variable = new VariableDeclaration(null);
10097

101-
KernelBodyBuilder helper = new KernelBodyBuilder(
98+
BodyBuilder helper = new BodyBuilder(
10299
libraryBuilder, null, null, null, null, null, null, false, uri, null);
103100

104101
Generator generator = new ThisAccessGenerator(helper, token, false, false);

pkg/front_end/test/fasta/unlinked_scope_test.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
2121

2222
import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget;
2323

24-
import 'package:front_end/src/fasta/kernel/kernel_body_builder.dart'
25-
show KernelBodyBuilder;
24+
import 'package:front_end/src/fasta/kernel/body_builder.dart' show BodyBuilder;
2625

2726
import 'package:front_end/src/fasta/kernel/kernel_builder.dart'
2827
show KernelLibraryBuilder, KernelProcedureBuilder;
@@ -61,7 +60,7 @@ class MockLibraryBuilder extends KernelLibraryBuilder {
6160
}
6261
}
6362

64-
class MockBodyBuilder extends KernelBodyBuilder {
63+
class MockBodyBuilder extends BodyBuilder {
6564
MockBodyBuilder.internal(
6665
MockLibraryBuilder libraryBuilder, String name, Scope scope)
6766
: super(libraryBuilder, libraryBuilder.mockProcedure(name), scope, scope,
@@ -72,7 +71,7 @@ class MockBodyBuilder extends KernelBodyBuilder {
7271
}
7372

7473
Expression compileExpression(String source) {
75-
KernelBodyBuilder listener = new MockBodyBuilder(
74+
BodyBuilder listener = new MockBodyBuilder(
7675
Uri.parse("org-dartlang-test:my_library.dart"),
7776
"<test>",
7877
new UnlinkedScope());

0 commit comments

Comments
 (0)