Skip to content

Commit

Permalink
Generate analysis_server_client protocol_generated.dart and related p…
Browse files Browse the repository at this point in the history
…rotocol files

Change-Id: I9a9af0ee37eab87a5c3e83cba638d855a2e1121b
Reviewed-on: https://dart-review.googlesource.com/c/81341
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
  • Loading branch information
Dan Rubel authored and commit-bot@chromium.org committed Oct 24, 2018
1 parent a902fc3 commit 3dc9119
Show file tree
Hide file tree
Showing 8 changed files with 26,902 additions and 13 deletions.
56 changes: 44 additions & 12 deletions pkg/analysis_server/tool/spec/codegen_dart_protocol.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,27 @@ const Map<String, String> specialElementFlags = const {
'deprecated': '0x20'
};

GeneratedFile target(bool responseRequiresRequestTime) {
GeneratedFile clientTarget(bool responseRequiresRequestTime) {
return new GeneratedFile(
'../analysis_server_client/lib/src/protocol/protocol_generated.dart',
(String pkgPath) async {
CodegenProtocolVisitor visitor = new CodegenProtocolVisitor(
'analysis_server_client',
responseRequiresRequestTime,
false,
readApi(pkgPath));
return visitor.collectCode(visitor.visitApi);
});
}

GeneratedFile serverTarget(bool responseRequiresRequestTime) {
return new GeneratedFile('lib/protocol/protocol_generated.dart',
(String pkgPath) async {
CodegenProtocolVisitor visitor = new CodegenProtocolVisitor(
path.basename(pkgPath), responseRequiresRequestTime, readApi(pkgPath));
path.basename(pkgPath),
responseRequiresRequestTime,
true,
readApi(pkgPath));
return visitor.collectCode(visitor.visitApi);
});
}
Expand Down Expand Up @@ -79,6 +95,12 @@ class CodegenProtocolVisitor extends DartCodegenVisitor with CodeGenerator {
*/
final bool responseRequiresRequestTime;

/**
* A flag indicating whether this generated code is for the server
* (analysis_server) or for the client (analysis_server_client).
*/
final bool isServer;

/**
* Visitor used to produce doc comments.
*/
Expand All @@ -91,8 +113,8 @@ class CodegenProtocolVisitor extends DartCodegenVisitor with CodeGenerator {
*/
final Map<String, ImpliedType> impliedTypes;

CodegenProtocolVisitor(
this.packageName, this.responseRequiresRequestTime, Api api)
CodegenProtocolVisitor(this.packageName, this.responseRequiresRequestTime,
this.isServer, Api api)
: toHtmlVisitor = new ToHtmlVisitor(api),
impliedTypes = computeImpliedTypes(api),
super(api) {
Expand Down Expand Up @@ -403,14 +425,24 @@ class CodegenProtocolVisitor extends DartCodegenVisitor with CodeGenerator {
void emitImports() {
writeln("import 'dart:convert' hide JsonDecoder;");
writeln();
writeln("import 'package:analyzer/src/generated/utilities_general.dart';");
writeln("import 'package:$packageName/protocol/protocol.dart';");
writeln(
"import 'package:$packageName/src/protocol/protocol_internal.dart';");
for (String uri in api.types.importUris) {
write("import '");
write(uri);
writeln("';");
if (isServer) {
writeln(
"import 'package:analyzer/src/generated/utilities_general.dart';");
writeln("import 'package:$packageName/protocol/protocol.dart';");
writeln(
"import 'package:$packageName/src/protocol/protocol_internal.dart';");
for (String uri in api.types.importUris) {
write("import '");
write(uri);
writeln("';");
}
} else {
writeln("import 'package:$packageName/src/protocol/protocol_base.dart';");
writeln(
"import 'package:$packageName/src/protocol/protocol_common.dart';");
writeln(
"import 'package:$packageName/src/protocol/protocol_internal.dart';");
writeln("import 'package:$packageName/src/protocol/protocol_util.dart';");
}
}

Expand Down
3 changes: 2 additions & 1 deletion pkg/analysis_server/tool/spec/generate_all.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ main() async {
List<GeneratedContent> get allTargets {
List<GeneratedContent> targets = <GeneratedContent>[];
targets.add(codegen_analysis_server.target);
targets.add(codegen_dart_protocol.target(false));
targets.add(codegen_dart_protocol.clientTarget(false));
targets.add(codegen_dart_protocol.serverTarget(false));
targets.add(codegen_java_types.targetDir);
targets.add(codegen_inttest_methods.target);
targets.add(codegen_matchers.target);
Expand Down
3 changes: 3 additions & 0 deletions pkg/analysis_server_client/lib/protocol.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

export 'package:analysis_server_client/src/protocol/protocol_base.dart';
export 'package:analysis_server_client/src/protocol/protocol_common.dart';
export 'package:analysis_server_client/src/protocol/protocol_constants.dart';
export 'package:analysis_server_client/src/protocol/protocol_generated.dart';
Loading

0 comments on commit 3dc9119

Please sign in to comment.