0e4dd54cbc641eb28c41d49f2e94d185a83bb36f 11 KB

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