18e4b0c01d7c2527f3a3d682b114ec5afe7d539b 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. compilation_unit {
  2. package_statement {
  3. package_name: "ExplorerTest"
  4. }
  5. is_api: true
  6. declarations {
  7. class_declaration {
  8. name {
  9. name: "Point"
  10. }
  11. members {
  12. variable {
  13. binding {
  14. name: "x"
  15. type {
  16. expression_pattern {
  17. expression {
  18. identifier {
  19. name: "T"
  20. }
  21. }
  22. }
  23. }
  24. }
  25. }
  26. }
  27. members {
  28. variable {
  29. binding {
  30. name: "y"
  31. type {
  32. expression_pattern {
  33. expression {
  34. identifier {
  35. name: "T"
  36. }
  37. }
  38. }
  39. }
  40. }
  41. }
  42. }
  43. type_params {
  44. fields {
  45. generic_binding {
  46. name: "T"
  47. type {
  48. type_type_literal {
  49. }
  50. }
  51. }
  52. }
  53. }
  54. }
  55. }
  56. declarations {
  57. function {
  58. name {
  59. name: "FirstOfTwoPoints"
  60. }
  61. deduced_parameters {
  62. name: "T"
  63. type {
  64. type_type_literal {
  65. }
  66. }
  67. }
  68. param_pattern {
  69. fields {
  70. binding_pattern {
  71. name: "a"
  72. type {
  73. expression_pattern {
  74. expression {
  75. call {
  76. function {
  77. identifier {
  78. name: "Point"
  79. }
  80. }
  81. argument {
  82. tuple_literal {
  83. fields {
  84. identifier {
  85. name: "T"
  86. }
  87. }
  88. }
  89. }
  90. }
  91. }
  92. }
  93. }
  94. }
  95. }
  96. fields {
  97. binding_pattern {
  98. name: "b"
  99. type {
  100. expression_pattern {
  101. expression {
  102. call {
  103. function {
  104. identifier {
  105. name: "Point"
  106. }
  107. }
  108. argument {
  109. tuple_literal {
  110. fields {
  111. identifier {
  112. name: "T"
  113. }
  114. }
  115. }
  116. }
  117. }
  118. }
  119. }
  120. }
  121. }
  122. }
  123. }
  124. return_term {
  125. kind: Expression
  126. type {
  127. call {
  128. function {
  129. identifier {
  130. name: "Point"
  131. }
  132. }
  133. argument {
  134. tuple_literal {
  135. fields {
  136. identifier {
  137. name: "T"
  138. }
  139. }
  140. }
  141. }
  142. }
  143. }
  144. }
  145. body {
  146. statements {
  147. return_expression_statement {
  148. expression {
  149. identifier {
  150. name: "a"
  151. }
  152. }
  153. }
  154. }
  155. }
  156. }
  157. }
  158. declarations {
  159. function {
  160. name {
  161. name: "Main"
  162. }
  163. param_pattern {
  164. }
  165. return_term {
  166. kind: Expression
  167. type {
  168. int_type_literal {
  169. }
  170. }
  171. }
  172. body {
  173. statements {
  174. variable_definition {
  175. pattern {
  176. binding_pattern {
  177. name: "p"
  178. type {
  179. expression_pattern {
  180. expression {
  181. call {
  182. function {
  183. identifier {
  184. name: "Point"
  185. }
  186. }
  187. argument {
  188. tuple_literal {
  189. fields {
  190. int_type_literal {
  191. }
  192. }
  193. }
  194. }
  195. }
  196. }
  197. }
  198. }
  199. }
  200. }
  201. init {
  202. struct_literal {
  203. fields {
  204. name: "x"
  205. expression {
  206. int_literal {
  207. value: 0
  208. }
  209. }
  210. }
  211. fields {
  212. name: "y"
  213. expression {
  214. int_literal {
  215. value: 1
  216. }
  217. }
  218. }
  219. }
  220. }
  221. is_returned: false
  222. }
  223. }
  224. statements {
  225. variable_definition {
  226. pattern {
  227. binding_pattern {
  228. name: "q"
  229. type {
  230. expression_pattern {
  231. expression {
  232. call {
  233. function {
  234. identifier {
  235. name: "Point"
  236. }
  237. }
  238. argument {
  239. tuple_literal {
  240. fields {
  241. bool_type_literal {
  242. }
  243. }
  244. }
  245. }
  246. }
  247. }
  248. }
  249. }
  250. }
  251. }
  252. init {
  253. struct_literal {
  254. fields {
  255. name: "x"
  256. expression {
  257. bool_literal {
  258. value: true
  259. }
  260. }
  261. }
  262. fields {
  263. name: "y"
  264. expression {
  265. bool_literal {
  266. value: false
  267. }
  268. }
  269. }
  270. }
  271. }
  272. is_returned: false
  273. }
  274. }
  275. statements {
  276. return_expression_statement {
  277. expression {
  278. simple_member_access {
  279. field: "x"
  280. object {
  281. call {
  282. function {
  283. identifier {
  284. name: "FirstOfTwoPoints"
  285. }
  286. }
  287. argument {
  288. tuple_literal {
  289. fields {
  290. identifier {
  291. name: "p"
  292. }
  293. }
  294. fields {
  295. identifier {
  296. name: "q"
  297. }
  298. }
  299. }
  300. }
  301. }
  302. }
  303. }
  304. }
  305. }
  306. }
  307. }
  308. }
  309. }
  310. }