mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 21:11:19 +00:00
Thread forest object through calls
Change-Id: I4365fca44761c27609c28ac8c36b031e06caf0de Reviewed-on: https://dart-review.googlesource.com/51124 Reviewed-by: Dmitry Stefantsov <dmitryas@google.com> Commit-Queue: Peter von der Ahé <ahe@google.com>
This commit is contained in:
parent
51f9d243e7
commit
988de9c925
|
@ -922,7 +922,7 @@ class LoadLibraryAccessor<Arguments> extends kernel
|
|||
helper.addProblemErrorIfConst(
|
||||
messageLoadLibraryTakesNoArguments, offset, 'loadLibrary'.length);
|
||||
}
|
||||
return builder.createLoadLibrary(offset);
|
||||
return builder.createLoadLibrary(offset, forest);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -707,7 +707,8 @@ abstract class LoadLibraryAccessor<Arguments> extends Accessor<Arguments> {
|
|||
: super(helper, token);
|
||||
|
||||
Expression _makeRead(ShadowComplexAssignment complexAssignment) {
|
||||
var read = helper.makeStaticGet(builder.createTearoffMethod(), token);
|
||||
var read =
|
||||
helper.makeStaticGet(builder.createTearoffMethod(helper.forest), token);
|
||||
complexAssignment?.read = read;
|
||||
return read;
|
||||
}
|
||||
|
|
|
@ -16,17 +16,10 @@ import 'package:kernel/ast.dart'
|
|||
ProcedureKind,
|
||||
ReturnStatement;
|
||||
|
||||
import '../builder/builder.dart' show Builder;
|
||||
|
||||
import 'kernel_library_builder.dart' show KernelLibraryBuilder;
|
||||
import 'kernel_builder.dart' show Builder, KernelLibraryBuilder;
|
||||
|
||||
import 'forest.dart' show Forest;
|
||||
|
||||
import 'fangorn.dart' show Fangorn;
|
||||
|
||||
// TODO(ahe): create a single forest and plumb it here instead.
|
||||
final Forest _forest = new Fangorn();
|
||||
|
||||
/// Builder to represent the `deferLibrary.loadLibrary` calls and tear-offs.
|
||||
class LoadLibraryBuilder extends Builder {
|
||||
final KernelLibraryBuilder parent;
|
||||
|
@ -40,18 +33,16 @@ class LoadLibraryBuilder extends Builder {
|
|||
/// null, no tear-offs were seen in the code and no method is generated.
|
||||
Member tearoff;
|
||||
|
||||
Forest get forest => _forest;
|
||||
|
||||
LoadLibraryBuilder(this.parent, this.importDependency, this.charOffset)
|
||||
: super(parent, charOffset, parent.fileUri);
|
||||
|
||||
LoadLibrary createLoadLibrary(int charOffset) {
|
||||
LoadLibrary createLoadLibrary(int charOffset, Forest forest) {
|
||||
return forest.loadLibrary(importDependency)..fileOffset = charOffset;
|
||||
}
|
||||
|
||||
Procedure createTearoffMethod() {
|
||||
Procedure createTearoffMethod(Forest forest) {
|
||||
if (tearoff != null) return tearoff;
|
||||
LoadLibrary expression = createLoadLibrary(charOffset);
|
||||
LoadLibrary expression = createLoadLibrary(charOffset, forest);
|
||||
String prefix = expression.import.name;
|
||||
tearoff = new Procedure(
|
||||
new Name('__loadLibrary_$prefix', parent.target),
|
||||
|
|
Loading…
Reference in a new issue