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 library kernel.ast_to_text; | 4 library kernel.ast_to_text; |
5 | 5 |
6 import '../ast.dart'; | 6 import '../ast.dart'; |
7 import '../import_table.dart'; | 7 import '../import_table.dart'; |
8 | 8 |
9 class Namer<T> { | 9 class Namer<T> { |
10 int index = 0; | 10 int index = 0; |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 var importPath = imports.getImportPath(library); | 276 var importPath = imports.getImportPath(library); |
277 if (importPath == "") { | 277 if (importPath == "") { |
278 var prefix = | 278 var prefix = |
279 syntheticNames.nameLibraryPrefix(library, proposedName: 'self'); | 279 syntheticNames.nameLibraryPrefix(library, proposedName: 'self'); |
280 endLine('import self as $prefix;'); | 280 endLine('import self as $prefix;'); |
281 } else { | 281 } else { |
282 var prefix = syntheticNames.nameLibraryPrefix(library); | 282 var prefix = syntheticNames.nameLibraryPrefix(library); |
283 endLine('import "$importPath" as $prefix;'); | 283 endLine('import "$importPath" as $prefix;'); |
284 } | 284 } |
285 } | 285 } |
| 286 |
286 // TODO(scheglov): Do we want to print dependencies? dartbug.com/30224 | 287 // TODO(scheglov): Do we want to print dependencies? dartbug.com/30224 |
| 288 if (library.additionalExports.isNotEmpty) { |
| 289 write('additionalExports = ('); |
| 290 for (var reference in library.additionalExports) { |
| 291 var node = reference.node; |
| 292 if (node is Class) { |
| 293 Library nodeLibrary = node.enclosingLibrary; |
| 294 String prefix = syntheticNames.nameLibraryPrefix(nodeLibrary); |
| 295 write(prefix + '::' + node.name); |
| 296 } else if (node is Field) { |
| 297 Library nodeLibrary = node.enclosingLibrary; |
| 298 String prefix = syntheticNames.nameLibraryPrefix(nodeLibrary); |
| 299 write(prefix + '::' + node.name.name); |
| 300 } else if (node is Procedure) { |
| 301 Library nodeLibrary = node.enclosingLibrary; |
| 302 String prefix = syntheticNames.nameLibraryPrefix(nodeLibrary); |
| 303 write(prefix + '::' + node.name.name); |
| 304 } else if (node is Typedef) { |
| 305 Library nodeLibrary = node.enclosingLibrary; |
| 306 String prefix = syntheticNames.nameLibraryPrefix(nodeLibrary); |
| 307 write(prefix + '::' + node.name); |
| 308 } else { |
| 309 throw new UnimplementedError('${node.runtimeType}'); |
| 310 } |
| 311 } |
| 312 endLine(')'); |
| 313 } |
| 314 |
287 endLine(); | 315 endLine(); |
288 var inner = new Printer._inner(this, imports); | 316 var inner = new Printer._inner(this, imports); |
289 library.typedefs.forEach(inner.writeNode); | 317 library.typedefs.forEach(inner.writeNode); |
290 library.classes.forEach(inner.writeNode); | 318 library.classes.forEach(inner.writeNode); |
291 library.fields.forEach(inner.writeNode); | 319 library.fields.forEach(inner.writeNode); |
292 library.procedures.forEach(inner.writeNode); | 320 library.procedures.forEach(inner.writeNode); |
293 } | 321 } |
294 | 322 |
295 void writeProgramFile(Program program) { | 323 void writeProgramFile(Program program) { |
296 ImportTable imports = new ProgramImportTable(program); | 324 ImportTable imports = new ProgramImportTable(program); |
(...skipping 1375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1672 } | 1700 } |
1673 throw 'illegal ProcedureKind: $kind'; | 1701 throw 'illegal ProcedureKind: $kind'; |
1674 } | 1702 } |
1675 | 1703 |
1676 class ExpressionPrinter { | 1704 class ExpressionPrinter { |
1677 final Printer writeer; | 1705 final Printer writeer; |
1678 final int minimumPrecedence; | 1706 final int minimumPrecedence; |
1679 | 1707 |
1680 ExpressionPrinter(this.writeer, this.minimumPrecedence); | 1708 ExpressionPrinter(this.writeer, this.minimumPrecedence); |
1681 } | 1709 } |
OLD | NEW |