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

Side by Side Diff: pkg/front_end/lib/src/fasta/import.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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library fasta.import; 5 library fasta.import;
6 6
7 import 'builder/builder.dart' show Builder, LibraryBuilder, PrefixBuilder; 7 import 'builder/builder.dart' show Builder, LibraryBuilder, PrefixBuilder;
8 8
9 import 'combinator.dart' show Combinator; 9 import 'combinator.dart' show Combinator;
10 10
(...skipping 20 matching lines...) Expand all
31 Uri get fileUri => importer.fileUri; 31 Uri get fileUri => importer.fileUri;
32 32
33 void finalizeImports(LibraryBuilder importer) { 33 void finalizeImports(LibraryBuilder importer) {
34 AddToScope add; 34 AddToScope add;
35 PrefixBuilder prefix; 35 PrefixBuilder prefix;
36 if (this.prefix == null) { 36 if (this.prefix == null) {
37 add = (String name, Builder member) { 37 add = (String name, Builder member) {
38 importer.addToScope(name, member, charOffset, true); 38 importer.addToScope(name, member, charOffset, true);
39 }; 39 };
40 } else { 40 } else {
41 prefix = new PrefixBuilder( 41 prefix = new PrefixBuilder(this.prefix, importer, prefixCharOffset);
42 this.prefix, <String, Builder>{}, importer, prefixCharOffset);
43 add = (String name, Builder member) { 42 add = (String name, Builder member) {
44 prefix.exports[name] = member; 43 if (member.isSetter) {
44 prefix.exports.setters[name] = member;
45 } else {
46 prefix.exports.local[name] = member;
47 }
45 }; 48 };
46 } 49 }
47 imported.exports.forEach((String name, Builder member) { 50 imported.exports.forEach((String name, Builder member) {
48 if (combinators != null) { 51 if (combinators != null) {
49 for (Combinator combinator in combinators) { 52 for (Combinator combinator in combinators) {
50 if (combinator.isShow && !combinator.names.contains(name)) return; 53 if (combinator.isShow && !combinator.names.contains(name)) return;
51 if (combinator.isHide && combinator.names.contains(name)) return; 54 if (combinator.isHide && combinator.names.contains(name)) return;
52 } 55 }
53 } 56 }
54 add(name, member); 57 add(name, member);
55 }); 58 });
56 if (prefix != null) { 59 if (prefix != null) {
57 Builder existing = importer.addBuilder(prefix.name, prefix, charOffset); 60 Builder existing = importer.addBuilder(prefix.name, prefix, charOffset);
58 if (existing == prefix) { 61 if (existing == prefix) {
59 importer.addToScope(prefix.name, prefix, prefixCharOffset, true); 62 importer.addToScope(prefix.name, prefix, prefixCharOffset, true);
60 } 63 }
61 } 64 }
62 } 65 }
63 } 66 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart ('k') | pkg/front_end/lib/src/fasta/kernel/body_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698