diff --git a/build-common/test/org/jetbrains/kotlin/serialization/js/ast/DebugJsAstProtoBuf.java b/build-common/test/org/jetbrains/kotlin/serialization/js/ast/DebugJsAstProtoBuf.java index 90073f8b01b..48e2dd0726a 100644 --- a/build-common/test/org/jetbrains/kotlin/serialization/js/ast/DebugJsAstProtoBuf.java +++ b/build-common/test/org/jetbrains/kotlin/serialization/js/ast/DebugJsAstProtoBuf.java @@ -725,6 +725,15 @@ public final class DebugJsAstProtoBuf { */ org.jetbrains.kotlin.serialization.js.ast.DebugJsAstProtoBuf.SideEffects getSideEffects(); + /** + * optional int32 local_alias = 5; + */ + boolean hasLocalAlias(); + /** + * optional int32 local_alias = 5; + */ + int getLocalAlias(); + /** * optional int32 simple_name_reference = 22; */ @@ -1068,6 +1077,11 @@ public final class DebugJsAstProtoBuf { } break; } + case 40: { + bitField0_ |= 0x00000010; + localAlias_ = input.readInt32(); + break; + } case 176: { expressionCase_ = 22; expression_ = input.readInt32(); @@ -1484,6 +1498,21 @@ public final class DebugJsAstProtoBuf { return sideEffects_; } + public static final int LOCAL_ALIAS_FIELD_NUMBER = 5; + private int localAlias_; + /** + * optional int32 local_alias = 5; + */ + public boolean hasLocalAlias() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional int32 local_alias = 5; + */ + public int getLocalAlias() { + return localAlias_; + } + public static final int SIMPLE_NAME_REFERENCE_FIELD_NUMBER = 22; /** * optional int32 simple_name_reference = 22; @@ -1999,6 +2028,7 @@ public final class DebugJsAstProtoBuf { location_ = org.jetbrains.kotlin.serialization.js.ast.DebugJsAstProtoBuf.Location.getDefaultInstance(); synthetic_ = false; sideEffects_ = org.jetbrains.kotlin.serialization.js.ast.DebugJsAstProtoBuf.SideEffects.AFFECTS_STATE; + localAlias_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -2109,6 +2139,9 @@ public final class DebugJsAstProtoBuf { if (((bitField0_ & 0x00000008) == 0x00000008)) { output.writeEnum(4, sideEffects_.getNumber()); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeInt32(5, localAlias_); + } if (expressionCase_ == 22) { output.writeInt32( 22, (int)((java.lang.Integer) expression_)); @@ -2201,6 +2234,10 @@ public final class DebugJsAstProtoBuf { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeEnumSize(4, sideEffects_.getNumber()); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(5, localAlias_); + } if (expressionCase_ == 22) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeInt32Size( @@ -2419,6 +2456,8 @@ public final class DebugJsAstProtoBuf { bitField0_ = (bitField0_ & ~0x00000004); sideEffects_ = org.jetbrains.kotlin.serialization.js.ast.DebugJsAstProtoBuf.SideEffects.AFFECTS_STATE; bitField0_ = (bitField0_ & ~0x00000008); + localAlias_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); expressionCase_ = 0; expression_ = null; return this; @@ -2469,6 +2508,10 @@ public final class DebugJsAstProtoBuf { to_bitField0_ |= 0x00000008; } result.sideEffects_ = sideEffects_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.localAlias_ = localAlias_; if (expressionCase_ == 22) { result.expression_ = expression_; } @@ -2629,6 +2672,9 @@ public final class DebugJsAstProtoBuf { if (other.hasSideEffects()) { setSideEffects(other.getSideEffects()); } + if (other.hasLocalAlias()) { + setLocalAlias(other.getLocalAlias()); + } switch (other.getExpressionCase()) { case SIMPLE_NAME_REFERENCE: { setSimpleNameReference(other.getSimpleNameReference()); @@ -3059,6 +3105,38 @@ public final class DebugJsAstProtoBuf { return this; } + private int localAlias_ ; + /** + * optional int32 local_alias = 5; + */ + public boolean hasLocalAlias() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional int32 local_alias = 5; + */ + public int getLocalAlias() { + return localAlias_; + } + /** + * optional int32 local_alias = 5; + */ + public Builder setLocalAlias(int value) { + bitField0_ |= 0x00000010; + localAlias_ = value; + onChanged(); + return this; + } + /** + * optional int32 local_alias = 5; + */ + public Builder clearLocalAlias() { + bitField0_ = (bitField0_ & ~0x00000010); + localAlias_ = 0; + onChanged(); + return this; + } + /** * optional int32 simple_name_reference = 22; */ @@ -48737,285 +48815,286 @@ public final class DebugJsAstProtoBuf { "\n\'js/js.serializer/src/js-ast.debug.prot" + "o\022)org.jetbrains.kotlin.serialization.js" + ".ast\"0\n\010Location\022\021\n\tstartLine\030\001 \002(\005\022\021\n\ts" + - "tartChar\030\002 \002(\005\"\261\r\n\nExpression\022\016\n\006fileId\030" + + "tartChar\030\002 \002(\005\"\306\r\n\nExpression\022\016\n\006fileId\030" + "\001 \001(\005\022E\n\010location\030\002 \001(\01323.org.jetbrains." + "kotlin.serialization.js.ast.Location\022\030\n\t" + "synthetic\030\003 \001(\010:\005false\022[\n\014side_effects\030\004" + " \001(\01626.org.jetbrains.kotlin.serializatio" + - "n.js.ast.SideEffects:\rAFFECTS_STATE\022\037\n\025s" + - "imple_name_reference\030\026 \001(\005H\000\022N\n\014this_lit", - "eral\030\027 \001(\01326.org.jetbrains.kotlin.serial" + - "ization.js.ast.ThisLiteralH\000\022N\n\014null_lit" + - "eral\030\030 \001(\01326.org.jetbrains.kotlin.serial" + - "ization.js.ast.NullLiteralH\000\022N\n\014true_lit" + - "eral\030\031 \001(\01326.org.jetbrains.kotlin.serial" + - "ization.js.ast.TrueLiteralH\000\022P\n\rfalse_li" + - "teral\030\032 \001(\01327.org.jetbrains.kotlin.seria" + - "lization.js.ast.FalseLiteralH\000\022\030\n\016string" + - "_literal\030\033 \001(\005H\000\022S\n\017reg_exp_literal\030\034 \001(" + - "\01328.org.jetbrains.kotlin.serialization.j", - "s.ast.RegExpLiteralH\000\022\025\n\013int_literal\030\035 \001" + - "(\005H\000\022\030\n\016double_literal\030\036 \001(\001H\000\022P\n\rarray_" + - "literal\030\037 \001(\01327.org.jetbrains.kotlin.ser" + - "ialization.js.ast.ArrayLiteralH\000\022R\n\016obje" + - "ct_literal\030 \001(\01328.org.jetbrains.kotlin." + - "serialization.js.ast.ObjectLiteralH\000\022G\n\010" + - "function\030! \001(\01323.org.jetbrains.kotlin.se" + - "rialization.js.ast.FunctionH\000\022L\n\013doc_com" + - "ment\030\" \001(\01325.org.jetbrains.kotlin.serial" + - "ization.js.ast.DocCommentH\000\022L\n\006binary\030# ", - "\001(\0132:.org.jetbrains.kotlin.serialization" + - ".js.ast.BinaryOperationH\000\022J\n\005unary\030$ \001(\013" + - "29.org.jetbrains.kotlin.serialization.js" + - ".ast.UnaryOperationH\000\022M\n\013conditional\030% \001" + - "(\01326.org.jetbrains.kotlin.serialization." + - "js.ast.ConditionalH\000\022N\n\014array_access\030& \001" + - "(\01326.org.jetbrains.kotlin.serialization." + - "js.ast.ArrayAccessH\000\022R\n\016name_reference\030\'" + - " \001(\01328.org.jetbrains.kotlin.serializatio" + - "n.js.ast.NameReferenceH\000\022Z\n\022property_ref", - "erence\030( \001(\0132<.org.jetbrains.kotlin.seri" + - "alization.js.ast.PropertyReferenceH\000\022K\n\n" + - "invocation\030) \001(\01325.org.jetbrains.kotlin." + - "serialization.js.ast.InvocationH\000\022Q\n\rins" + - "tantiation\030* \001(\01328.org.jetbrains.kotlin." + - "serialization.js.ast.InstantiationH\000B\014\n\n" + - "expression\"\r\n\013ThisLiteral\"\r\n\013NullLiteral" + - "\"\r\n\013TrueLiteral\"\016\n\014FalseLiteral\"C\n\rRegEx" + - "pLiteral\022\031\n\021pattern_string_id\030\001 \002(\005\022\027\n\017f" + - "lags_string_id\030\002 \001(\005\"V\n\014ArrayLiteral\022F\n\007", - "element\030\001 \003(\01325.org.jetbrains.kotlin.ser" + - "ialization.js.ast.Expression\"v\n\rObjectLi" + - "teral\022L\n\005entry\030\001 \003(\0132=.org.jetbrains.kot" + - "lin.serialization.js.ast.ObjectLiteralEn" + - "try\022\027\n\tmultiline\030\002 \001(\010:\004true\"\236\001\n\022ObjectL" + - "iteralEntry\022B\n\003key\030\001 \002(\01325.org.jetbrains" + - ".kotlin.serialization.js.ast.Expression\022" + - "D\n\005value\030\002 \002(\01325.org.jetbrains.kotlin.se" + - "rialization.js.ast.Expression\"\276\001\n\010Functi" + - "on\022G\n\tparameter\030\001 \003(\01324.org.jetbrains.ko", - "tlin.serialization.js.ast.Parameter\022\017\n\007n" + - "ame_id\030\002 \001(\005\022B\n\004body\030\003 \002(\01324.org.jetbrai" + - "ns.kotlin.serialization.js.ast.Statement" + - "\022\024\n\005local\030\004 \001(\010:\005false\">\n\tParameter\022\017\n\007n" + - "ame_id\030\001 \002(\005\022 \n\021has_default_value\030\002 \001(\010:" + - "\005false\"S\n\nDocComment\022E\n\003tag\030\001 \003(\01328.org." + - "jetbrains.kotlin.serialization.js.ast.Do" + - "cCommentTag\"\221\001\n\rDocCommentTag\022\017\n\007name_id" + - "\030\001 \002(\005\022\031\n\017value_string_id\030\002 \001(\005H\000\022K\n\nexp" + - "ression\030\003 \001(\01325.org.jetbrains.kotlin.ser", - "ialization.js.ast.ExpressionH\000B\007\n\005value\"" + - "\207\005\n\017BinaryOperation\022C\n\004left\030\001 \002(\01325.org." + - "jetbrains.kotlin.serialization.js.ast.Ex" + - "pression\022D\n\005right\030\002 \002(\01325.org.jetbrains." + - "kotlin.serialization.js.ast.Expression\022M" + - "\n\004type\030\003 \002(\0162?.org.jetbrains.kotlin.seri" + - "alization.js.ast.BinaryOperation.Type\"\231\003" + - "\n\004Type\022\007\n\003MUL\020\001\022\007\n\003DIV\020\002\022\007\n\003MOD\020\003\022\007\n\003ADD" + - "\020\004\022\007\n\003SUB\020\005\022\007\n\003SHL\020\006\022\007\n\003SHR\020\007\022\010\n\004SHRU\020\010\022" + - "\006\n\002LT\020\t\022\007\n\003LTE\020\n\022\006\n\002GT\020\013\022\007\n\003GTE\020\014\022\016\n\nINS", - "TANCEOF\020\r\022\006\n\002IN\020\016\022\006\n\002EQ\020\017\022\007\n\003NEQ\020\020\022\n\n\006RE" + - "F_EQ\020\021\022\013\n\007REF_NEQ\020\022\022\013\n\007BIT_AND\020\023\022\013\n\007BIT_" + - "XOR\020\024\022\n\n\006BIT_OR\020\025\022\007\n\003AND\020\026\022\006\n\002OR\020\027\022\007\n\003AS" + - "G\020\030\022\013\n\007ASG_ADD\020\031\022\013\n\007ASG_SUB\020\032\022\013\n\007ASG_MUL" + - "\020\033\022\013\n\007ASG_DIV\020\034\022\013\n\007ASG_MOD\020\035\022\013\n\007ASG_SHL\020" + - "\036\022\013\n\007ASG_SHR\020\037\022\014\n\010ASG_SHRU\020 \022\017\n\013ASG_BIT_" + - "AND\020!\022\016\n\nASG_BIT_OR\020\"\022\017\n\013ASG_BIT_XOR\020#\022\t" + - "\n\005COMMA\020$\"\233\002\n\016UnaryOperation\022F\n\007operand\030" + - "\001 \002(\01325.org.jetbrains.kotlin.serializati" + - "on.js.ast.Expression\022L\n\004type\030\002 \002(\0162>.org", - ".jetbrains.kotlin.serialization.js.ast.U" + - "naryOperation.Type\022\017\n\007postfix\030\003 \002(\010\"b\n\004T" + - "ype\022\013\n\007BIT_NOT\020\001\022\007\n\003DEC\020\002\022\n\n\006DELETE\020\003\022\007\n" + - "\003INC\020\004\022\007\n\003NEG\020\005\022\007\n\003POS\020\006\022\007\n\003NOT\020\007\022\n\n\006TYP" + - "EOF\020\010\022\010\n\004VOID\020\t\"\375\001\n\013Conditional\022N\n\017test_" + - "expression\030\001 \002(\01325.org.jetbrains.kotlin." + - "serialization.js.ast.Expression\022N\n\017then_" + - "expression\030\002 \002(\01325.org.jetbrains.kotlin." + - "serialization.js.ast.Expression\022N\n\017else_" + - "expression\030\003 \002(\01325.org.jetbrains.kotlin.", - "serialization.js.ast.Expression\"\231\001\n\013Arra" + - "yAccess\022D\n\005array\030\001 \002(\01325.org.jetbrains.k" + - "otlin.serialization.js.ast.Expression\022D\n" + - "\005index\030\002 \002(\01325.org.jetbrains.kotlin.seri" + - "alization.js.ast.Expression\"\312\001\n\rNameRefe" + - "rence\022\017\n\007name_id\030\001 \002(\005\022H\n\tqualifier\030\002 \001(" + - "\01325.org.jetbrains.kotlin.serialization.j" + - "s.ast.Expression\022^\n\017inline_strategy\030\003 \001(" + - "\01629.org.jetbrains.kotlin.serialization.j" + - "s.ast.InlineStrategy:\nNOT_INLINE\"\320\001\n\021Pro", - "pertyReference\022\021\n\tstring_id\030\001 \002(\005\022H\n\tqua" + - "lifier\030\002 \001(\01325.org.jetbrains.kotlin.seri" + - "alization.js.ast.Expression\022^\n\017inline_st" + - "rategy\030\003 \001(\01629.org.jetbrains.kotlin.seri" + - "alization.js.ast.InlineStrategy:\nNOT_INL" + - "INE\"\377\001\n\nInvocation\022H\n\tqualifier\030\001 \002(\01325." + + "n.js.ast.SideEffects:\rAFFECTS_STATE\022\023\n\013l" + + "ocal_alias\030\005 \001(\005\022\037\n\025simple_name_referenc", + "e\030\026 \001(\005H\000\022N\n\014this_literal\030\027 \001(\01326.org.je" + + "tbrains.kotlin.serialization.js.ast.This" + + "LiteralH\000\022N\n\014null_literal\030\030 \001(\01326.org.je" + + "tbrains.kotlin.serialization.js.ast.Null" + + "LiteralH\000\022N\n\014true_literal\030\031 \001(\01326.org.je" + + "tbrains.kotlin.serialization.js.ast.True" + + "LiteralH\000\022P\n\rfalse_literal\030\032 \001(\01327.org.j" + + "etbrains.kotlin.serialization.js.ast.Fal" + + "seLiteralH\000\022\030\n\016string_literal\030\033 \001(\005H\000\022S\n" + + "\017reg_exp_literal\030\034 \001(\01328.org.jetbrains.k", + "otlin.serialization.js.ast.RegExpLiteral" + + "H\000\022\025\n\013int_literal\030\035 \001(\005H\000\022\030\n\016double_lite" + + "ral\030\036 \001(\001H\000\022P\n\rarray_literal\030\037 \001(\01327.org" + + ".jetbrains.kotlin.serialization.js.ast.A" + + "rrayLiteralH\000\022R\n\016object_literal\030 \001(\01328." + "org.jetbrains.kotlin.serialization.js.as" + - "t.Expression\022G\n\010argument\030\002 \003(\01325.org.jet" + - "brains.kotlin.serialization.js.ast.Expre" + - "ssion\022^\n\017inline_strategy\030\003 \001(\01629.org.jet", - "brains.kotlin.serialization.js.ast.Inlin" + - "eStrategy:\nNOT_INLINE\"\242\001\n\rInstantiation\022" + + "t.ObjectLiteralH\000\022G\n\010function\030! \001(\01323.or" + + "g.jetbrains.kotlin.serialization.js.ast." + + "FunctionH\000\022L\n\013doc_comment\030\" \001(\01325.org.je" + + "tbrains.kotlin.serialization.js.ast.DocC", + "ommentH\000\022L\n\006binary\030# \001(\0132:.org.jetbrains" + + ".kotlin.serialization.js.ast.BinaryOpera" + + "tionH\000\022J\n\005unary\030$ \001(\01329.org.jetbrains.ko" + + "tlin.serialization.js.ast.UnaryOperation" + + "H\000\022M\n\013conditional\030% \001(\01326.org.jetbrains." + + "kotlin.serialization.js.ast.ConditionalH" + + "\000\022N\n\014array_access\030& \001(\01326.org.jetbrains." + + "kotlin.serialization.js.ast.ArrayAccessH" + + "\000\022R\n\016name_reference\030\' \001(\01328.org.jetbrain" + + "s.kotlin.serialization.js.ast.NameRefere", + "nceH\000\022Z\n\022property_reference\030( \001(\0132<.org." + + "jetbrains.kotlin.serialization.js.ast.Pr" + + "opertyReferenceH\000\022K\n\ninvocation\030) \001(\01325." + + "org.jetbrains.kotlin.serialization.js.as" + + "t.InvocationH\000\022Q\n\rinstantiation\030* \001(\01328." + + "org.jetbrains.kotlin.serialization.js.as" + + "t.InstantiationH\000B\014\n\nexpression\"\r\n\013ThisL" + + "iteral\"\r\n\013NullLiteral\"\r\n\013TrueLiteral\"\016\n\014" + + "FalseLiteral\"C\n\rRegExpLiteral\022\031\n\021pattern" + + "_string_id\030\001 \002(\005\022\027\n\017flags_string_id\030\002 \001(", + "\005\"V\n\014ArrayLiteral\022F\n\007element\030\001 \003(\01325.org" + + ".jetbrains.kotlin.serialization.js.ast.E" + + "xpression\"v\n\rObjectLiteral\022L\n\005entry\030\001 \003(" + + "\0132=.org.jetbrains.kotlin.serialization.j" + + "s.ast.ObjectLiteralEntry\022\027\n\tmultiline\030\002 " + + "\001(\010:\004true\"\236\001\n\022ObjectLiteralEntry\022B\n\003key\030" + + "\001 \002(\01325.org.jetbrains.kotlin.serializati" + + "on.js.ast.Expression\022D\n\005value\030\002 \002(\01325.or" + + "g.jetbrains.kotlin.serialization.js.ast." + + "Expression\"\276\001\n\010Function\022G\n\tparameter\030\001 \003", + "(\01324.org.jetbrains.kotlin.serialization." + + "js.ast.Parameter\022\017\n\007name_id\030\002 \001(\005\022B\n\004bod" + + "y\030\003 \002(\01324.org.jetbrains.kotlin.serializa" + + "tion.js.ast.Statement\022\024\n\005local\030\004 \001(\010:\005fa" + + "lse\">\n\tParameter\022\017\n\007name_id\030\001 \002(\005\022 \n\021has" + + "_default_value\030\002 \001(\010:\005false\"S\n\nDocCommen" + + "t\022E\n\003tag\030\001 \003(\01328.org.jetbrains.kotlin.se" + + "rialization.js.ast.DocCommentTag\"\221\001\n\rDoc" + + "CommentTag\022\017\n\007name_id\030\001 \002(\005\022\031\n\017value_str" + + "ing_id\030\002 \001(\005H\000\022K\n\nexpression\030\003 \001(\01325.org", + ".jetbrains.kotlin.serialization.js.ast.E" + + "xpressionH\000B\007\n\005value\"\207\005\n\017BinaryOperation" + + "\022C\n\004left\030\001 \002(\01325.org.jetbrains.kotlin.se" + + "rialization.js.ast.Expression\022D\n\005right\030\002" + + " \002(\01325.org.jetbrains.kotlin.serializatio" + + "n.js.ast.Expression\022M\n\004type\030\003 \002(\0162?.org." + + "jetbrains.kotlin.serialization.js.ast.Bi" + + "naryOperation.Type\"\231\003\n\004Type\022\007\n\003MUL\020\001\022\007\n\003" + + "DIV\020\002\022\007\n\003MOD\020\003\022\007\n\003ADD\020\004\022\007\n\003SUB\020\005\022\007\n\003SHL\020" + + "\006\022\007\n\003SHR\020\007\022\010\n\004SHRU\020\010\022\006\n\002LT\020\t\022\007\n\003LTE\020\n\022\006\n", + "\002GT\020\013\022\007\n\003GTE\020\014\022\016\n\nINSTANCEOF\020\r\022\006\n\002IN\020\016\022\006" + + "\n\002EQ\020\017\022\007\n\003NEQ\020\020\022\n\n\006REF_EQ\020\021\022\013\n\007REF_NEQ\020\022" + + "\022\013\n\007BIT_AND\020\023\022\013\n\007BIT_XOR\020\024\022\n\n\006BIT_OR\020\025\022\007" + + "\n\003AND\020\026\022\006\n\002OR\020\027\022\007\n\003ASG\020\030\022\013\n\007ASG_ADD\020\031\022\013\n" + + "\007ASG_SUB\020\032\022\013\n\007ASG_MUL\020\033\022\013\n\007ASG_DIV\020\034\022\013\n\007" + + "ASG_MOD\020\035\022\013\n\007ASG_SHL\020\036\022\013\n\007ASG_SHR\020\037\022\014\n\010A" + + "SG_SHRU\020 \022\017\n\013ASG_BIT_AND\020!\022\016\n\nASG_BIT_OR" + + "\020\"\022\017\n\013ASG_BIT_XOR\020#\022\t\n\005COMMA\020$\"\233\002\n\016Unary" + + "Operation\022F\n\007operand\030\001 \002(\01325.org.jetbrai" + + "ns.kotlin.serialization.js.ast.Expressio", + "n\022L\n\004type\030\002 \002(\0162>.org.jetbrains.kotlin.s" + + "erialization.js.ast.UnaryOperation.Type\022" + + "\017\n\007postfix\030\003 \002(\010\"b\n\004Type\022\013\n\007BIT_NOT\020\001\022\007\n" + + "\003DEC\020\002\022\n\n\006DELETE\020\003\022\007\n\003INC\020\004\022\007\n\003NEG\020\005\022\007\n\003" + + "POS\020\006\022\007\n\003NOT\020\007\022\n\n\006TYPEOF\020\010\022\010\n\004VOID\020\t\"\375\001\n" + + "\013Conditional\022N\n\017test_expression\030\001 \002(\01325." + + "org.jetbrains.kotlin.serialization.js.as" + + "t.Expression\022N\n\017then_expression\030\002 \002(\01325." + + "org.jetbrains.kotlin.serialization.js.as" + + "t.Expression\022N\n\017else_expression\030\003 \002(\01325.", + "org.jetbrains.kotlin.serialization.js.as" + + "t.Expression\"\231\001\n\013ArrayAccess\022D\n\005array\030\001 " + + "\002(\01325.org.jetbrains.kotlin.serialization" + + ".js.ast.Expression\022D\n\005index\030\002 \002(\01325.org." + + "jetbrains.kotlin.serialization.js.ast.Ex" + + "pression\"\312\001\n\rNameReference\022\017\n\007name_id\030\001 " + + "\002(\005\022H\n\tqualifier\030\002 \001(\01325.org.jetbrains.k" + + "otlin.serialization.js.ast.Expression\022^\n" + + "\017inline_strategy\030\003 \001(\01629.org.jetbrains.k" + + "otlin.serialization.js.ast.InlineStrateg", + "y:\nNOT_INLINE\"\320\001\n\021PropertyReference\022\021\n\ts" + + "tring_id\030\001 \002(\005\022H\n\tqualifier\030\002 \001(\01325.org." + + "jetbrains.kotlin.serialization.js.ast.Ex" + + "pression\022^\n\017inline_strategy\030\003 \001(\01629.org." + + "jetbrains.kotlin.serialization.js.ast.In" + + "lineStrategy:\nNOT_INLINE\"\377\001\n\nInvocation\022" + "H\n\tqualifier\030\001 \002(\01325.org.jetbrains.kotli" + "n.serialization.js.ast.Expression\022G\n\010arg" + "ument\030\002 \003(\01325.org.jetbrains.kotlin.seria" + - "lization.js.ast.Expression\"\323\013\n\tStatement" + - "\022\016\n\006fileId\030\001 \001(\005\022E\n\010location\030\002 \001(\01323.org" + - ".jetbrains.kotlin.serialization.js.ast.L" + - "ocation\022\030\n\tsynthetic\030\003 \001(\010:\005false\022M\n\020ret" + - "urn_statement\030\025 \001(\01321.org.jetbrains.kotl", - "in.serialization.js.ast.ReturnH\000\022K\n\017thro" + - "w_statement\030\026 \001(\01320.org.jetbrains.kotlin" + - ".serialization.js.ast.ThrowH\000\022K\n\017break_s" + - "tatement\030\027 \001(\01320.org.jetbrains.kotlin.se" + - "rialization.js.ast.BreakH\000\022Q\n\022continue_s" + - "tatement\030\030 \001(\01323.org.jetbrains.kotlin.se" + - "rialization.js.ast.ContinueH\000\022G\n\010debugge" + - "r\030\031 \001(\01323.org.jetbrains.kotlin.serializa" + - "tion.js.ast.DebuggerH\000\022T\n\nexpression\030\032 \001" + - "(\0132>.org.jetbrains.kotlin.serialization.", - "js.ast.ExpressionStatementH\000\022?\n\004vars\030\033 \001" + - "(\0132/.org.jetbrains.kotlin.serialization." + - "js.ast.VarsH\000\022A\n\005block\030\034 \001(\01320.org.jetbr" + - "ains.kotlin.serialization.js.ast.BlockH\000" + - "\022N\n\014global_block\030\035 \001(\01326.org.jetbrains.k" + - "otlin.serialization.js.ast.GlobalBlockH\000" + - "\022A\n\005label\030\036 \001(\01320.org.jetbrains.kotlin.s" + - "erialization.js.ast.LabelH\000\022E\n\014if_statem" + - "ent\030\037 \001(\0132-.org.jetbrains.kotlin.seriali" + - "zation.js.ast.IfH\000\022M\n\020switch_statement\030 ", - " \001(\01321.org.jetbrains.kotlin.serializatio" + - "n.js.ast.SwitchH\000\022K\n\017while_statement\030! \001" + - "(\01320.org.jetbrains.kotlin.serialization." + - "js.ast.WhileH\000\022P\n\022do_while_statement\030\" \001" + - "(\01322.org.jetbrains.kotlin.serialization." + - "js.ast.DoWhileH\000\022G\n\rfor_statement\030# \001(\0132" + - "..org.jetbrains.kotlin.serialization.js." + - "ast.ForH\000\022L\n\020for_in_statement\030$ \001(\01320.or" + - "g.jetbrains.kotlin.serialization.js.ast." + - "ForInH\000\022G\n\rtry_statement\030% \001(\0132..org.jet", - "brains.kotlin.serialization.js.ast.TryH\000" + - "\022A\n\005empty\030& \001(\01320.org.jetbrains.kotlin.s" + - "erialization.js.ast.EmptyH\000B\013\n\tstatement" + - "\"N\n\006Return\022D\n\005value\030\001 \001(\01325.org.jetbrain" + - "s.kotlin.serialization.js.ast.Expression" + - "\"Q\n\005Throw\022H\n\texception\030\001 \002(\01325.org.jetbr" + - "ains.kotlin.serialization.js.ast.Express" + - "ion\"\031\n\005Break\022\020\n\010label_id\030\001 \001(\005\"\034\n\010Contin" + - "ue\022\020\n\010label_id\030\001 \001(\005\"\n\n\010Debugger\"y\n\023Expr" + - "essionStatement\022I\n\nexpression\030\001 \002(\01325.or", - "g.jetbrains.kotlin.serialization.js.ast." + - "Expression\022\027\n\017exported_tag_id\030\002 \001(\005\"\215\001\n\004" + - "Vars\022N\n\013declaration\030\001 \003(\01329.org.jetbrain" + - "s.kotlin.serialization.js.ast.VarDeclara" + - "tion\022\030\n\tmultiline\030\002 \001(\010:\005false\022\033\n\023export" + - "ed_package_id\030\003 \001(\005\"\306\001\n\016VarDeclaration\022\017" + - "\n\007name_id\030\001 \002(\005\022L\n\rinitial_value\030\002 \001(\01325" + - ".org.jetbrains.kotlin.serialization.js.a" + - "st.Expression\022\016\n\006fileId\030\003 \001(\005\022E\n\010locatio" + - "n\030\004 \001(\01323.org.jetbrains.kotlin.serializa", - "tion.js.ast.Location\"P\n\005Block\022G\n\tstateme" + - "nt\030\001 \003(\01324.org.jetbrains.kotlin.serializ" + - "ation.js.ast.Statement\"V\n\013GlobalBlock\022G\n" + - "\tstatement\030\001 \003(\01324.org.jetbrains.kotlin." + - "serialization.js.ast.Statement\"f\n\005Label\022" + - "\016\n\006nameId\030\001 \002(\005\022M\n\017inner_statement\030\002 \002(\013" + - "24.org.jetbrains.kotlin.serialization.js" + - ".ast.Statement\"\352\001\n\002If\022H\n\tcondition\030\001 \002(\013" + - "25.org.jetbrains.kotlin.serialization.js" + - ".ast.Expression\022L\n\016then_statement\030\002 \002(\0132", - "4.org.jetbrains.kotlin.serialization.js." + - "ast.Statement\022L\n\016else_statement\030\003 \001(\01324." + - "org.jetbrains.kotlin.serialization.js.as" + - "t.Statement\"\232\001\n\006Switch\022I\n\nexpression\030\001 \002" + - "(\01325.org.jetbrains.kotlin.serialization." + - "js.ast.Expression\022E\n\005entry\030\002 \003(\01326.org.j" + - "etbrains.kotlin.serialization.js.ast.Swi" + - "tchEntry\"\234\001\n\013SwitchEntry\022D\n\005label\030\001 \001(\0132" + + "lization.js.ast.Expression\022^\n\017inline_str", + "ategy\030\003 \001(\01629.org.jetbrains.kotlin.seria" + + "lization.js.ast.InlineStrategy:\nNOT_INLI" + + "NE\"\242\001\n\rInstantiation\022H\n\tqualifier\030\001 \002(\0132" + "5.org.jetbrains.kotlin.serialization.js." + - "ast.Expression\022G\n\tstatement\030\002 \003(\01324.org.", - "jetbrains.kotlin.serialization.js.ast.St" + - "atement\"\225\001\n\005While\022H\n\tcondition\030\001 \002(\01325.o" + - "rg.jetbrains.kotlin.serialization.js.ast" + - ".Expression\022B\n\004body\030\002 \002(\01324.org.jetbrain" + - "s.kotlin.serialization.js.ast.Statement\"" + - "\227\001\n\007DoWhile\022H\n\tcondition\030\001 \002(\01325.org.jet" + - "brains.kotlin.serialization.js.ast.Expre" + - "ssion\022B\n\004body\030\002 \002(\01324.org.jetbrains.kotl" + - "in.serialization.js.ast.Statement\"\304\003\n\003Fo" + - "r\022I\n\tvariables\030\001 \001(\01324.org.jetbrains.kot", - "lin.serialization.js.ast.StatementH\000\022K\n\n" + - "expression\030\002 \001(\01325.org.jetbrains.kotlin." + - "serialization.js.ast.ExpressionH\000\022E\n\005emp" + - "ty\030\003 \001(\01324.org.jetbrains.kotlin.serializ" + - "ation.js.ast.EmptyInitH\000\022H\n\tcondition\030\004 " + - "\001(\01325.org.jetbrains.kotlin.serialization" + - ".js.ast.Expression\022H\n\tincrement\030\005 \001(\01325." + - "org.jetbrains.kotlin.serialization.js.as" + - "t.Expression\022B\n\004body\030\006 \002(\01324.org.jetbrai" + - "ns.kotlin.serialization.js.ast.Statement", - "B\006\n\004init\"\013\n\tEmptyInit\"\374\001\n\005ForIn\022\020\n\006nameI" + - "d\030\001 \001(\005H\000\022K\n\nexpression\030\002 \001(\01325.org.jetb" + - "rains.kotlin.serialization.js.ast.Expres" + - "sionH\000\022G\n\010iterable\030\003 \002(\01325.org.jetbrains" + - ".kotlin.serialization.js.ast.Expression\022" + - "B\n\004body\030\004 \002(\01324.org.jetbrains.kotlin.ser" + - "ialization.js.ast.StatementB\007\n\005value\"\337\001\n" + - "\003Try\022F\n\010tryBlock\030\001 \002(\01324.org.jetbrains.k" + - "otlin.serialization.js.ast.Statement\022D\n\n" + - "catchBlock\030\002 \001(\01320.org.jetbrains.kotlin.", - "serialization.js.ast.Catch\022J\n\014finallyBlo" + - "ck\030\003 \001(\01324.org.jetbrains.kotlin.serializ" + - "ation.js.ast.Statement\"\224\001\n\005Catch\022G\n\tpara" + - "meter\030\001 \002(\01324.org.jetbrains.kotlin.seria" + - "lization.js.ast.Parameter\022B\n\004body\030\002 \002(\0132" + - "4.org.jetbrains.kotlin.serialization.js." + - "ast.Statement\"\007\n\005Empty\"\327\005\n\010Fragment\022R\n\017i" + - "mported_module\030\001 \003(\01329.org.jetbrains.kot" + - "lin.serialization.js.ast.ImportedModule\022" + - "G\n\014import_entry\030\002 \003(\01321.org.jetbrains.ko", - "tlin.serialization.js.ast.Import\022Q\n\021decl" + - "aration_block\030\003 \001(\01326.org.jetbrains.kotl" + - "in.serialization.js.ast.GlobalBlock\022L\n\014e" + - "xport_block\030\004 \001(\01326.org.jetbrains.kotlin" + - ".serialization.js.ast.GlobalBlock\022Q\n\021ini" + - "tializer_block\030\005 \001(\01326.org.jetbrains.kot" + - "lin.serialization.js.ast.GlobalBlock\022L\n\014" + - "name_binding\030\006 \003(\01326.org.jetbrains.kotli" + - "n.serialization.js.ast.NameBinding\022J\n\013cl" + - "ass_model\030\007 \003(\01325.org.jetbrains.kotlin.s", - "erialization.js.ast.ClassModel\022P\n\021module" + - "_expression\030\010 \003(\01325.org.jetbrains.kotlin" + - ".serialization.js.ast.Expression\022N\n\rinli" + - "ne_module\030\t \003(\01327.org.jetbrains.kotlin.s" + - "erialization.js.ast.InlineModule\"\224\001\n\016Imp" + - "ortedModule\022\030\n\020external_name_id\030\001 \002(\005\022\030\n" + - "\020internal_name_id\030\002 \002(\005\022N\n\017plain_referen" + - "ce\030\003 \001(\01325.org.jetbrains.kotlin.serializ" + - "ation.js.ast.Expression\"i\n\006Import\022\024\n\014sig" + - "nature_id\030\001 \002(\005\022I\n\nexpression\030\002 \002(\01325.or", + "ast.Expression\022G\n\010argument\030\002 \003(\01325.org.j" + + "etbrains.kotlin.serialization.js.ast.Exp" + + "ression\"\323\013\n\tStatement\022\016\n\006fileId\030\001 \001(\005\022E\n" + + "\010location\030\002 \001(\01323.org.jetbrains.kotlin.s" + + "erialization.js.ast.Location\022\030\n\tsyntheti" + + "c\030\003 \001(\010:\005false\022M\n\020return_statement\030\025 \001(\013", + "21.org.jetbrains.kotlin.serialization.js" + + ".ast.ReturnH\000\022K\n\017throw_statement\030\026 \001(\01320" + + ".org.jetbrains.kotlin.serialization.js.a" + + "st.ThrowH\000\022K\n\017break_statement\030\027 \001(\01320.or" + "g.jetbrains.kotlin.serialization.js.ast." + - "Expression\"3\n\013NameBinding\022\024\n\014signature_i" + - "d\030\001 \002(\005\022\016\n\006nameId\030\002 \002(\005\"\214\001\n\nClassModel\022\017" + - "\n\007name_id\030\001 \002(\005\022\025\n\rsuper_name_id\030\002 \001(\005\022V" + - "\n\026post_declaration_block\030\003 \001(\01326.org.jet" + - "brains.kotlin.serialization.js.ast.Globa" + - "lBlock\";\n\014InlineModule\022\024\n\014signature_id\030\001" + - " \002(\005\022\025\n\rexpression_id\030\002 \002(\005\"\034\n\013StringTab" + - "le\022\r\n\005entry\030\001 \003(\t\"K\n\tNameTable\022>\n\005entry\030" + - "\001 \003(\0132/.org.jetbrains.kotlin.serializati", - "on.js.ast.Name\"D\n\004Name\022\021\n\ttemporary\030\001 \002(" + - "\010\022\022\n\nidentifier\030\002 \001(\005\022\025\n\rlocal_name_id\030\003" + - " \001(\005\"\346\001\n\005Chunk\022L\n\014string_table\030\001 \002(\01326.o" + + "BreakH\000\022Q\n\022continue_statement\030\030 \001(\01323.or" + + "g.jetbrains.kotlin.serialization.js.ast." + + "ContinueH\000\022G\n\010debugger\030\031 \001(\01323.org.jetbr" + + "ains.kotlin.serialization.js.ast.Debugge" + + "rH\000\022T\n\nexpression\030\032 \001(\0132>.org.jetbrains.", + "kotlin.serialization.js.ast.ExpressionSt" + + "atementH\000\022?\n\004vars\030\033 \001(\0132/.org.jetbrains." + + "kotlin.serialization.js.ast.VarsH\000\022A\n\005bl" + + "ock\030\034 \001(\01320.org.jetbrains.kotlin.seriali" + + "zation.js.ast.BlockH\000\022N\n\014global_block\030\035 " + + "\001(\01326.org.jetbrains.kotlin.serialization" + + ".js.ast.GlobalBlockH\000\022A\n\005label\030\036 \001(\01320.o" + "rg.jetbrains.kotlin.serialization.js.ast" + - ".StringTable\022H\n\nname_table\030\002 \002(\01324.org.j" + - "etbrains.kotlin.serialization.js.ast.Nam" + - "eTable\022E\n\010fragment\030\003 \002(\01323.org.jetbrains" + - ".kotlin.serialization.js.ast.Fragment*@\n" + - "\013SideEffects\022\021\n\rAFFECTS_STATE\020\001\022\024\n\020DEPEN" + - "DS_ON_STATE\020\002\022\010\n\004PURE\020\003*?\n\016InlineStrateg", - "y\022\017\n\013AS_FUNCTION\020\000\022\014\n\010IN_PLACE\020\001\022\016\n\nNOT_" + - "INLINE\020\002B\024B\022DebugJsAstProtoBuf" + ".LabelH\000\022E\n\014if_statement\030\037 \001(\0132-.org.jet" + + "brains.kotlin.serialization.js.ast.IfH\000\022", + "M\n\020switch_statement\030 \001(\01321.org.jetbrain" + + "s.kotlin.serialization.js.ast.SwitchH\000\022K" + + "\n\017while_statement\030! \001(\01320.org.jetbrains." + + "kotlin.serialization.js.ast.WhileH\000\022P\n\022d" + + "o_while_statement\030\" \001(\01322.org.jetbrains." + + "kotlin.serialization.js.ast.DoWhileH\000\022G\n" + + "\rfor_statement\030# \001(\0132..org.jetbrains.kot" + + "lin.serialization.js.ast.ForH\000\022L\n\020for_in" + + "_statement\030$ \001(\01320.org.jetbrains.kotlin." + + "serialization.js.ast.ForInH\000\022G\n\rtry_stat", + "ement\030% \001(\0132..org.jetbrains.kotlin.seria" + + "lization.js.ast.TryH\000\022A\n\005empty\030& \001(\01320.o" + + "rg.jetbrains.kotlin.serialization.js.ast" + + ".EmptyH\000B\013\n\tstatement\"N\n\006Return\022D\n\005value" + + "\030\001 \001(\01325.org.jetbrains.kotlin.serializat" + + "ion.js.ast.Expression\"Q\n\005Throw\022H\n\texcept" + + "ion\030\001 \002(\01325.org.jetbrains.kotlin.seriali" + + "zation.js.ast.Expression\"\031\n\005Break\022\020\n\010lab" + + "el_id\030\001 \001(\005\"\034\n\010Continue\022\020\n\010label_id\030\001 \001(" + + "\005\"\n\n\010Debugger\"y\n\023ExpressionStatement\022I\n\n", + "expression\030\001 \002(\01325.org.jetbrains.kotlin." + + "serialization.js.ast.Expression\022\027\n\017expor" + + "ted_tag_id\030\002 \001(\005\"\215\001\n\004Vars\022N\n\013declaration" + + "\030\001 \003(\01329.org.jetbrains.kotlin.serializat" + + "ion.js.ast.VarDeclaration\022\030\n\tmultiline\030\002" + + " \001(\010:\005false\022\033\n\023exported_package_id\030\003 \001(\005" + + "\"\306\001\n\016VarDeclaration\022\017\n\007name_id\030\001 \002(\005\022L\n\r" + + "initial_value\030\002 \001(\01325.org.jetbrains.kotl" + + "in.serialization.js.ast.Expression\022\016\n\006fi" + + "leId\030\003 \001(\005\022E\n\010location\030\004 \001(\01323.org.jetbr", + "ains.kotlin.serialization.js.ast.Locatio" + + "n\"P\n\005Block\022G\n\tstatement\030\001 \003(\01324.org.jetb" + + "rains.kotlin.serialization.js.ast.Statem" + + "ent\"V\n\013GlobalBlock\022G\n\tstatement\030\001 \003(\01324." + + "org.jetbrains.kotlin.serialization.js.as" + + "t.Statement\"f\n\005Label\022\016\n\006nameId\030\001 \002(\005\022M\n\017" + + "inner_statement\030\002 \002(\01324.org.jetbrains.ko" + + "tlin.serialization.js.ast.Statement\"\352\001\n\002" + + "If\022H\n\tcondition\030\001 \002(\01325.org.jetbrains.ko" + + "tlin.serialization.js.ast.Expression\022L\n\016", + "then_statement\030\002 \002(\01324.org.jetbrains.kot" + + "lin.serialization.js.ast.Statement\022L\n\016el" + + "se_statement\030\003 \001(\01324.org.jetbrains.kotli" + + "n.serialization.js.ast.Statement\"\232\001\n\006Swi" + + "tch\022I\n\nexpression\030\001 \002(\01325.org.jetbrains." + + "kotlin.serialization.js.ast.Expression\022E" + + "\n\005entry\030\002 \003(\01326.org.jetbrains.kotlin.ser" + + "ialization.js.ast.SwitchEntry\"\234\001\n\013Switch" + + "Entry\022D\n\005label\030\001 \001(\01325.org.jetbrains.kot" + + "lin.serialization.js.ast.Expression\022G\n\ts", + "tatement\030\002 \003(\01324.org.jetbrains.kotlin.se" + + "rialization.js.ast.Statement\"\225\001\n\005While\022H" + + "\n\tcondition\030\001 \002(\01325.org.jetbrains.kotlin" + + ".serialization.js.ast.Expression\022B\n\004body" + + "\030\002 \002(\01324.org.jetbrains.kotlin.serializat" + + "ion.js.ast.Statement\"\227\001\n\007DoWhile\022H\n\tcond" + + "ition\030\001 \002(\01325.org.jetbrains.kotlin.seria" + + "lization.js.ast.Expression\022B\n\004body\030\002 \002(\013" + + "24.org.jetbrains.kotlin.serialization.js" + + ".ast.Statement\"\304\003\n\003For\022I\n\tvariables\030\001 \001(", + "\01324.org.jetbrains.kotlin.serialization.j" + + "s.ast.StatementH\000\022K\n\nexpression\030\002 \001(\01325." + + "org.jetbrains.kotlin.serialization.js.as" + + "t.ExpressionH\000\022E\n\005empty\030\003 \001(\01324.org.jetb" + + "rains.kotlin.serialization.js.ast.EmptyI" + + "nitH\000\022H\n\tcondition\030\004 \001(\01325.org.jetbrains" + + ".kotlin.serialization.js.ast.Expression\022" + + "H\n\tincrement\030\005 \001(\01325.org.jetbrains.kotli" + + "n.serialization.js.ast.Expression\022B\n\004bod" + + "y\030\006 \002(\01324.org.jetbrains.kotlin.serializa", + "tion.js.ast.StatementB\006\n\004init\"\013\n\tEmptyIn" + + "it\"\374\001\n\005ForIn\022\020\n\006nameId\030\001 \001(\005H\000\022K\n\nexpres" + + "sion\030\002 \001(\01325.org.jetbrains.kotlin.serial" + + "ization.js.ast.ExpressionH\000\022G\n\010iterable\030" + + "\003 \002(\01325.org.jetbrains.kotlin.serializati" + + "on.js.ast.Expression\022B\n\004body\030\004 \002(\01324.org" + + ".jetbrains.kotlin.serialization.js.ast.S" + + "tatementB\007\n\005value\"\337\001\n\003Try\022F\n\010tryBlock\030\001 " + + "\002(\01324.org.jetbrains.kotlin.serialization" + + ".js.ast.Statement\022D\n\ncatchBlock\030\002 \001(\01320.", + "org.jetbrains.kotlin.serialization.js.as" + + "t.Catch\022J\n\014finallyBlock\030\003 \001(\01324.org.jetb" + + "rains.kotlin.serialization.js.ast.Statem" + + "ent\"\224\001\n\005Catch\022G\n\tparameter\030\001 \002(\01324.org.j" + + "etbrains.kotlin.serialization.js.ast.Par" + + "ameter\022B\n\004body\030\002 \002(\01324.org.jetbrains.kot" + + "lin.serialization.js.ast.Statement\"\007\n\005Em" + + "pty\"\327\005\n\010Fragment\022R\n\017imported_module\030\001 \003(" + + "\01329.org.jetbrains.kotlin.serialization.j" + + "s.ast.ImportedModule\022G\n\014import_entry\030\002 \003", + "(\01321.org.jetbrains.kotlin.serialization." + + "js.ast.Import\022Q\n\021declaration_block\030\003 \001(\013" + + "26.org.jetbrains.kotlin.serialization.js" + + ".ast.GlobalBlock\022L\n\014export_block\030\004 \001(\01326" + + ".org.jetbrains.kotlin.serialization.js.a" + + "st.GlobalBlock\022Q\n\021initializer_block\030\005 \001(" + + "\01326.org.jetbrains.kotlin.serialization.j" + + "s.ast.GlobalBlock\022L\n\014name_binding\030\006 \003(\0132" + + "6.org.jetbrains.kotlin.serialization.js." + + "ast.NameBinding\022J\n\013class_model\030\007 \003(\01325.o", + "rg.jetbrains.kotlin.serialization.js.ast" + + ".ClassModel\022P\n\021module_expression\030\010 \003(\01325" + + ".org.jetbrains.kotlin.serialization.js.a" + + "st.Expression\022N\n\rinline_module\030\t \003(\01327.o" + + "rg.jetbrains.kotlin.serialization.js.ast" + + ".InlineModule\"\224\001\n\016ImportedModule\022\030\n\020exte" + + "rnal_name_id\030\001 \002(\005\022\030\n\020internal_name_id\030\002" + + " \002(\005\022N\n\017plain_reference\030\003 \001(\01325.org.jetb" + + "rains.kotlin.serialization.js.ast.Expres" + + "sion\"i\n\006Import\022\024\n\014signature_id\030\001 \002(\005\022I\n\n", + "expression\030\002 \002(\01325.org.jetbrains.kotlin." + + "serialization.js.ast.Expression\"3\n\013NameB" + + "inding\022\024\n\014signature_id\030\001 \002(\005\022\016\n\006nameId\030\002" + + " \002(\005\"\214\001\n\nClassModel\022\017\n\007name_id\030\001 \002(\005\022\025\n\r" + + "super_name_id\030\002 \001(\005\022V\n\026post_declaration_" + + "block\030\003 \001(\01326.org.jetbrains.kotlin.seria" + + "lization.js.ast.GlobalBlock\";\n\014InlineMod" + + "ule\022\024\n\014signature_id\030\001 \002(\005\022\025\n\rexpression_" + + "id\030\002 \002(\005\"\034\n\013StringTable\022\r\n\005entry\030\001 \003(\t\"K" + + "\n\tNameTable\022>\n\005entry\030\001 \003(\0132/.org.jetbrai", + "ns.kotlin.serialization.js.ast.Name\"D\n\004N" + + "ame\022\021\n\ttemporary\030\001 \002(\010\022\022\n\nidentifier\030\002 \001" + + "(\005\022\025\n\rlocal_name_id\030\003 \001(\005\"\346\001\n\005Chunk\022L\n\014s" + + "tring_table\030\001 \002(\01326.org.jetbrains.kotlin" + + ".serialization.js.ast.StringTable\022H\n\nnam" + + "e_table\030\002 \002(\01324.org.jetbrains.kotlin.ser" + + "ialization.js.ast.NameTable\022E\n\010fragment\030" + + "\003 \002(\01323.org.jetbrains.kotlin.serializati" + + "on.js.ast.Fragment*@\n\013SideEffects\022\021\n\rAFF" + + "ECTS_STATE\020\001\022\024\n\020DEPENDS_ON_STATE\020\002\022\010\n\004PU", + "RE\020\003*?\n\016InlineStrategy\022\017\n\013AS_FUNCTION\020\000\022" + + "\014\n\010IN_PLACE\020\001\022\016\n\nNOT_INLINE\020\002B\024B\022DebugJs" + + "AstProtoBuf" }; org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -49040,7 +49119,7 @@ public final class DebugJsAstProtoBuf { internal_static_org_jetbrains_kotlin_serialization_js_ast_Expression_fieldAccessorTable = new org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_org_jetbrains_kotlin_serialization_js_ast_Expression_descriptor, - new java.lang.String[] { "FileId", "Location", "Synthetic", "SideEffects", "SimpleNameReference", "ThisLiteral", "NullLiteral", "TrueLiteral", "FalseLiteral", "StringLiteral", "RegExpLiteral", "IntLiteral", "DoubleLiteral", "ArrayLiteral", "ObjectLiteral", "Function", "DocComment", "Binary", "Unary", "Conditional", "ArrayAccess", "NameReference", "PropertyReference", "Invocation", "Instantiation", "Expression", }); + new java.lang.String[] { "FileId", "Location", "Synthetic", "SideEffects", "LocalAlias", "SimpleNameReference", "ThisLiteral", "NullLiteral", "TrueLiteral", "FalseLiteral", "StringLiteral", "RegExpLiteral", "IntLiteral", "DoubleLiteral", "ArrayLiteral", "ObjectLiteral", "Function", "DocComment", "Binary", "Unary", "Conditional", "ArrayAccess", "NameReference", "PropertyReference", "Invocation", "Instantiation", "Expression", }); internal_static_org_jetbrains_kotlin_serialization_js_ast_ThisLiteral_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_org_jetbrains_kotlin_serialization_js_ast_ThisLiteral_fieldAccessorTable = new diff --git a/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/metadata/metadataProperties.kt b/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/metadata/metadataProperties.kt index 8eef1365446..905ff62a09d 100644 --- a/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/metadata/metadataProperties.kt +++ b/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/metadata/metadataProperties.kt @@ -31,6 +31,8 @@ var JsName.descriptor: DeclarationDescriptor? by MetadataProperty(default = null var JsName.localAlias: JsName? by MetadataProperty(default = null) +var JsExpression.localAlias: JsName? by MetadataProperty(default = null) + // TODO: move this to module 'js.inliner' and change dependency on 'frontend' to dependency on 'descriptors' var JsInvocation.inlineStrategy: InlineStrategy? by MetadataProperty(default = null) diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/JsInliner.java b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/JsInliner.java index b0dc220c932..f25a2956b4f 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/JsInliner.java +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/JsInliner.java @@ -389,6 +389,10 @@ public class JsInliner extends JsVisitorWithContextImpl { if (statement instanceof JsReturn) continue; statement = statement.deepCopy(); + if (inlineFunctionDepth == 0) { + replaceExpressionsWithLocalAliases(statement); + } + if (statement instanceof JsVars) { JsVars jsVars = (JsVars) statement; String tag = getImportTag(jsVars); @@ -443,6 +447,28 @@ public class JsInliner extends JsVisitorWithContextImpl { } } + private static void replaceExpressionsWithLocalAliases(@NotNull JsStatement statement) { + new JsVisitorWithContextImpl() { + @Override + public void endVisit(@NotNull JsNameRef x, @NotNull JsContext ctx) { + replaceIfNecessary(x, ctx); + } + + @Override + public void endVisit(@NotNull JsArrayAccess x, @NotNull JsContext ctx) { + replaceIfNecessary(x, ctx); + } + + private void replaceIfNecessary(@NotNull JsExpression expression, @NotNull JsContext context) { + JsName alias = MetadataProperties.getLocalAlias(expression); + if (alias != null) { + context.replaceMe(alias.makeRef()); + } + } + + }.accept(statement); + } + private static boolean isSuspendWithCurrentContinuation(@Nullable DeclarationDescriptor descriptor) { if (!(descriptor instanceof FunctionDescriptor)) return false; return CommonCoroutineCodegenUtilKt.isBuiltInSuspendCoroutineOrReturn((FunctionDescriptor) descriptor.getOriginal()); @@ -497,9 +523,11 @@ public class JsInliner extends JsVisitorWithContextImpl { return false; } sb.append("."); - if (!extractImportTagImpl(arrayAccess.getIndexExpression(), sb)) { + if (!(arrayAccess.getIndexExpression() instanceof JsStringLiteral)) { return false; } + JsStringLiteral stringLiteral = (JsStringLiteral) arrayAccess.getIndexExpression(); + sb.append(JsToStringGenerationVisitor.javaScriptString(stringLiteral.getValue())); return true; } else { diff --git a/js/js.serializer/src/js-ast.proto b/js/js.serializer/src/js-ast.proto index bff71c54a11..a05d4a8e4e9 100644 --- a/js/js.serializer/src/js-ast.proto +++ b/js/js.serializer/src/js-ast.proto @@ -40,6 +40,7 @@ message Expression { optional Location location = 2; optional bool synthetic = 3 [default = false]; optional SideEffects side_effects = 4 [default = AFFECTS_STATE]; + optional int32 local_alias = 5; oneof expression { int32 simple_name_reference = 22; diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/ast/JsAstDeserializer.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/ast/JsAstDeserializer.kt index 508fac0ac8f..3f7884ff6ff 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/ast/JsAstDeserializer.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/ast/JsAstDeserializer.kt @@ -262,6 +262,9 @@ class JsAstDeserializer(program: JsProgram, private val sourceRoots: Iterableoptional int32 local_alias = 5; + */ + boolean hasLocalAlias(); + /** + * optional int32 local_alias = 5; + */ + int getLocalAlias(); + /** * optional int32 simple_name_reference = 22; */ @@ -898,6 +907,11 @@ public final class JsAstProtoBuf { } break; } + case 40: { + bitField0_ |= 0x00000010; + localAlias_ = input.readInt32(); + break; + } case 176: { expressionCase_ = 22; expression_ = input.readInt32(); @@ -1302,6 +1316,21 @@ public final class JsAstProtoBuf { return sideEffects_; } + public static final int LOCAL_ALIAS_FIELD_NUMBER = 5; + private int localAlias_; + /** + * optional int32 local_alias = 5; + */ + public boolean hasLocalAlias() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional int32 local_alias = 5; + */ + public int getLocalAlias() { + return localAlias_; + } + public static final int SIMPLE_NAME_REFERENCE_FIELD_NUMBER = 22; /** * optional int32 simple_name_reference = 22; @@ -1664,6 +1693,7 @@ public final class JsAstProtoBuf { location_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.Location.getDefaultInstance(); synthetic_ = false; sideEffects_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects.AFFECTS_STATE; + localAlias_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -1774,6 +1804,9 @@ public final class JsAstProtoBuf { if (((bitField0_ & 0x00000008) == 0x00000008)) { output.writeEnum(4, sideEffects_.getNumber()); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeInt32(5, localAlias_); + } if (expressionCase_ == 22) { output.writeInt32( 22, (int)((java.lang.Integer) expression_)); @@ -1866,6 +1899,10 @@ public final class JsAstProtoBuf { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeEnumSize(4, sideEffects_.getNumber()); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(5, localAlias_); + } if (expressionCase_ == 22) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeInt32Size( @@ -2056,6 +2093,8 @@ public final class JsAstProtoBuf { bitField0_ = (bitField0_ & ~0x00000004); sideEffects_ = org.jetbrains.kotlin.serialization.js.ast.JsAstProtoBuf.SideEffects.AFFECTS_STATE; bitField0_ = (bitField0_ & ~0x00000008); + localAlias_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); expressionCase_ = 0; expression_ = null; return this; @@ -2097,6 +2136,10 @@ public final class JsAstProtoBuf { to_bitField0_ |= 0x00000008; } result.sideEffects_ = sideEffects_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.localAlias_ = localAlias_; if (expressionCase_ == 22) { result.expression_ = expression_; } @@ -2179,6 +2222,9 @@ public final class JsAstProtoBuf { if (other.hasSideEffects()) { setSideEffects(other.getSideEffects()); } + if (other.hasLocalAlias()) { + setLocalAlias(other.getLocalAlias()); + } switch (other.getExpressionCase()) { case SIMPLE_NAME_REFERENCE: { setSimpleNameReference(other.getSimpleNameReference()); @@ -2553,6 +2599,38 @@ public final class JsAstProtoBuf { return this; } + private int localAlias_ ; + /** + * optional int32 local_alias = 5; + */ + public boolean hasLocalAlias() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional int32 local_alias = 5; + */ + public int getLocalAlias() { + return localAlias_; + } + /** + * optional int32 local_alias = 5; + */ + public Builder setLocalAlias(int value) { + bitField0_ |= 0x00000010; + localAlias_ = value; + + return this; + } + /** + * optional int32 local_alias = 5; + */ + public Builder clearLocalAlias() { + bitField0_ = (bitField0_ & ~0x00000010); + localAlias_ = 0; + + return this; + } + /** * optional int32 simple_name_reference = 22; */ diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/ast/JsAstSerializer.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/ast/JsAstSerializer.kt index ed82930e078..da8e75a3e82 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/ast/JsAstSerializer.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/ast/JsAstSerializer.kt @@ -435,6 +435,7 @@ class JsAstSerializer(private val pathResolver: (File) -> String) { with (visitor.builder) { synthetic = expression.synthetic sideEffects = map(expression.sideEffects) + expression.localAlias?.let { localAlias = serialize(it) } } return visitor.builder.build() diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java index 95b214a48da..76733085cdd 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java @@ -4748,6 +4748,12 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { doTest(fileName); } + @TestMetadata("inlineableAliasForExternalDeclaration.kt") + public void testInlineableAliasForExternalDeclaration() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/inlineMultiModule/inlineableAliasForExternalDeclaration.kt"); + doTest(fileName); + } + @TestMetadata("internalNameClash.kt") public void testInternalNameClash() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/inlineMultiModule/internalNameClash.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java index bb3884c029a..d9fc0a284c2 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java @@ -850,6 +850,7 @@ public final class StaticContext { MetadataProperties.setSideEffects(moduleRef, SideEffectKind.PURE); lhsModuleRef = new JsArrayAccess(currentImports, new JsStringLiteral(moduleId)); } + MetadataProperties.setLocalAlias(moduleRef, moduleName); JsExpressionStatement importStmt = new JsExpressionStatement(JsAstUtils.assignment(lhsModuleRef, moduleName.makeRef())); MetadataProperties.setExportedTag(importStmt, "imports:" + moduleId); diff --git a/js/js.translator/testData/box/inlineMultiModule/inlineableAliasForExternalDeclaration.kt b/js/js.translator/testData/box/inlineMultiModule/inlineableAliasForExternalDeclaration.kt new file mode 100644 index 00000000000..16afe4aa3c7 --- /dev/null +++ b/js/js.translator/testData/box/inlineMultiModule/inlineableAliasForExternalDeclaration.kt @@ -0,0 +1,11 @@ +// MODULE: lib +// FILE: lib.kt +fun foo() = "OK" + +// MODULE: main(lib) +// FILE: main1.kt +inline fun bar() = foo() + +// FILE: main2.kt +// RECOMPILE +fun box() = bar()