blob: cafe595d34f3a63247f525596061ad7dca377584 [file] [log] [blame]
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.metadata.jvm;
import "core/metadata/src/ext_options.proto";
import "core/metadata/src/metadata.proto";
option java_outer_classname = "JvmProtoBuf";
option optimize_for = LITE_RUNTIME;
message StringTableTypes {
message Record {
// The number of times this record should be repeated; this is used to collapse identical subsequent records in the list
optional int32 range = 1 [default = 1];
// Index of the predefined constant. If this field is present, the associated string is ignored
optional int32 predefined_index = 2;
// A string which should be used. If this field is present, both the associated string and the predefined string index are ignored
optional string string = 6;
enum Operation {
NONE = 0;
// replaceAll('$', '.')
// java/util/Map$Entry -> java/util/Map.Entry;
INTERNAL_TO_CLASS_ID = 1;
// substring(1, length - 1) and then replaceAll('$', '.')
// Ljava/util/Map$Entry; -> java/util/Map.Entry
DESC_TO_CLASS_ID = 2;
}
// Perform a described operation on the string
optional Operation operation = 3 [default = NONE];
// If this field is present, the "substring" operation must be performed with the first element of this list as the start index,
// and the second element as the end index.
// If an operation is not NONE, it's applied _after_ this substring operation
repeated int32 substring_index = 4 [packed = true];
// If this field is present, the "replaceAll" operation must be performed with the first element of this list as the code point
// of the character to replace, and the second element as the code point of the replacement character
repeated int32 replace_char = 5 [packed = true];
}
repeated Record record = 1;
// Indices of strings which are names of local classes or anonymous objects
repeated int32 local_name = 5 [packed = true];
}
message JvmMethodSignature {
optional int32 name = 1 [(string_id_in_table) = true];
// JVM descriptor of the method, e.g. '(Ljava/util/List;)[Ljava/lang/Object;'
optional int32 desc = 2 [(string_id_in_table) = true];
}
message JvmFieldSignature {
optional int32 name = 1 [(string_id_in_table) = true];
// JVM descriptor of the field type, e.g. 'Ljava/lang/String;'
optional int32 desc = 2 [(string_id_in_table) = true];
}
message JvmPropertySignature {
optional JvmFieldSignature field = 1;
// Annotations on properties are written on a synthetic method with this signature
optional JvmMethodSignature synthetic_method = 2;
optional JvmMethodSignature getter = 3;
optional JvmMethodSignature setter = 4;
}
extend Constructor {
optional JvmMethodSignature constructor_signature = 100;
}
extend Function {
optional JvmMethodSignature method_signature = 100;
// For lambdas from bodies of inline functions copied to the use site, the JVM internal name of the original
// lambda class this class is copied from
optional int32 lambda_class_origin_name = 101 [(string_id_in_table) = true];
}
extend Property {
optional JvmPropertySignature property_signature = 100;
/**
isMovedFromInterfaceCompanion true if this property is declared in an interface companion, and the field is stored in the interface
*/
optional int32 flags = 101 [default = 0];
}
extend Type {
repeated Annotation type_annotation = 100;
optional bool is_raw = 101;
}
extend TypeParameter {
repeated Annotation type_parameter_annotation = 100;
}
extend Class {
// If absent, assumed to be JvmAbi.DEFAULT_MODULE_NAME
optional int32 class_module_name = 101 [(string_id_in_table) = true];
repeated Property class_local_variable = 102;
// For anonymous objects from bodies of inline functions copied to the use site, the JVM internal name of the original
// anonymous object this class is copied from
optional int32 anonymous_object_origin_name = 103 [(string_id_in_table) = true];
}
extend Package {
optional int32 package_module_name = 101 [(string_id_in_table) = true];
repeated Property package_local_variable = 102;
}