OLD | NEW |
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 Loading... |
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 } |
OLD | NEW |