f70134eee684858470cf431f3a004f847726b93d 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  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. class_declaration {
  52. name {
  53. name: "C"
  54. }
  55. members {
  56. variable {
  57. binding {
  58. name: "c"
  59. type {
  60. expression_pattern {
  61. expression {
  62. int_type_literal {
  63. }
  64. }
  65. }
  66. }
  67. }
  68. }
  69. }
  70. }
  71. }
  72. declarations {
  73. function {
  74. name {
  75. name: "Main"
  76. }
  77. param_pattern {
  78. }
  79. return_term {
  80. kind: Expression
  81. type {
  82. int_type_literal {
  83. }
  84. }
  85. }
  86. body {
  87. statements {
  88. variable_definition {
  89. pattern {
  90. binding_pattern {
  91. name: "c"
  92. type {
  93. expression_pattern {
  94. expression {
  95. identifier {
  96. name: "C"
  97. }
  98. }
  99. }
  100. }
  101. }
  102. }
  103. init {
  104. struct_literal {
  105. fields {
  106. name: "base"
  107. expression {
  108. struct_literal {
  109. fields {
  110. name: "base"
  111. expression {
  112. struct_literal {
  113. fields {
  114. name: "a"
  115. expression {
  116. int_literal {
  117. value: 1
  118. }
  119. }
  120. }
  121. }
  122. }
  123. }
  124. fields {
  125. name: "b"
  126. expression {
  127. int_literal {
  128. value: 2
  129. }
  130. }
  131. }
  132. }
  133. }
  134. }
  135. fields {
  136. name: "c"
  137. expression {
  138. int_literal {
  139. value: 3
  140. }
  141. }
  142. }
  143. }
  144. }
  145. is_returned: false
  146. }
  147. }
  148. statements {
  149. variable_definition {
  150. pattern {
  151. tuple_pattern {
  152. fields {
  153. binding_pattern {
  154. name: "pa"
  155. type {
  156. expression_pattern {
  157. expression {
  158. operator {
  159. op: Ptr
  160. arguments {
  161. identifier {
  162. name: "A"
  163. }
  164. }
  165. }
  166. }
  167. }
  168. }
  169. }
  170. }
  171. fields {
  172. binding_pattern {
  173. name: "pb"
  174. type {
  175. expression_pattern {
  176. expression {
  177. operator {
  178. op: Ptr
  179. arguments {
  180. identifier {
  181. name: "B"
  182. }
  183. }
  184. }
  185. }
  186. }
  187. }
  188. }
  189. }
  190. fields {
  191. binding_pattern {
  192. name: "pc"
  193. type {
  194. expression_pattern {
  195. expression {
  196. operator {
  197. op: Ptr
  198. arguments {
  199. identifier {
  200. name: "C"
  201. }
  202. }
  203. }
  204. }
  205. }
  206. }
  207. }
  208. }
  209. }
  210. }
  211. init {
  212. tuple_literal {
  213. fields {
  214. operator {
  215. op: AddressOf
  216. arguments {
  217. identifier {
  218. name: "c"
  219. }
  220. }
  221. }
  222. }
  223. fields {
  224. operator {
  225. op: AddressOf
  226. arguments {
  227. identifier {
  228. name: "c"
  229. }
  230. }
  231. }
  232. }
  233. fields {
  234. operator {
  235. op: AddressOf
  236. arguments {
  237. identifier {
  238. name: "c"
  239. }
  240. }
  241. }
  242. }
  243. }
  244. }
  245. is_returned: false
  246. }
  247. }
  248. statements {
  249. expression_statement {
  250. expression {
  251. call {
  252. function {
  253. identifier {
  254. name: "Print"
  255. }
  256. }
  257. argument {
  258. tuple_literal {
  259. fields {
  260. string_literal {
  261. value: "{0}"
  262. }
  263. }
  264. fields {
  265. simple_member_access {
  266. field: "a"
  267. object {
  268. operator {
  269. op: Deref
  270. arguments {
  271. identifier {
  272. name: "pa"
  273. }
  274. }
  275. }
  276. }
  277. }
  278. }
  279. }
  280. }
  281. }
  282. }
  283. }
  284. }
  285. statements {
  286. expression_statement {
  287. expression {
  288. call {
  289. function {
  290. identifier {
  291. name: "Print"
  292. }
  293. }
  294. argument {
  295. tuple_literal {
  296. fields {
  297. string_literal {
  298. value: "{0}"
  299. }
  300. }
  301. fields {
  302. simple_member_access {
  303. field: "b"
  304. object {
  305. operator {
  306. op: Deref
  307. arguments {
  308. identifier {
  309. name: "pb"
  310. }
  311. }
  312. }
  313. }
  314. }
  315. }
  316. }
  317. }
  318. }
  319. }
  320. }
  321. }
  322. statements {
  323. expression_statement {
  324. expression {
  325. call {
  326. function {
  327. identifier {
  328. name: "Print"
  329. }
  330. }
  331. argument {
  332. tuple_literal {
  333. fields {
  334. string_literal {
  335. value: "{0}"
  336. }
  337. }
  338. fields {
  339. simple_member_access {
  340. field: "c"
  341. object {
  342. operator {
  343. op: Deref
  344. arguments {
  345. identifier {
  346. name: "pc"
  347. }
  348. }
  349. }
  350. }
  351. }
  352. }
  353. }
  354. }
  355. }
  356. }
  357. }
  358. }
  359. statements {
  360. return_expression_statement {
  361. expression {
  362. int_literal {
  363. value: 0
  364. }
  365. }
  366. }
  367. }
  368. }
  369. }
  370. }
  371. }