mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 12:24:24 +00:00
2e0bc4f308
Change-Id: I86d87dfae1bd9a887d0ab123a83d7275a05bb967 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/213722 Commit-Queue: Joshua Litt <joshualitt@google.com> Reviewed-by: Stephen Adams <sra@google.com>
273 lines
7.7 KiB
Protocol Buffer
273 lines
7.7 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
option go_package = "dart2js_info";
|
|
|
|
package dart2js_info.proto;
|
|
|
|
message DependencyInfoPB {
|
|
/** The dependency element's serialized_id, references as FunctionInfo or FieldInfo. */
|
|
string target_id = 1;
|
|
|
|
/** Either a selector mask indicating how this is used, or 'inlined'. */
|
|
string mask = 2;
|
|
}
|
|
|
|
/** The entire information produced when compiling a program. */
|
|
message AllInfoPB {
|
|
/** Summary information about the program. */
|
|
ProgramInfoPB program = 1;
|
|
|
|
/** All the recorded information about elements processed by the compiler. */
|
|
map<string, InfoPB> all_infos = 2;
|
|
|
|
/** Details about all deferred imports and what files would be loaded when the import is resolved. */
|
|
repeated LibraryDeferredImportsPB deferred_imports = 3;
|
|
}
|
|
|
|
/*
|
|
* Common interface to many pieces of information generated by the dart2js
|
|
* compiler that are directly associated with an element (compilation unit,
|
|
* library, class, function, or field).
|
|
*/
|
|
message InfoPB {
|
|
/** Name of the element associated with this info. */
|
|
string name = 1;
|
|
|
|
/** An id to uniquely identify this info among infos of the same kind. */
|
|
int32 id = 2;
|
|
|
|
/** A globally unique id which combines kind and id together. */
|
|
string serialized_id = 3;
|
|
|
|
/** Id used by the compiler when instrumenting code for code coverage. */
|
|
string coverage_id = 4;
|
|
|
|
/** Bytes used in the generated code for the corresponding element. */
|
|
int32 size = 5;
|
|
|
|
/** The serialized_id of the enclosing element. */
|
|
string parent_id = 6;
|
|
|
|
/** How does this function or field depend on others. */
|
|
repeated DependencyInfoPB uses = 7;
|
|
|
|
/** The serialized_id of the output unit the element is generated into. */
|
|
string output_unit_id = 8;
|
|
|
|
/** Reserved tags for future common fields. */
|
|
reserved 9 to 99;
|
|
|
|
/** The concrete info type. */
|
|
oneof concrete {
|
|
/** Information about a library element. */
|
|
LibraryInfoPB library_info = 100;
|
|
|
|
/** Information about a class element. */
|
|
ClassInfoPB class_info = 101;
|
|
|
|
/** Information about a function element. */
|
|
FunctionInfoPB function_info = 102;
|
|
|
|
/** Information about a field element. */
|
|
FieldInfoPB field_info = 103;
|
|
|
|
/** Information about a constant element. */
|
|
ConstantInfoPB constant_info = 104;
|
|
|
|
/** Information about an output unit element. */
|
|
OutputUnitInfoPB output_unit_info = 105;
|
|
|
|
/** Information about a typedef element. */
|
|
TypedefInfoPB typedef_info = 106;
|
|
|
|
/** Information about a closure element. */
|
|
ClosureInfoPB closure_info = 107;
|
|
|
|
/** Information about a class type element. */
|
|
ClassTypeInfoPB class_type_info = 108;
|
|
}
|
|
}
|
|
|
|
/** General metadata about the dart2js invocation. */
|
|
message ProgramInfoPB {
|
|
/** serialized_id for the entrypoint FunctionInfo. */
|
|
string entrypoint_id = 1;
|
|
|
|
/** The overall size of the dart2js binary. */
|
|
int32 size = 2;
|
|
|
|
/** The version of dart2js used to compile the program. */
|
|
string dart2js_version = 3;
|
|
|
|
/** The time at which the compilation was performed in microseconds since epoch. */
|
|
int64 compilation_moment = 4;
|
|
|
|
/** The amount of time spent compiling the program in microseconds. */
|
|
int64 compilation_duration = 5;
|
|
|
|
/** The amount of time spent converting the info to protobuf in microseconds. */
|
|
int64 to_proto_duration = 6;
|
|
|
|
/** The amount of time spent writing out the serialized info in microseconds. */
|
|
int64 dump_info_duration = 7;
|
|
|
|
/** true if noSuchMethod is used. */
|
|
bool no_such_method_enabled = 8;
|
|
|
|
/** True if Object.runtimeType is used. */
|
|
bool is_runtime_type_used = 9;
|
|
|
|
/** True if dart:isolate library is used. */
|
|
bool is_isolate_used = 10;
|
|
|
|
/** True if Function.apply is used. */
|
|
bool is_function_apply_used = 11;
|
|
|
|
/** True if dart:mirrors features are used. */
|
|
bool is_mirrors_used = 12;
|
|
|
|
/** Whether the resulting dart2js binary is minified. */
|
|
bool minified = 13;
|
|
}
|
|
|
|
/** Info associated with a library element. */
|
|
message LibraryInfoPB {
|
|
/** The canonical uri that identifies the library. */
|
|
string uri = 1;
|
|
|
|
/** The serialized_ids of all FunctionInfo, FieldInfo, ClassInfo and TypedefInfo elements that are defined in the library. */
|
|
repeated string children_ids = 2;
|
|
}
|
|
|
|
/**
|
|
* Information about an output unit. Normally there is just one for the entire
|
|
* program unless the application uses deferred imports, in which case there
|
|
* would be an additional output unit per deferred chunk.
|
|
*/
|
|
message OutputUnitInfoPB {
|
|
/** The deferred imports that will load this output unit. */
|
|
repeated string imports = 1;
|
|
}
|
|
|
|
/** Information about a class element. */
|
|
message ClassInfoPB {
|
|
/** Whether the class is abstract. */
|
|
bool is_abstract = 1;
|
|
|
|
/** The serialized_ids of all FunctionInfo and FieldInfo elements defined in the class. */
|
|
repeated string children_ids = 2;
|
|
}
|
|
|
|
/** Information about a class type element. */
|
|
message ClassTypeInfoPB {}
|
|
|
|
/** Information about a constant value. */
|
|
message ConstantInfoPB {
|
|
/** The actual generated code for the constant. */
|
|
string code = 1;
|
|
}
|
|
|
|
/** Information about a field element. */
|
|
message FieldInfoPB {
|
|
/** The type of the field. */
|
|
string type = 1;
|
|
|
|
/** The type inferred by dart2js's whole program analysis. */
|
|
string inferred_type = 2;
|
|
|
|
/** The serialized_ids of all ClosureInfo elements nested in the field initializer. */
|
|
repeated string children_ids = 3;
|
|
|
|
/** The actual generated code for the field. */
|
|
string code = 4;
|
|
|
|
/** Whether the field is a const declaration. */
|
|
bool is_const = 5;
|
|
|
|
/** When isConst is true, the serialized_id of the ConstantInfo initializer expression. */
|
|
string initializer_id = 6;
|
|
}
|
|
|
|
/** Information about a typedef declaration. */
|
|
message TypedefInfoPB {
|
|
/** The declared type. */
|
|
string type = 1;
|
|
}
|
|
|
|
/** Available function modifiers. */
|
|
message FunctionModifiersPB {
|
|
/** Whether the function is declared as static. */
|
|
bool is_static = 1;
|
|
|
|
/** Whether the function is declared as const. */
|
|
bool is_const = 2;
|
|
|
|
/** Whether the function is a factory constructor. */
|
|
bool is_factory = 3;
|
|
|
|
/** Whether the function is declared as extern. */
|
|
bool is_external = 4;
|
|
}
|
|
|
|
/** Information about a function parameter. */
|
|
message ParameterInfoPB {
|
|
string name = 1;
|
|
string type = 2;
|
|
string declared_type = 3;
|
|
}
|
|
|
|
/** Information about a function or method. */
|
|
message FunctionInfoPB {
|
|
/** Modifiers applied to the function. */
|
|
FunctionModifiersPB function_modifiers = 1;
|
|
|
|
/** serialized_ids of any ClosureInfo elements declared in the function. */
|
|
repeated string children_ids = 2;
|
|
|
|
/** The declared return type. */
|
|
string return_type = 3;
|
|
|
|
/** The inferred return type. */
|
|
string inferred_return_type = 4;
|
|
|
|
/** Name and type information for each parameter. */
|
|
repeated ParameterInfoPB parameters = 5;
|
|
|
|
/** Side-effects of the function. */
|
|
string side_effects = 6;
|
|
|
|
/** How many function calls were inlined into the function. */
|
|
int32 inlined_count = 7;
|
|
|
|
/** The actual generated code. */
|
|
string code = 8;
|
|
|
|
/** Measurements collected for this function. */
|
|
reserved 9;
|
|
}
|
|
|
|
/** Information about a closure, also known as a local function. */
|
|
message ClosureInfoPB {
|
|
/** serialized_id of the FunctionInfo wrapped by this closure. */
|
|
string function_id = 1;
|
|
}
|
|
|
|
message DeferredImportPB {
|
|
/** The prefix assigned to the deferred import. */
|
|
string prefix = 1;
|
|
|
|
/** The list of filenames loaded by the import. */
|
|
repeated string files = 2;
|
|
}
|
|
|
|
/** Information about deferred imports within a dart library. */
|
|
message LibraryDeferredImportsPB {
|
|
/** The uri of the library which makes the deferred import. */
|
|
string library_uri = 1;
|
|
|
|
/** The name of the library, or "<unnamed>" if it is unnamed. */
|
|
string library_name = 2;
|
|
|
|
/** The individual deferred imports within the library. */
|
|
repeated DeferredImportPB imports = 3;
|
|
}
|