| Index: frog/world.dart
|
| diff --git a/frog/world.dart b/frog/world.dart
|
| index 67e7e191069c2c9ee73a9c77701e935e4209d314..bb77aa16aee0bd957c1b641aaa49a12dcd0311a3 100644
|
| --- a/frog/world.dart
|
| +++ b/frog/world.dart
|
| @@ -410,6 +410,7 @@ class World {
|
| void runCompilationPhases() {
|
| final lib = withTiming('first pass', () => processDartScript());
|
| withTiming('resolve top level', resolveAll);
|
| + withTiming('privatization', () { makePrivateMembersUnique(lib); });
|
| if (experimentalAwaitPhase != null) {
|
| withTiming('await translation', experimentalAwaitPhase);
|
| }
|
| @@ -488,6 +489,36 @@ class World {
|
| }
|
| }
|
|
|
| + makePrivateMembersUnique(Library rootLib) {
|
| + var usedNames = new Set<String>();
|
| + process(lib) {
|
| + for (var name in lib._privateMembers.getKeys()) {
|
| + if (usedNames.contains(name)) {
|
| + var members = lib._privateMembers[name];
|
| + String uniqueName = '_${lib.jsname}${members.jsname}';
|
| + members.jsname = uniqueName;
|
| + for (var member in members.members) {
|
| + member._jsname = uniqueName;
|
| + }
|
| + } else {
|
| + usedNames.add(name);
|
| + }
|
| + }
|
| + }
|
| +
|
| + // Visit libraries in pre-order of imports.
|
| + var visited = new Set<Library>();
|
| + visit(lib) {
|
| + if (visited.contains(lib)) return;
|
| + visited.add(lib);
|
| + process(lib);
|
| + for (var import in lib.imports) {
|
| + visit(import.library);
|
| + }
|
| + }
|
| + visit(rootLib);
|
| + }
|
| +
|
| findMainMethod(Library lib) {
|
| var main = lib.lookup('main', lib.span);
|
| if (main == null) {
|
|
|