58e115140e5be839f41599aeb2b6a03368e72656 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. compilation_unit {
  2. package_statement {
  3. package_name: "ExplorerTest"
  4. }
  5. is_api: true
  6. declarations {
  7. class_declaration {
  8. name {
  9. name: "A"
  10. }
  11. members {
  12. variable {
  13. binding {
  14. name: "a"
  15. type {
  16. expression_pattern {
  17. expression {
  18. int_type_literal {
  19. }
  20. }
  21. }
  22. }
  23. }
  24. }
  25. }
  26. }
  27. }
  28. declarations {
  29. class_declaration {
  30. name {
  31. name: "B"
  32. }
  33. members {
  34. variable {
  35. binding {
  36. name: "b"
  37. type {
  38. expression_pattern {
  39. expression {
  40. int_type_literal {
  41. }
  42. }
  43. }
  44. }
  45. }
  46. }
  47. }
  48. }
  49. }
  50. declarations {
  51. impl {
  52. kind: ExternalImpl
  53. impl_type {
  54. identifier {
  55. name: "A"
  56. }
  57. }
  58. interface {
  59. call {
  60. function {
  61. identifier {
  62. name: "As"
  63. }
  64. }
  65. argument {
  66. tuple_literal {
  67. fields {
  68. identifier {
  69. name: "B"
  70. }
  71. }
  72. }
  73. }
  74. }
  75. }
  76. members {
  77. function {
  78. name {
  79. name: "Convert"
  80. }
  81. self_pattern {
  82. binding_pattern {
  83. name: "self"
  84. type {
  85. expression_pattern {
  86. expression {
  87. identifier {
  88. name: "Self"
  89. }
  90. }
  91. }
  92. }
  93. }
  94. }
  95. param_pattern {
  96. }
  97. return_term {
  98. kind: Expression
  99. type {
  100. identifier {
  101. name: "B"
  102. }
  103. }
  104. }
  105. body {
  106. statements {
  107. return_expression_statement {
  108. expression {
  109. struct_literal {
  110. fields {
  111. name: "b"
  112. expression {
  113. simple_member_access {
  114. field: "a"
  115. object {
  116. identifier {
  117. name: "self"
  118. }
  119. }
  120. }
  121. }
  122. }
  123. }
  124. }
  125. }
  126. }
  127. }
  128. }
  129. }
  130. }
  131. }
  132. declarations {
  133. function {
  134. name {
  135. name: "Main"
  136. }
  137. param_pattern {
  138. }
  139. return_term {
  140. kind: Expression
  141. type {
  142. int_type_literal {
  143. }
  144. }
  145. }
  146. body {
  147. statements {
  148. variable_definition {
  149. pattern {
  150. binding_pattern {
  151. name: "a"
  152. type {
  153. expression_pattern {
  154. expression {
  155. tuple_literal {
  156. fields {
  157. int_type_literal {
  158. }
  159. }
  160. fields {
  161. identifier {
  162. name: "A"
  163. }
  164. }
  165. }
  166. }
  167. }
  168. }
  169. }
  170. }
  171. init {
  172. tuple_literal {
  173. fields {
  174. int_literal {
  175. value: 1
  176. }
  177. }
  178. fields {
  179. struct_literal {
  180. fields {
  181. name: "a"
  182. expression {
  183. int_literal {
  184. value: 2
  185. }
  186. }
  187. }
  188. }
  189. }
  190. }
  191. }
  192. is_returned: false
  193. }
  194. }
  195. statements {
  196. variable_definition {
  197. pattern {
  198. binding_pattern {
  199. name: "b"
  200. type {
  201. expression_pattern {
  202. expression {
  203. tuple_literal {
  204. fields {
  205. int_type_literal {
  206. }
  207. }
  208. fields {
  209. identifier {
  210. name: "B"
  211. }
  212. }
  213. }
  214. }
  215. }
  216. }
  217. }
  218. }
  219. init {
  220. identifier {
  221. name: "a"
  222. }
  223. }
  224. is_returned: false
  225. }
  226. }
  227. statements {
  228. return_expression_statement {
  229. expression {
  230. int_literal {
  231. value: 0
  232. }
  233. }
  234. }
  235. }
  236. }
  237. }
  238. }
  239. }