| /* |
| * Copyright 2010-2017 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.serialization.js.ast; |
| |
| option java_outer_classname = "JsAstProtoBuf"; |
| option optimize_for = LITE_RUNTIME; |
| |
| |
| message Location { |
| required int32 startLine = 1; |
| required int32 startChar = 2; |
| } |
| |
| enum SideEffects { |
| AFFECTS_STATE = 1; |
| DEPENDS_ON_STATE = 2; |
| PURE = 3; |
| } |
| |
| |
| // Expressions |
| // |
| |
| message Expression { |
| optional int32 fileId = 1; |
| 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; |
| ThisLiteral this_literal = 23; |
| NullLiteral null_literal = 24; |
| TrueLiteral true_literal = 25; |
| FalseLiteral false_literal = 26; |
| int32 string_literal = 27; |
| RegExpLiteral reg_exp_literal = 28; |
| int32 int_literal = 29; |
| double double_literal = 30; |
| ArrayLiteral array_literal = 31; |
| ObjectLiteral object_literal = 32; |
| Function function = 33; |
| DocComment doc_comment = 34; |
| BinaryOperation binary = 35; |
| UnaryOperation unary = 36; |
| Conditional conditional = 37; |
| ArrayAccess array_access = 38; |
| NameReference name_reference = 39; |
| PropertyReference property_reference = 40; |
| Invocation invocation = 41; |
| Instantiation instantiation = 42; |
| } |
| } |
| |
| message ThisLiteral { |
| } |
| |
| message NullLiteral { |
| } |
| |
| message TrueLiteral { |
| } |
| |
| message FalseLiteral { |
| } |
| |
| message RegExpLiteral { |
| required int32 pattern_string_id = 1; |
| optional int32 flags_string_id = 2; |
| } |
| |
| message ArrayLiteral { |
| repeated Expression element = 1; |
| } |
| |
| message ObjectLiteral { |
| repeated ObjectLiteralEntry entry = 1; |
| optional bool multiline = 2 [default = true]; |
| } |
| |
| message ObjectLiteralEntry { |
| required Expression key = 1; |
| required Expression value = 2; |
| } |
| |
| message Function { |
| repeated Parameter parameter = 1; |
| optional int32 name_id = 2; |
| required Statement body = 3; |
| optional bool local = 4 [default = false]; |
| } |
| |
| message Parameter { |
| required int32 name_id = 1; |
| optional bool has_default_value = 2 [default = false]; |
| } |
| |
| message DocComment { |
| repeated DocCommentTag tag = 1; |
| } |
| |
| message DocCommentTag { |
| required int32 name_id = 1; |
| oneof value { |
| int32 value_string_id = 2; |
| Expression expression = 3; |
| } |
| } |
| |
| message BinaryOperation { |
| required Expression left = 1; |
| required Expression right = 2; |
| required Type type = 3; |
| |
| enum Type { |
| MUL = 1; |
| DIV = 2; |
| MOD = 3; |
| ADD = 4; |
| SUB = 5; |
| SHL = 6; |
| SHR = 7; |
| SHRU = 8; |
| LT = 9; |
| LTE = 10; |
| GT = 11; |
| GTE = 12; |
| INSTANCEOF = 13; |
| IN = 14; |
| EQ = 15; |
| NEQ = 16; |
| REF_EQ = 17; |
| REF_NEQ = 18; |
| BIT_AND = 19; |
| BIT_XOR = 20; |
| BIT_OR = 21; |
| AND = 22; |
| OR = 23; |
| ASG = 24; |
| ASG_ADD = 25; |
| ASG_SUB = 26; |
| ASG_MUL = 27; |
| ASG_DIV = 28; |
| ASG_MOD = 29; |
| ASG_SHL = 30; |
| ASG_SHR = 31; |
| ASG_SHRU = 32; |
| ASG_BIT_AND = 33; |
| ASG_BIT_OR = 34; |
| ASG_BIT_XOR = 35; |
| COMMA = 36; |
| } |
| } |
| |
| message UnaryOperation { |
| required Expression operand = 1; |
| required Type type = 2; |
| required bool postfix = 3; |
| |
| enum Type { |
| BIT_NOT = 1; |
| DEC = 2; |
| DELETE = 3; |
| INC = 4; |
| NEG = 5; |
| POS = 6; |
| NOT = 7; |
| TYPEOF = 8; |
| VOID = 9; |
| } |
| } |
| |
| message Conditional { |
| required Expression test_expression = 1; |
| required Expression then_expression = 2; |
| required Expression else_expression = 3; |
| } |
| |
| message ArrayAccess { |
| required Expression array = 1; |
| required Expression index = 2; |
| } |
| |
| 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 { |
| required Expression qualifier = 1; |
| repeated Expression argument = 2; |
| } |
| |
| |
| // Statements |
| // |
| |
| message Statement { |
| optional int32 fileId = 1; |
| optional Location location = 2; |
| optional bool synthetic = 3 [default = false]; |
| |
| oneof statement { |
| Return return_statement = 21; |
| Throw throw_statement = 22; |
| Break break_statement = 23; |
| Continue continue_statement = 24; |
| Debugger debugger = 25; |
| ExpressionStatement expression = 26; |
| Vars vars = 27; |
| Block block = 28; |
| GlobalBlock global_block = 29; |
| Label label = 30; |
| If if_statement = 31; |
| Switch switch_statement = 32; |
| While while_statement = 33; |
| DoWhile do_while_statement = 34; |
| For for_statement = 35; |
| ForIn for_in_statement = 36; |
| Try try_statement = 37; |
| Empty empty = 38; |
| } |
| } |
| |
| message Return { |
| optional Expression value = 1; |
| } |
| |
| message Throw { |
| required Expression exception = 1; |
| } |
| |
| message Break { |
| optional int32 label_id = 1; |
| } |
| |
| message Continue { |
| optional int32 label_id = 1; |
| } |
| |
| message Debugger { |
| } |
| |
| message ExpressionStatement { |
| required Expression expression = 1; |
| optional int32 exported_tag_id = 2; |
| } |
| |
| message Vars { |
| repeated VarDeclaration declaration = 1; |
| optional bool multiline = 2 [default = false]; |
| optional int32 exported_package_id = 3; |
| } |
| |
| message VarDeclaration { |
| required int32 name_id = 1; |
| optional Expression initial_value = 2; |
| optional int32 fileId = 3; |
| optional Location location = 4; |
| } |
| |
| message Block { |
| repeated Statement statement = 1; |
| } |
| |
| message GlobalBlock { |
| repeated Statement statement = 1; |
| } |
| |
| message Label { |
| required int32 nameId = 1; |
| required Statement inner_statement = 2; |
| } |
| |
| message If { |
| required Expression condition = 1; |
| required Statement then_statement = 2; |
| optional Statement else_statement = 3; |
| } |
| |
| message Switch { |
| required Expression expression = 1; |
| repeated SwitchEntry entry = 2; |
| } |
| |
| message SwitchEntry { |
| optional Expression label = 1; |
| repeated Statement statement = 2; |
| |
| optional int32 fileId = 3; |
| optional Location location = 4; |
| } |
| |
| message While { |
| required Expression condition = 1; |
| required Statement body = 2; |
| } |
| |
| message DoWhile { |
| required Expression condition = 1; |
| required Statement body = 2; |
| } |
| |
| message For { |
| oneof init { |
| Statement variables = 1; |
| Expression expression = 2; |
| EmptyInit empty = 3; |
| } |
| optional Expression condition = 4; |
| optional Expression increment = 5; |
| required Statement body = 6; |
| } |
| |
| message EmptyInit { |
| } |
| |
| message ForIn { |
| oneof value { |
| int32 nameId = 1; |
| Expression expression = 2; |
| } |
| required Expression iterable = 3; |
| required Statement body = 4; |
| } |
| |
| message Try { |
| required Statement tryBlock = 1; |
| optional Catch catchBlock = 2; |
| optional Statement finallyBlock = 3; |
| } |
| |
| message Catch { |
| required Parameter parameter = 1; |
| required Statement body = 2; |
| } |
| |
| message Empty { |
| } |
| |
| enum InlineStrategy { |
| AS_FUNCTION = 0; |
| IN_PLACE = 1; |
| NOT_INLINE = 2; |
| } |
| |
| |
| // Fragment |
| |
| message Fragment { |
| repeated ImportedModule imported_module = 1; |
| repeated Import import_entry = 2; |
| optional GlobalBlock declaration_block = 3; |
| optional GlobalBlock export_block = 4; |
| optional GlobalBlock initializer_block = 5; |
| repeated NameBinding name_binding = 6; |
| repeated ClassModel class_model = 7; |
| repeated Expression module_expression = 8; |
| repeated InlineModule inline_module = 9; |
| } |
| |
| message ImportedModule { |
| required int32 external_name_id = 1; |
| required int32 internal_name_id = 2; |
| optional Expression plain_reference = 3; |
| } |
| |
| message Import { |
| required int32 signature_id = 1; |
| required Expression expression = 2; |
| } |
| |
| message NameBinding { |
| required int32 signature_id = 1; |
| required int32 nameId = 2; |
| } |
| |
| message ClassModel { |
| required int32 name_id = 1; |
| optional int32 super_name_id = 2; |
| repeated int32 interface_name_id = 4; |
| optional GlobalBlock post_declaration_block = 3; |
| } |
| |
| message InlineModule { |
| required int32 signature_id = 1; |
| required int32 expression_id = 2; |
| } |
| |
| // Tables |
| // |
| |
| message StringTable { |
| repeated string entry = 1; |
| } |
| |
| message NameTable { |
| repeated Name entry = 1; |
| } |
| |
| message Name { |
| required bool temporary = 1; |
| optional int32 identifier = 2; |
| optional int32 local_name_id = 3; |
| optional bool imported = 4 [default = false]; |
| optional SpecialFunction special_function = 5; |
| } |
| |
| enum SpecialFunction { |
| DEFINE_INLINE_FUNCTION = 1; |
| WRAP_FUNCTION = 2; |
| TO_BOXED_CHAR = 3; |
| UNBOX_CHAR = 4; |
| SUSPEND_CALL = 5; |
| COROUTINE_RESULT = 6; |
| COROUTINE_CONTROLLER = 7; |
| COROUTINE_RECEIVER = 8; |
| SET_COROUTINE_RESULT = 9; |
| } |
| |
| |
| // Chunk |
| // |
| |
| message Chunk { |
| required StringTable string_table = 1; |
| required NameTable name_table = 2; |
| required Fragment fragment = 3; |
| } |