| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 import 'package:analyzer/src/codegen/tools.dart'; | 5 import 'package:analyzer/src/codegen/tools.dart'; |
| 6 import 'package:front_end/src/codegen/tools.dart'; | 6 import 'package:front_end/src/codegen/tools.dart'; |
| 7 import 'package:path/path.dart' as path; | 7 import 'package:path/path.dart' as path; |
| 8 | 8 |
| 9 import 'api.dart'; | 9 import 'api.dart'; |
| 10 import 'codegen_dart_protocol.dart'; | 10 import 'codegen_dart_protocol.dart'; |
| 11 import 'from_html.dart'; | 11 import 'from_html.dart'; |
| 12 import 'implied_types.dart'; | 12 import 'implied_types.dart'; |
| 13 | 13 |
| 14 final GeneratedFile target = | 14 GeneratedFile target(bool responseRequiresRequestTime) => |
| 15 new GeneratedFile('lib/protocol/protocol_common.dart', (String pkgPath) { | 15 new GeneratedFile('lib/protocol/protocol_common.dart', (String pkgPath) { |
| 16 CodegenCommonVisitor visitor = | 16 CodegenCommonVisitor visitor = new CodegenCommonVisitor( |
| 17 new CodegenCommonVisitor(path.basename(pkgPath), readApi(pkgPath)); | 17 path.basename(pkgPath), |
| 18 return visitor.collectCode(visitor.visitApi); | 18 responseRequiresRequestTime, |
| 19 }); | 19 readApi(pkgPath)); |
| 20 return visitor.collectCode(visitor.visitApi); |
| 21 }); |
| 20 | 22 |
| 21 /** | 23 /** |
| 22 * A visitor that produces Dart code defining the common types associated with | 24 * A visitor that produces Dart code defining the common types associated with |
| 23 * the API. | 25 * the API. |
| 24 */ | 26 */ |
| 25 class CodegenCommonVisitor extends CodegenProtocolVisitor { | 27 class CodegenCommonVisitor extends CodegenProtocolVisitor { |
| 26 /** | 28 /** |
| 27 * Initialize a newly created visitor to generate code in the package with the | 29 * Initialize a newly created visitor to generate code in the package with the |
| 28 * given [packageName] corresponding to the types in the given [api] that are | 30 * given [packageName] corresponding to the types in the given [api] that are |
| 29 * common to multiple protocols. | 31 * common to multiple protocols. |
| 30 */ | 32 */ |
| 31 CodegenCommonVisitor(String packageName, Api api) : super(packageName, api); | 33 CodegenCommonVisitor( |
| 34 String packageName, bool responseRequiresRequestTime, Api api) |
| 35 : super(packageName, responseRequiresRequestTime, api); |
| 32 | 36 |
| 33 @override | 37 @override |
| 34 void emitImports() { | 38 void emitImports() { |
| 35 writeln("import 'dart:convert' hide JsonDecoder;"); | 39 writeln("import 'dart:convert' hide JsonDecoder;"); |
| 36 writeln(); | 40 writeln(); |
| 37 writeln("import 'package:analyzer/src/generated/utilities_general.dart';"); | 41 writeln("import 'package:analyzer/src/generated/utilities_general.dart';"); |
| 38 writeln("import 'package:$packageName/protocol/protocol.dart';"); | 42 writeln("import 'package:$packageName/protocol/protocol.dart';"); |
| 39 writeln( | 43 writeln( |
| 40 "import 'package:$packageName/src/protocol/protocol_internal.dart';"); | 44 "import 'package:$packageName/src/protocol/protocol_internal.dart';"); |
| 41 } | 45 } |
| 42 | 46 |
| 43 @override | 47 @override |
| 44 List<ImpliedType> getClassesToEmit() { | 48 List<ImpliedType> getClassesToEmit() { |
| 45 List<ImpliedType> types = impliedTypes.values.where((ImpliedType type) { | 49 List<ImpliedType> types = impliedTypes.values.where((ImpliedType type) { |
| 46 ApiNode node = type.apiNode; | 50 ApiNode node = type.apiNode; |
| 47 return node is TypeDefinition && node.isExternal; | 51 return node is TypeDefinition && node.isExternal; |
| 48 }).toList(); | 52 }).toList(); |
| 49 types.sort((first, second) => | 53 types.sort((first, second) => |
| 50 capitalize(first.camelName).compareTo(capitalize(second.camelName))); | 54 capitalize(first.camelName).compareTo(capitalize(second.camelName))); |
| 51 return types; | 55 return types; |
| 52 } | 56 } |
| 53 } | 57 } |
| OLD | NEW |