blob: e91792e466074b33b23855b20f25a99d6b945563 [file] [log] [blame]
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;
}