OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 dev_compiler.src.codegen.dart_codegen; | 5 library dev_compiler.src.codegen.dart_codegen; |
6 | 6 |
7 import 'dart:io' show File; | 7 import 'dart:io' show File; |
8 | 8 |
9 import 'package:analyzer/analyzer.dart' as analyzer; | 9 import 'package:analyzer/analyzer.dart' as analyzer; |
10 import 'package:analyzer/src/generated/ast.dart'; | 10 import 'package:analyzer/src/generated/ast.dart'; |
11 import 'package:analyzer/src/generated/element.dart'; | 11 import 'package:analyzer/src/generated/element.dart'; |
12 import 'package:analyzer/src/generated/java_core.dart' as java_core; | 12 import 'package:analyzer/src/generated/java_core.dart' as java_core; |
13 import 'package:analyzer/src/generated/scanner.dart' show Token; | 13 import 'package:analyzer/src/generated/scanner.dart' show Token; |
14 import 'package:dart_style/dart_style.dart'; | |
15 import 'package:logging/logging.dart' as logger; | 14 import 'package:logging/logging.dart' as logger; |
16 import 'package:path/path.dart' as path; | 15 import 'package:path/path.dart' as path; |
17 | 16 |
18 import 'package:dev_compiler/devc.dart' show AbstractCompiler; | 17 import 'package:dev_compiler/devc.dart' show AbstractCompiler; |
19 import 'package:dev_compiler/src/info.dart'; | 18 import 'package:dev_compiler/src/info.dart'; |
20 import 'package:dev_compiler/src/options.dart'; | 19 import 'package:dev_compiler/src/options.dart'; |
21 import 'package:dev_compiler/src/utils.dart' as utils; | 20 import 'package:dev_compiler/src/utils.dart' as utils; |
22 import 'ast_builder.dart'; | 21 import 'ast_builder.dart'; |
23 import 'code_generator.dart' as codegenerator; | 22 import 'code_generator.dart' as codegenerator; |
24 import 'reify_coercions.dart' | 23 import 'reify_coercions.dart' |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 // TODO(leafp) This is kind of a hack, but it works for now. | 87 // TODO(leafp) This is kind of a hack, but it works for now. |
89 class FileWriter extends java_core.PrintStringWriter { | 88 class FileWriter extends java_core.PrintStringWriter { |
90 final CompilerOptions options; | 89 final CompilerOptions options; |
91 String _path; | 90 String _path; |
92 FileWriter(this.options, this._path); | 91 FileWriter(this.options, this._path); |
93 int indent = 0; | 92 int indent = 0; |
94 int withinInterpolationExpression = 0; | 93 int withinInterpolationExpression = 0; |
95 bool insideForLoop = false; | 94 bool insideForLoop = false; |
96 | 95 |
97 void print(x) { | 96 void print(x) { |
98 if (!options.cheapTestFormat) { | 97 if (!options.formatOutput) { |
99 super.print(x); | 98 super.print(x); |
100 return; | 99 return; |
101 } | 100 } |
102 | 101 |
103 switch (x) { | 102 switch (x) { |
104 case '{': | 103 case '{': |
105 indent++; | 104 indent++; |
106 x = '{\n${" " * indent}'; | 105 x = '{\n${" " * indent}'; |
107 break; | 106 break; |
108 case ';': | 107 case ';': |
(...skipping 17 matching lines...) Expand all Loading... |
126 indent--; | 125 indent--; |
127 x = '}\n${" " * indent}'; | 126 x = '}\n${" " * indent}'; |
128 } | 127 } |
129 break; | 128 break; |
130 } | 129 } |
131 super.print(x); | 130 super.print(x); |
132 } | 131 } |
133 | 132 |
134 void finalize() { | 133 void finalize() { |
135 String s = toString(); | 134 String s = toString(); |
136 if (options.formatOutput && !options.cheapTestFormat) { | |
137 DartFormatter d = new DartFormatter(); | |
138 try { | |
139 _log.fine("Formatting file $_path "); | |
140 s = d.format(s, uri: _path); | |
141 } catch (e) { | |
142 _log.severe("Failed to format $_path: " + e.toString()); | |
143 } | |
144 } | |
145 _log.fine("Writing file $_path"); | 135 _log.fine("Writing file $_path"); |
146 new File(_path).writeAsStringSync(s); | 136 new File(_path).writeAsStringSync(s); |
147 } | 137 } |
148 } | 138 } |
149 | 139 |
150 bool _identifierNeedsQualification(Identifier id, NewTypeIdDesc desc) { | 140 bool _identifierNeedsQualification(Identifier id, NewTypeIdDesc desc) { |
151 var library = desc.importedFrom; | 141 var library = desc.importedFrom; |
152 if (library == null) return false; | 142 if (library == null) return false; |
153 if (library.isDartCore) return false; | 143 if (library.isDartCore) return false; |
154 if (desc.fromCurrent) return false; | 144 if (desc.fromCurrent) return false; |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 void generateUnit(CompilationUnit unit, LibraryInfo info, String libraryDir) { | 447 void generateUnit(CompilationUnit unit, LibraryInfo info, String libraryDir) { |
458 var uri = unit.element.source.uri; | 448 var uri = unit.element.source.uri; |
459 _log.fine("Emitting original unit " + uri.toString()); | 449 _log.fine("Emitting original unit " + uri.toString()); |
460 FileWriter out = new FileWriter( | 450 FileWriter out = new FileWriter( |
461 options, path.join(libraryDir, '${uri.pathSegments.last}')); | 451 options, path.join(libraryDir, '${uri.pathSegments.last}')); |
462 var unitGen = new EmptyUnitGenerator(unit, out); | 452 var unitGen = new EmptyUnitGenerator(unit, out); |
463 unitGen.generate(); | 453 unitGen.generate(); |
464 out.finalize(); | 454 out.finalize(); |
465 } | 455 } |
466 } | 456 } |
OLD | NEW |