d80a07a449e27a4ad393b26c15db6669670d1454 5.8 KB

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