54eba1cba056d1c06f5b3c12a126c9adfd9d528a 5.7 KB

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