15bd86b0412443771aa00da617795aa0e5c64185 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484
  1. compilation_unit {
  2. package_statement {
  3. package_name: "ExplorerTest"
  4. }
  5. is_api: true
  6. declarations {
  7. class_declaration {
  8. name {
  9. name: "One"
  10. }
  11. members {
  12. impl {
  13. kind: InternalImpl
  14. impl_type {
  15. identifier {
  16. name: "One"
  17. }
  18. }
  19. interface {
  20. call {
  21. function {
  22. identifier {
  23. name: "ImplicitAs"
  24. }
  25. }
  26. argument {
  27. tuple_literal {
  28. fields {
  29. int_type_literal {
  30. }
  31. }
  32. }
  33. }
  34. }
  35. }
  36. members {
  37. function {
  38. name {
  39. name: "Convert"
  40. }
  41. self_pattern {
  42. binding_pattern {
  43. name: "self"
  44. type {
  45. expression_pattern {
  46. expression {
  47. identifier {
  48. name: "Self"
  49. }
  50. }
  51. }
  52. }
  53. }
  54. }
  55. param_pattern {
  56. }
  57. return_term {
  58. kind: Expression
  59. type {
  60. int_type_literal {
  61. }
  62. }
  63. }
  64. body {
  65. statements {
  66. return_expression_statement {
  67. expression {
  68. int_literal {
  69. value: 1
  70. }
  71. }
  72. }
  73. }
  74. }
  75. }
  76. }
  77. }
  78. }
  79. }
  80. }
  81. declarations {
  82. class_declaration {
  83. name {
  84. name: "Two"
  85. }
  86. members {
  87. impl {
  88. kind: InternalImpl
  89. impl_type {
  90. identifier {
  91. name: "Two"
  92. }
  93. }
  94. interface {
  95. call {
  96. function {
  97. identifier {
  98. name: "ImplicitAs"
  99. }
  100. }
  101. argument {
  102. tuple_literal {
  103. fields {
  104. int_type_literal {
  105. }
  106. }
  107. }
  108. }
  109. }
  110. }
  111. members {
  112. function {
  113. name {
  114. name: "Convert"
  115. }
  116. self_pattern {
  117. binding_pattern {
  118. name: "self"
  119. type {
  120. expression_pattern {
  121. expression {
  122. identifier {
  123. name: "Self"
  124. }
  125. }
  126. }
  127. }
  128. }
  129. }
  130. param_pattern {
  131. }
  132. return_term {
  133. kind: Expression
  134. type {
  135. int_type_literal {
  136. }
  137. }
  138. }
  139. body {
  140. statements {
  141. return_expression_statement {
  142. expression {
  143. int_literal {
  144. value: 2
  145. }
  146. }
  147. }
  148. }
  149. }
  150. }
  151. }
  152. }
  153. }
  154. }
  155. }
  156. declarations {
  157. class_declaration {
  158. name {
  159. name: "N"
  160. }
  161. members {
  162. impl {
  163. kind: InternalImpl
  164. impl_type {
  165. identifier {
  166. name: "N"
  167. }
  168. }
  169. interface {
  170. call {
  171. function {
  172. identifier {
  173. name: "ImplicitAs"
  174. }
  175. }
  176. argument {
  177. tuple_literal {
  178. fields {
  179. int_type_literal {
  180. }
  181. }
  182. }
  183. }
  184. }
  185. }
  186. members {
  187. function {
  188. name {
  189. name: "Convert"
  190. }
  191. self_pattern {
  192. binding_pattern {
  193. name: "self"
  194. type {
  195. expression_pattern {
  196. expression {
  197. identifier {
  198. name: "Self"
  199. }
  200. }
  201. }
  202. }
  203. }
  204. }
  205. param_pattern {
  206. }
  207. return_term {
  208. kind: Expression
  209. type {
  210. int_type_literal {
  211. }
  212. }
  213. }
  214. body {
  215. statements {
  216. return_expression_statement {
  217. expression {
  218. simple_member_access {
  219. field: "n"
  220. object {
  221. identifier {
  222. name: "self"
  223. }
  224. }
  225. }
  226. }
  227. }
  228. }
  229. }
  230. }
  231. }
  232. }
  233. }
  234. members {
  235. variable {
  236. binding {
  237. name: "n"
  238. type {
  239. expression_pattern {
  240. expression {
  241. int_type_literal {
  242. }
  243. }
  244. }
  245. }
  246. }
  247. }
  248. }
  249. }
  250. }
  251. declarations {
  252. function {
  253. name {
  254. name: "Get"
  255. }
  256. param_pattern {
  257. fields {
  258. binding_pattern {
  259. name: "a"
  260. type {
  261. expression_pattern {
  262. expression {
  263. int_type_literal {
  264. }
  265. }
  266. }
  267. }
  268. }
  269. }
  270. fields {
  271. binding_pattern {
  272. name: "b"
  273. type {
  274. expression_pattern {
  275. expression {
  276. int_type_literal {
  277. }
  278. }
  279. }
  280. }
  281. }
  282. }
  283. fields {
  284. binding_pattern {
  285. name: "c"
  286. type {
  287. expression_pattern {
  288. expression {
  289. int_type_literal {
  290. }
  291. }
  292. }
  293. }
  294. }
  295. }
  296. }
  297. return_term {
  298. kind: Expression
  299. type {
  300. int_type_literal {
  301. }
  302. }
  303. }
  304. body {
  305. statements {
  306. return_expression_statement {
  307. expression {
  308. operator {
  309. op: Add
  310. arguments {
  311. operator {
  312. op: Add
  313. arguments {
  314. operator {
  315. op: Mul
  316. arguments {
  317. int_literal {
  318. value: 100
  319. }
  320. }
  321. arguments {
  322. identifier {
  323. name: "a"
  324. }
  325. }
  326. }
  327. }
  328. arguments {
  329. operator {
  330. op: Mul
  331. arguments {
  332. int_literal {
  333. value: 10
  334. }
  335. }
  336. arguments {
  337. identifier {
  338. name: "b"
  339. }
  340. }
  341. }
  342. }
  343. }
  344. }
  345. arguments {
  346. identifier {
  347. name: "c"
  348. }
  349. }
  350. }
  351. }
  352. }
  353. }
  354. }
  355. }
  356. }
  357. declarations {
  358. function {
  359. name {
  360. name: "Main"
  361. }
  362. param_pattern {
  363. }
  364. return_term {
  365. kind: Expression
  366. type {
  367. int_type_literal {
  368. }
  369. }
  370. }
  371. body {
  372. statements {
  373. variable_definition {
  374. pattern {
  375. binding_pattern {
  376. name: "i"
  377. type {
  378. expression_pattern {
  379. expression {
  380. identifier {
  381. name: "One"
  382. }
  383. }
  384. }
  385. }
  386. }
  387. }
  388. init {
  389. struct_literal {
  390. }
  391. }
  392. is_returned: false
  393. }
  394. }
  395. statements {
  396. variable_definition {
  397. pattern {
  398. binding_pattern {
  399. name: "ii"
  400. type {
  401. expression_pattern {
  402. expression {
  403. identifier {
  404. name: "Two"
  405. }
  406. }
  407. }
  408. }
  409. }
  410. }
  411. init {
  412. struct_literal {
  413. }
  414. }
  415. is_returned: false
  416. }
  417. }
  418. statements {
  419. variable_definition {
  420. pattern {
  421. binding_pattern {
  422. name: "iii"
  423. type {
  424. expression_pattern {
  425. expression {
  426. identifier {
  427. name: "N"
  428. }
  429. }
  430. }
  431. }
  432. }
  433. }
  434. init {
  435. struct_literal {
  436. fields {
  437. name: "n"
  438. expression {
  439. int_literal {
  440. value: 3
  441. }
  442. }
  443. }
  444. }
  445. }
  446. is_returned: false
  447. }
  448. }
  449. statements {
  450. return_expression_statement {
  451. expression {
  452. call {
  453. function {
  454. identifier {
  455. name: "Get"
  456. }
  457. }
  458. argument {
  459. tuple_literal {
  460. fields {
  461. identifier {
  462. name: "i"
  463. }
  464. }
  465. fields {
  466. identifier {
  467. name: "ii"
  468. }
  469. }
  470. fields {
  471. identifier {
  472. name: "iii"
  473. }
  474. }
  475. }
  476. }
  477. }
  478. }
  479. }
  480. }
  481. }
  482. }
  483. }
  484. }