Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Unified Diff: pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart

Issue 2788153002: Create separate scopes for constructors, setters, and other members. (Closed)
Patch Set: One more flaky standalone/io test. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart ('k') | pkg/front_end/lib/src/fasta/import.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
index 56b8c79519bb6d8ae735e9948fe856fd5f9908fc..5854e6f9326dd02685ae3a8968c93468284ec69c 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart
@@ -20,7 +20,12 @@ import 'package:kernel/ast.dart'
import '../errors.dart' show internalError;
import '../kernel/kernel_builder.dart'
- show Builder, KernelInvalidTypeBuilder, KernelTypeBuilder, LibraryBuilder;
+ show
+ Builder,
+ KernelInvalidTypeBuilder,
+ KernelTypeBuilder,
+ LibraryBuilder,
+ Scope;
import '../kernel/redirecting_factory_body.dart' show RedirectingFactoryBody;
@@ -33,20 +38,12 @@ import 'dill_loader.dart' show DillLoader;
class DillLibraryBuilder extends LibraryBuilder<KernelTypeBuilder, Library> {
final Uri uri;
- final Map<String, Builder> members = <String, Builder>{};
-
- // TODO(ahe): Some export information needs to be serialized.
- final Map<String, Builder> exports = <String, Builder>{};
-
final DillLoader loader;
Library library;
- DillLibraryBuilder(Uri uri, this.loader)
- : uri = uri,
- super(uri);
-
- get scope => internalError("Scope not supported");
+ DillLibraryBuilder(this.uri, this.loader)
+ : super(uri, new Scope.top(), new Scope.top());
Uri get fileUri => uri;
@@ -81,8 +78,9 @@ class DillLibraryBuilder extends LibraryBuilder<KernelTypeBuilder, Library> {
void addMember(Member member) {
String name = member.name.name;
if (name == "_exports#") {
+ // TODO(ahe): Add this to exportScope.
// This is a hack / work around for storing exports in dill files. See
- // [compile_platform.dart](../compile_platform.dart).
+ // [compile_platform_dartk.dart](../analyzer/compile_platform_dartk.dart).
} else {
addBuilder(name, new DillMemberBuilder(member, this), member.fileOffset);
}
@@ -90,9 +88,18 @@ class DillLibraryBuilder extends LibraryBuilder<KernelTypeBuilder, Library> {
Builder addBuilder(String name, Builder builder, int charOffset) {
if (name == null || name.isEmpty) return null;
- members[name] = builder;
+ bool isSetter = builder.isSetter;
+ if (isSetter) {
+ scopeBuilder.addSetter(name, builder);
+ } else {
+ scopeBuilder.addMember(name, builder);
+ }
if (!name.startsWith("_")) {
- exports[name] = builder;
+ if (isSetter) {
+ exportScopeBuilder.addSetter(name, builder);
+ } else {
+ exportScopeBuilder.addMember(name, builder);
+ }
}
return builder;
}
« no previous file with comments | « pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart ('k') | pkg/front_end/lib/src/fasta/import.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698