Add script location to generated code message

The previous message added to Java generated code was not helpful for finding the generating code.

TEST=N/A

Change-Id: Ie60202ac68e8790a422a47c6edfd75997cf32145
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/232024
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
This commit is contained in:
Helin Shiah 2022-02-08 19:44:40 +00:00 committed by Commit Bot
parent 23b954f067
commit ba50128769
5 changed files with 35 additions and 18 deletions

View file

@ -13,7 +13,7 @@
*/
package org.dartlang.vm.service.consumer;
// This is a generated file.
// This file is generated by the script: pkg/vm_service/tool/generate.dart in dart-lang/sdk.
import org.dartlang.vm.service.element.Breakpoint;

View file

@ -13,7 +13,7 @@
*/
package org.dartlang.vm.service.consumer;
// This is a generated file.
// This file is generated by the script: pkg/vm_service/tool/generate.dart in dart-lang/sdk.
import org.dartlang.vm.service.element.CpuSamples;

View file

@ -67,7 +67,12 @@ Future _generateDart(String appDirPath, List<Node> nodes) async {
Future _generateJava(String appDirPath, List<Node> nodes) async {
var srcDirPath = normalize(join(appDirPath, '..', 'java', 'src'));
var generator = java.JavaGenerator(srcDirPath);
java.api = java.Api();
final scriptPath = Platform.script.toFilePath();
final kSdk = '/sdk/';
final scriptLocation =
scriptPath.substring(scriptPath.indexOf(kSdk) + kSdk.length);
java.api = java.Api(scriptLocation);
java.api.parse(nodes);
java.api.generate(generator);

View file

@ -101,11 +101,14 @@ class Api extends Member with ApiParseUtil {
List<Enum?> enums = [];
List<Type?> types = [];
Map<String, List<String>> streamIdMap = {};
final String scriptLocation;
String? get docs => null;
String get name => 'api';
Api(this.scriptLocation);
void addProperty(String typeName, String propertyName, {String? javadoc}) {
var t = types.firstWhere((t) => t!.name == typeName)!;
for (var f in t.fields) {
@ -148,7 +151,8 @@ class Api extends Member with ApiParseUtil {
}
}
gen.writeType('$servicePackage.VmService', (TypeWriter writer) {
gen.writeType('$servicePackage.VmService', scriptLocation,
(TypeWriter writer) {
writer.addImport('com.google.gson.JsonArray');
writer.addImport('com.google.gson.JsonObject');
writer.addImport('com.google.gson.JsonPrimitive');
@ -311,11 +315,11 @@ class Api extends Member with ApiParseUtil {
if (docs != null) docs = docs.trim();
if (definition.startsWith('class ')) {
types.add(Type(this, name, definition, docs));
types.add(Type(this, scriptLocation, name, definition, docs));
} else if (name.substring(0, 1).toLowerCase() == name.substring(0, 1)) {
methods.add(Method(name, definition, docs));
methods.add(Method(name, scriptLocation, definition, docs));
} else if (definition.startsWith('enum ')) {
enums.add(Enum(name, definition, docs));
enums.add(Enum(name, scriptLocation, definition, docs));
} else {
throw 'unexpected entity: ${name}, ${definition}';
}
@ -365,18 +369,19 @@ class Api extends Member with ApiParseUtil {
class Enum extends Member {
final String name;
final String scriptLocation;
final String? docs;
List<EnumValue> enums = [];
Enum(this.name, String definition, [this.docs]) {
Enum(this.name, this.scriptLocation, String definition, [this.docs]) {
_parse(Tokenizer(definition).tokenize());
}
String get elementTypeName => '$servicePackage.element.$name';
void generateEnum(JavaGenerator gen) {
gen.writeType(elementTypeName, (TypeWriter writer) {
gen.writeType(elementTypeName, scriptLocation, (TypeWriter writer) {
writer.javadoc = convertDocLinks(docs);
writer.isEnum = true;
enums.sort((v1, v2) => v1.name!.compareTo(v2.name!));
@ -496,13 +501,14 @@ class MemberType extends Member {
class Method extends Member {
final String name;
final String scriptLocation;
final String? docs;
MemberType returnType = MemberType();
bool deprecated = false;
List<MethodArg> args = [];
Method(this.name, String definition, [this.docs]) {
Method(this.name, this.scriptLocation, String definition, [this.docs]) {
_parse(Tokenizer(definition).tokenize());
}
@ -521,7 +527,7 @@ class Method extends Member {
bool get hasOptionalArgs => args.any((MethodArg arg) => arg.optional);
void generateConsumerInterface(JavaGenerator gen) {
gen.writeType(consumerTypeName, (TypeWriter writer) {
gen.writeType(consumerTypeName, scriptLocation, (TypeWriter writer) {
writer.javadoc = convertDocLinks(returnType.docs);
writer.interfaceNames.add('$servicePackage.consumer.Consumer');
writer.isInterface = true;
@ -752,13 +758,15 @@ class TextOutputVisitor implements NodeVisitor {
class Type extends Member {
final Api parent;
final String scriptLocation;
String? rawName;
String? name;
String? superName;
final String? docs;
List<TypeField> fields = [];
Type(this.parent, String categoryName, String definition, [this.docs]) {
Type(this.parent, this.scriptLocation, String categoryName, String definition,
[this.docs]) {
_parse(Tokenizer(definition).tokenize());
}
@ -787,7 +795,8 @@ class Type extends Member {
api.types.toList()..retainWhere((t) => t!.superName == name);
void generateElement(JavaGenerator gen) {
gen.writeType('$servicePackage.element.$name', (TypeWriter writer) {
gen.writeType('$servicePackage.element.$name', scriptLocation,
(TypeWriter writer) {
if (fields.any((f) => f.type.types.any((t) => t.isArray))) {
writer.addImport('com.google.gson.JsonObject');
}

View file

@ -57,8 +57,8 @@ class JavaGenerator {
Iterable<String> get allWrittenFiles => _generatedPaths;
/// Generate a Java class/interface in the given package
void writeType(String typeName, WriteType write) {
var classWriter = TypeWriter(typeName);
void writeType(String typeName, scriptLocation, WriteType write) {
var classWriter = TypeWriter(typeName, scriptLocation);
write(classWriter);
var pkgDirPath = join(srcDirPath, joinAll(pkgNameFor(typeName).split('.')));
var pkgDir = Directory(pkgDirPath);
@ -123,10 +123,12 @@ class TypeWriter {
final StringBuffer _content = StringBuffer();
final List<String> _fields = <String>[];
final Map<String, String> _methods = Map<String, String>();
final String scriptLocation;
TypeWriter(String typeName)
TypeWriter(String typeName, scriptLocation)
: this.pkgName = pkgNameFor(typeName),
this.className = classNameFor(typeName);
this.className = classNameFor(typeName),
this.scriptLocation = scriptLocation;
String get kind {
if (isInterface) return 'interface';
@ -263,7 +265,8 @@ class TypeWriter {
if (fileHeader != null) buffer.write(fileHeader);
buffer.writeln('package $pkgName;');
buffer.writeln();
buffer.writeln('// This is a generated file.');
buffer.writeln(
'// This file is generated by the script: ${scriptLocation} in dart-lang/sdk.');
buffer.writeln();
addImport(superclassName);
interfaceNames.forEach((t) => addImport(t));