JS: fix inlining in incremental compilation
This commit is contained in:
@@ -210,16 +210,19 @@ message ArrayAccess {
|
||||
message NameReference {
|
||||
required int32 name_id = 1;
|
||||
optional Expression qualifier = 2;
|
||||
optional InlineStrategy inline_strategy = 3 [default=NOT_INLINE];
|
||||
}
|
||||
|
||||
message PropertyReference {
|
||||
required int32 string_id = 1;
|
||||
optional Expression qualifier = 2;
|
||||
optional InlineStrategy inline_strategy = 3 [default=NOT_INLINE];
|
||||
}
|
||||
|
||||
message Invocation {
|
||||
required Expression qualifier = 1;
|
||||
repeated Expression argument = 2;
|
||||
optional InlineStrategy inline_strategy = 3 [default=NOT_INLINE];
|
||||
}
|
||||
|
||||
message Instantiation {
|
||||
@@ -368,6 +371,12 @@ message Catch {
|
||||
message Empty {
|
||||
}
|
||||
|
||||
enum InlineStrategy {
|
||||
AS_FUNCTION = 0;
|
||||
IN_PLACE = 1;
|
||||
NOT_INLINE = 2;
|
||||
}
|
||||
|
||||
|
||||
// Fragment
|
||||
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ object KotlinJavascriptSerializationUtil {
|
||||
module: ModuleDescriptor,
|
||||
configuration: DeserializationConfiguration
|
||||
): PackageFragmentProvider {
|
||||
val scopeProto = metadata.map { JsProtoBuf.Library.Part.parseFrom(it) }
|
||||
val scopeProto = metadata.map { JsProtoBuf.Library.Part.parseFrom(it, JsSerializerProtocol.extensionRegistry) }
|
||||
return createKotlinJavascriptPackageFragmentProvider(storageManager, module, scopeProto, configuration)
|
||||
}
|
||||
|
||||
|
||||
+23
-3
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.serialization.js.ast
|
||||
import org.jetbrains.kotlin.js.backend.ast.*
|
||||
import org.jetbrains.kotlin.js.backend.ast.metadata.*
|
||||
import org.jetbrains.kotlin.protobuf.CodedInputStream
|
||||
import org.jetbrains.kotlin.resolve.inline.InlineStrategy as KotlinInlineStrategy
|
||||
import org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.*
|
||||
import org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.ExpressionCase
|
||||
import org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Statement.StatementCase
|
||||
@@ -341,13 +342,22 @@ class JsAstDeserializer(private val program: JsProgram) {
|
||||
|
||||
ExpressionCase.NAME_REFERENCE -> {
|
||||
val nameRefProto = proto.nameReference
|
||||
JsNameRef(deserializeName(nameRefProto.nameId), if (nameRefProto.hasQualifier()) deserialize(nameRefProto.qualifier) else null)
|
||||
val qualifier = if (nameRefProto.hasQualifier()) deserialize(nameRefProto.qualifier) else null
|
||||
JsNameRef(deserializeName(nameRefProto.nameId), qualifier).apply {
|
||||
if (nameRefProto.hasInlineStrategy()) {
|
||||
inlineStrategy = map(nameRefProto.inlineStrategy)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ExpressionCase.PROPERTY_REFERENCE -> {
|
||||
val propertyRefProto = proto.propertyReference
|
||||
val qualifier = if (propertyRefProto.hasQualifier()) deserialize(propertyRefProto.qualifier) else null
|
||||
JsNameRef(deserializeString(propertyRefProto.stringId), qualifier)
|
||||
JsNameRef(deserializeString(propertyRefProto.stringId), qualifier).apply {
|
||||
if (propertyRefProto.hasInlineStrategy()) {
|
||||
inlineStrategy = map(propertyRefProto.inlineStrategy)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ExpressionCase.INVOCATION -> {
|
||||
@@ -355,7 +365,11 @@ class JsAstDeserializer(private val program: JsProgram) {
|
||||
JsInvocation(
|
||||
deserialize(invocationProto.qualifier),
|
||||
invocationProto.argumentList.map { deserialize(it) }
|
||||
)
|
||||
).apply {
|
||||
if (invocationProto.hasInlineStrategy()) {
|
||||
inlineStrategy = map(invocationProto.inlineStrategy)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ExpressionCase.INSTANTIATION -> {
|
||||
@@ -466,6 +480,12 @@ class JsAstDeserializer(private val program: JsProgram) {
|
||||
SideEffects.PURE -> SideEffectKind.PURE
|
||||
}
|
||||
|
||||
private fun map(inlineStrategy: InlineStrategy) = when(inlineStrategy) {
|
||||
InlineStrategy.AS_FUNCTION -> KotlinInlineStrategy.AS_FUNCTION
|
||||
InlineStrategy.IN_PLACE -> KotlinInlineStrategy.IN_PLACE
|
||||
InlineStrategy.NOT_INLINE -> KotlinInlineStrategy.NOT_INLINE
|
||||
}
|
||||
|
||||
private fun <T : JsNode> withLocation(fileId: Int?, location: Location?, action: () -> T): T {
|
||||
val lastLocation = locationStack.peek()
|
||||
val deserializedLocation = if (fileId != null || location != null) {
|
||||
|
||||
@@ -73,6 +73,71 @@ public final class JsAstProtoBuf {
|
||||
// @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.js.ast.SideEffects)
|
||||
}
|
||||
|
||||
/**
|
||||
* Protobuf enum {@code org.jetbrains.kotlin.serialization.js.ast.InlineStrategy}
|
||||
*/
|
||||
public enum InlineStrategy
|
||||
implements org.jetbrains.kotlin.protobuf.Internal.EnumLite {
|
||||
/**
|
||||
* <code>AS_FUNCTION = 0;</code>
|
||||
*/
|
||||
AS_FUNCTION(0, 0),
|
||||
/**
|
||||
* <code>IN_PLACE = 1;</code>
|
||||
*/
|
||||
IN_PLACE(1, 1),
|
||||
/**
|
||||
* <code>NOT_INLINE = 2;</code>
|
||||
*/
|
||||
NOT_INLINE(2, 2),
|
||||
;
|
||||
|
||||
/**
|
||||
* <code>AS_FUNCTION = 0;</code>
|
||||
*/
|
||||
public static final int AS_FUNCTION_VALUE = 0;
|
||||
/**
|
||||
* <code>IN_PLACE = 1;</code>
|
||||
*/
|
||||
public static final int IN_PLACE_VALUE = 1;
|
||||
/**
|
||||
* <code>NOT_INLINE = 2;</code>
|
||||
*/
|
||||
public static final int NOT_INLINE_VALUE = 2;
|
||||
|
||||
|
||||
public final int getNumber() { return value; }
|
||||
|
||||
public static InlineStrategy valueOf(int value) {
|
||||
switch (value) {
|
||||
case 0: return AS_FUNCTION;
|
||||
case 1: return IN_PLACE;
|
||||
case 2: return NOT_INLINE;
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<InlineStrategy>
|
||||
internalGetValueMap() {
|
||||
return internalValueMap;
|
||||
}
|
||||
private static org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<InlineStrategy>
|
||||
internalValueMap =
|
||||
new org.jetbrains.kotlin.protobuf.Internal.EnumLiteMap<InlineStrategy>() {
|
||||
public InlineStrategy findValueByNumber(int number) {
|
||||
return InlineStrategy.valueOf(number);
|
||||
}
|
||||
};
|
||||
|
||||
private final int value;
|
||||
|
||||
private InlineStrategy(int index, int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(enum_scope:org.jetbrains.kotlin.serialization.js.ast.InlineStrategy)
|
||||
}
|
||||
|
||||
public interface LocationOrBuilder extends
|
||||
// @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.ast.Location)
|
||||
org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
|
||||
@@ -13314,6 +13379,15 @@ public final class JsAstProtoBuf {
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
|
||||
*/
|
||||
org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier();
|
||||
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
boolean hasInlineStrategy();
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy();
|
||||
}
|
||||
/**
|
||||
* Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.NameReference}
|
||||
@@ -13383,6 +13457,18 @@ public final class JsAstProtoBuf {
|
||||
bitField0_ |= 0x00000002;
|
||||
break;
|
||||
}
|
||||
case 24: {
|
||||
int rawValue = input.readEnum();
|
||||
org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.valueOf(rawValue);
|
||||
if (value == null) {
|
||||
unknownFieldsCodedOutput.writeRawVarint32(tag);
|
||||
unknownFieldsCodedOutput.writeRawVarint32(rawValue);
|
||||
} else {
|
||||
bitField0_ |= 0x00000004;
|
||||
inlineStrategy_ = value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
|
||||
@@ -13447,9 +13533,25 @@ public final class JsAstProtoBuf {
|
||||
return qualifier_;
|
||||
}
|
||||
|
||||
public static final int INLINE_STRATEGY_FIELD_NUMBER = 3;
|
||||
private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_;
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public boolean hasInlineStrategy() {
|
||||
return ((bitField0_ & 0x00000004) == 0x00000004);
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
|
||||
return inlineStrategy_;
|
||||
}
|
||||
|
||||
private void initFields() {
|
||||
nameId_ = 0;
|
||||
qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
|
||||
inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
}
|
||||
private byte memoizedIsInitialized = -1;
|
||||
public final boolean isInitialized() {
|
||||
@@ -13480,6 +13582,9 @@ public final class JsAstProtoBuf {
|
||||
if (((bitField0_ & 0x00000002) == 0x00000002)) {
|
||||
output.writeMessage(2, qualifier_);
|
||||
}
|
||||
if (((bitField0_ & 0x00000004) == 0x00000004)) {
|
||||
output.writeEnum(3, inlineStrategy_.getNumber());
|
||||
}
|
||||
output.writeRawBytes(unknownFields);
|
||||
}
|
||||
|
||||
@@ -13497,6 +13602,10 @@ public final class JsAstProtoBuf {
|
||||
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
|
||||
.computeMessageSize(2, qualifier_);
|
||||
}
|
||||
if (((bitField0_ & 0x00000004) == 0x00000004)) {
|
||||
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
|
||||
.computeEnumSize(3, inlineStrategy_.getNumber());
|
||||
}
|
||||
size += unknownFields.size();
|
||||
memoizedSerializedSize = size;
|
||||
return size;
|
||||
@@ -13595,6 +13704,8 @@ public final class JsAstProtoBuf {
|
||||
bitField0_ = (bitField0_ & ~0x00000001);
|
||||
qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
|
||||
bitField0_ = (bitField0_ & ~0x00000002);
|
||||
inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
bitField0_ = (bitField0_ & ~0x00000004);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -13626,6 +13737,10 @@ public final class JsAstProtoBuf {
|
||||
to_bitField0_ |= 0x00000002;
|
||||
}
|
||||
result.qualifier_ = qualifier_;
|
||||
if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
|
||||
to_bitField0_ |= 0x00000004;
|
||||
}
|
||||
result.inlineStrategy_ = inlineStrategy_;
|
||||
result.bitField0_ = to_bitField0_;
|
||||
return result;
|
||||
}
|
||||
@@ -13638,6 +13753,9 @@ public final class JsAstProtoBuf {
|
||||
if (other.hasQualifier()) {
|
||||
mergeQualifier(other.getQualifier());
|
||||
}
|
||||
if (other.hasInlineStrategy()) {
|
||||
setInlineStrategy(other.getInlineStrategy());
|
||||
}
|
||||
setUnknownFields(
|
||||
getUnknownFields().concat(other.unknownFields));
|
||||
return this;
|
||||
@@ -13768,6 +13886,41 @@ public final class JsAstProtoBuf {
|
||||
return this;
|
||||
}
|
||||
|
||||
private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public boolean hasInlineStrategy() {
|
||||
return ((bitField0_ & 0x00000004) == 0x00000004);
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
|
||||
return inlineStrategy_;
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public Builder setInlineStrategy(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value) {
|
||||
if (value == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
bitField0_ |= 0x00000004;
|
||||
inlineStrategy_ = value;
|
||||
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public Builder clearInlineStrategy() {
|
||||
bitField0_ = (bitField0_ & ~0x00000004);
|
||||
inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.NameReference)
|
||||
}
|
||||
|
||||
@@ -13800,6 +13953,15 @@ public final class JsAstProtoBuf {
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.Expression qualifier = 2;</code>
|
||||
*/
|
||||
org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression getQualifier();
|
||||
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
boolean hasInlineStrategy();
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy();
|
||||
}
|
||||
/**
|
||||
* Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.PropertyReference}
|
||||
@@ -13869,6 +14031,18 @@ public final class JsAstProtoBuf {
|
||||
bitField0_ |= 0x00000002;
|
||||
break;
|
||||
}
|
||||
case 24: {
|
||||
int rawValue = input.readEnum();
|
||||
org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.valueOf(rawValue);
|
||||
if (value == null) {
|
||||
unknownFieldsCodedOutput.writeRawVarint32(tag);
|
||||
unknownFieldsCodedOutput.writeRawVarint32(rawValue);
|
||||
} else {
|
||||
bitField0_ |= 0x00000004;
|
||||
inlineStrategy_ = value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
|
||||
@@ -13933,9 +14107,25 @@ public final class JsAstProtoBuf {
|
||||
return qualifier_;
|
||||
}
|
||||
|
||||
public static final int INLINE_STRATEGY_FIELD_NUMBER = 3;
|
||||
private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_;
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public boolean hasInlineStrategy() {
|
||||
return ((bitField0_ & 0x00000004) == 0x00000004);
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
|
||||
return inlineStrategy_;
|
||||
}
|
||||
|
||||
private void initFields() {
|
||||
stringId_ = 0;
|
||||
qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
|
||||
inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
}
|
||||
private byte memoizedIsInitialized = -1;
|
||||
public final boolean isInitialized() {
|
||||
@@ -13966,6 +14156,9 @@ public final class JsAstProtoBuf {
|
||||
if (((bitField0_ & 0x00000002) == 0x00000002)) {
|
||||
output.writeMessage(2, qualifier_);
|
||||
}
|
||||
if (((bitField0_ & 0x00000004) == 0x00000004)) {
|
||||
output.writeEnum(3, inlineStrategy_.getNumber());
|
||||
}
|
||||
output.writeRawBytes(unknownFields);
|
||||
}
|
||||
|
||||
@@ -13983,6 +14176,10 @@ public final class JsAstProtoBuf {
|
||||
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
|
||||
.computeMessageSize(2, qualifier_);
|
||||
}
|
||||
if (((bitField0_ & 0x00000004) == 0x00000004)) {
|
||||
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
|
||||
.computeEnumSize(3, inlineStrategy_.getNumber());
|
||||
}
|
||||
size += unknownFields.size();
|
||||
memoizedSerializedSize = size;
|
||||
return size;
|
||||
@@ -14081,6 +14278,8 @@ public final class JsAstProtoBuf {
|
||||
bitField0_ = (bitField0_ & ~0x00000001);
|
||||
qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
|
||||
bitField0_ = (bitField0_ & ~0x00000002);
|
||||
inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
bitField0_ = (bitField0_ & ~0x00000004);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -14112,6 +14311,10 @@ public final class JsAstProtoBuf {
|
||||
to_bitField0_ |= 0x00000002;
|
||||
}
|
||||
result.qualifier_ = qualifier_;
|
||||
if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
|
||||
to_bitField0_ |= 0x00000004;
|
||||
}
|
||||
result.inlineStrategy_ = inlineStrategy_;
|
||||
result.bitField0_ = to_bitField0_;
|
||||
return result;
|
||||
}
|
||||
@@ -14124,6 +14327,9 @@ public final class JsAstProtoBuf {
|
||||
if (other.hasQualifier()) {
|
||||
mergeQualifier(other.getQualifier());
|
||||
}
|
||||
if (other.hasInlineStrategy()) {
|
||||
setInlineStrategy(other.getInlineStrategy());
|
||||
}
|
||||
setUnknownFields(
|
||||
getUnknownFields().concat(other.unknownFields));
|
||||
return this;
|
||||
@@ -14254,6 +14460,41 @@ public final class JsAstProtoBuf {
|
||||
return this;
|
||||
}
|
||||
|
||||
private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public boolean hasInlineStrategy() {
|
||||
return ((bitField0_ & 0x00000004) == 0x00000004);
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
|
||||
return inlineStrategy_;
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public Builder setInlineStrategy(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value) {
|
||||
if (value == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
bitField0_ |= 0x00000004;
|
||||
inlineStrategy_ = value;
|
||||
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public Builder clearInlineStrategy() {
|
||||
bitField0_ = (bitField0_ & ~0x00000004);
|
||||
inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.PropertyReference)
|
||||
}
|
||||
|
||||
@@ -14291,6 +14532,15 @@ public final class JsAstProtoBuf {
|
||||
* <code>repeated .org.jetbrains.kotlin.serialization.js.ast.Expression argument = 2;</code>
|
||||
*/
|
||||
int getArgumentCount();
|
||||
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
boolean hasInlineStrategy();
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy();
|
||||
}
|
||||
/**
|
||||
* Protobuf type {@code org.jetbrains.kotlin.serialization.js.ast.Invocation}
|
||||
@@ -14363,6 +14613,18 @@ public final class JsAstProtoBuf {
|
||||
argument_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.PARSER, extensionRegistry));
|
||||
break;
|
||||
}
|
||||
case 24: {
|
||||
int rawValue = input.readEnum();
|
||||
org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.valueOf(rawValue);
|
||||
if (value == null) {
|
||||
unknownFieldsCodedOutput.writeRawVarint32(tag);
|
||||
unknownFieldsCodedOutput.writeRawVarint32(rawValue);
|
||||
} else {
|
||||
bitField0_ |= 0x00000002;
|
||||
inlineStrategy_ = value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
|
||||
@@ -14450,9 +14712,25 @@ public final class JsAstProtoBuf {
|
||||
return argument_.get(index);
|
||||
}
|
||||
|
||||
public static final int INLINE_STRATEGY_FIELD_NUMBER = 3;
|
||||
private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_;
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public boolean hasInlineStrategy() {
|
||||
return ((bitField0_ & 0x00000002) == 0x00000002);
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
|
||||
return inlineStrategy_;
|
||||
}
|
||||
|
||||
private void initFields() {
|
||||
qualifier_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Expression.getDefaultInstance();
|
||||
argument_ = java.util.Collections.emptyList();
|
||||
inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
}
|
||||
private byte memoizedIsInitialized = -1;
|
||||
public final boolean isInitialized() {
|
||||
@@ -14487,6 +14765,9 @@ public final class JsAstProtoBuf {
|
||||
for (int i = 0; i < argument_.size(); i++) {
|
||||
output.writeMessage(2, argument_.get(i));
|
||||
}
|
||||
if (((bitField0_ & 0x00000002) == 0x00000002)) {
|
||||
output.writeEnum(3, inlineStrategy_.getNumber());
|
||||
}
|
||||
output.writeRawBytes(unknownFields);
|
||||
}
|
||||
|
||||
@@ -14504,6 +14785,10 @@ public final class JsAstProtoBuf {
|
||||
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
|
||||
.computeMessageSize(2, argument_.get(i));
|
||||
}
|
||||
if (((bitField0_ & 0x00000002) == 0x00000002)) {
|
||||
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
|
||||
.computeEnumSize(3, inlineStrategy_.getNumber());
|
||||
}
|
||||
size += unknownFields.size();
|
||||
memoizedSerializedSize = size;
|
||||
return size;
|
||||
@@ -14602,6 +14887,8 @@ public final class JsAstProtoBuf {
|
||||
bitField0_ = (bitField0_ & ~0x00000001);
|
||||
argument_ = java.util.Collections.emptyList();
|
||||
bitField0_ = (bitField0_ & ~0x00000002);
|
||||
inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
bitField0_ = (bitField0_ & ~0x00000004);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -14634,6 +14921,10 @@ public final class JsAstProtoBuf {
|
||||
bitField0_ = (bitField0_ & ~0x00000002);
|
||||
}
|
||||
result.argument_ = argument_;
|
||||
if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
|
||||
to_bitField0_ |= 0x00000002;
|
||||
}
|
||||
result.inlineStrategy_ = inlineStrategy_;
|
||||
result.bitField0_ = to_bitField0_;
|
||||
return result;
|
||||
}
|
||||
@@ -14653,6 +14944,9 @@ public final class JsAstProtoBuf {
|
||||
}
|
||||
|
||||
}
|
||||
if (other.hasInlineStrategy()) {
|
||||
setInlineStrategy(other.getInlineStrategy());
|
||||
}
|
||||
setUnknownFields(
|
||||
getUnknownFields().concat(other.unknownFields));
|
||||
return this;
|
||||
@@ -14880,6 +15174,41 @@ public final class JsAstProtoBuf {
|
||||
return this;
|
||||
}
|
||||
|
||||
private org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public boolean hasInlineStrategy() {
|
||||
return ((bitField0_ & 0x00000004) == 0x00000004);
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy getInlineStrategy() {
|
||||
return inlineStrategy_;
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public Builder setInlineStrategy(org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy value) {
|
||||
if (value == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
bitField0_ |= 0x00000004;
|
||||
inlineStrategy_ = value;
|
||||
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>optional .org.jetbrains.kotlin.serialization.js.ast.InlineStrategy inline_strategy = 3 [default = NOT_INLINE];</code>
|
||||
*/
|
||||
public Builder clearInlineStrategy() {
|
||||
bitField0_ = (bitField0_ & ~0x00000004);
|
||||
inlineStrategy_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.InlineStrategy.NOT_INLINE;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.ast.Invocation)
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.BinaryOperation.T
|
||||
import org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.UnaryOperation.Type.*
|
||||
import java.io.OutputStream
|
||||
import java.util.*
|
||||
import org.jetbrains.kotlin.resolve.inline.InlineStrategy as KotlinInlineStrategy
|
||||
|
||||
class JsAstSerializer {
|
||||
private val nameTableBuilder = NameTable.newBuilder()
|
||||
@@ -385,10 +386,13 @@ class JsAstSerializer {
|
||||
val name = nameRef.name
|
||||
val qualifier = nameRef.qualifier
|
||||
if (name != null) {
|
||||
if (qualifier != null) {
|
||||
if (qualifier != null || (nameRef.inlineStrategy?.isInline ?: false)) {
|
||||
val nameRefBuilder = NameReference.newBuilder()
|
||||
nameRefBuilder.nameId = serialize(name)
|
||||
nameRefBuilder.qualifier = serialize(qualifier)
|
||||
if (qualifier != null) {
|
||||
nameRefBuilder.qualifier = serialize(qualifier)
|
||||
}
|
||||
nameRef.inlineStrategy?.let { nameRefBuilder.inlineStrategy = map(it) }
|
||||
builder.nameReference = nameRefBuilder.build()
|
||||
}
|
||||
else {
|
||||
@@ -399,6 +403,7 @@ class JsAstSerializer {
|
||||
val propertyRefBuilder = PropertyReference.newBuilder()
|
||||
propertyRefBuilder.stringId = serialize(nameRef.ident)
|
||||
qualifier?.let { propertyRefBuilder.qualifier = serialize(it) }
|
||||
nameRef.inlineStrategy?.let { propertyRefBuilder.inlineStrategy = map(it) }
|
||||
builder.propertyReference = propertyRefBuilder.build()
|
||||
}
|
||||
}
|
||||
@@ -407,6 +412,11 @@ class JsAstSerializer {
|
||||
val invocationBuilder = Invocation.newBuilder()
|
||||
invocationBuilder.qualifier = serialize(invocation.qualifier)
|
||||
invocation.arguments.forEach { invocationBuilder.addArgument(serialize(it)) }
|
||||
invocation.inlineStrategy?.let { inlineStrategy ->
|
||||
if (inlineStrategy != KotlinInlineStrategy.NOT_INLINE) {
|
||||
invocationBuilder.inlineStrategy = map(inlineStrategy)
|
||||
}
|
||||
}
|
||||
builder.invocation = invocationBuilder.build()
|
||||
}
|
||||
|
||||
@@ -529,6 +539,12 @@ class JsAstSerializer {
|
||||
SideEffectKind.PURE -> SideEffects.PURE
|
||||
}
|
||||
|
||||
private fun map(inlineStrategy: KotlinInlineStrategy) = when (inlineStrategy) {
|
||||
KotlinInlineStrategy.AS_FUNCTION -> InlineStrategy.AS_FUNCTION
|
||||
KotlinInlineStrategy.IN_PLACE -> InlineStrategy.IN_PLACE
|
||||
KotlinInlineStrategy.NOT_INLINE -> InlineStrategy.NOT_INLINE
|
||||
}
|
||||
|
||||
private fun serialize(name: JsName) = nameMap.getOrPut(name) {
|
||||
val result = nameTableBuilder.entryCount
|
||||
val builder = Name.newBuilder()
|
||||
|
||||
Reference in New Issue
Block a user