ecdf063b10b4bdc553fef70d25dea4017bd7e895 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. compilation_unit {
  2. package_statement {
  3. package_name: "ExplorerTest"
  4. }
  5. is_api: true
  6. declarations {
  7. interface {
  8. name {
  9. name: "HasTypeAndValue"
  10. }
  11. members {
  12. let {
  13. pattern {
  14. generic_binding {
  15. name: "T"
  16. type {
  17. type_type_literal {
  18. }
  19. }
  20. }
  21. }
  22. }
  23. }
  24. members {
  25. let {
  26. pattern {
  27. generic_binding {
  28. name: "V"
  29. type {
  30. identifier {
  31. name: "T"
  32. }
  33. }
  34. }
  35. }
  36. }
  37. }
  38. }
  39. }
  40. declarations {
  41. function {
  42. name {
  43. name: "F"
  44. }
  45. param_pattern {
  46. fields {
  47. generic_binding {
  48. name: "X"
  49. type {
  50. where {
  51. base {
  52. identifier {
  53. name: "HasTypeAndValue"
  54. }
  55. }
  56. clauses {
  57. rewrite {
  58. member_name: "T"
  59. replacement {
  60. int_type_literal {
  61. }
  62. }
  63. }
  64. }
  65. clauses {
  66. rewrite {
  67. member_name: "V"
  68. replacement {
  69. int_literal {
  70. value: 5
  71. }
  72. }
  73. }
  74. }
  75. }
  76. }
  77. }
  78. }
  79. }
  80. return_term {
  81. kind: Expression
  82. type {
  83. int_type_literal {
  84. }
  85. }
  86. }
  87. body {
  88. statements {
  89. return_expression_statement {
  90. expression {
  91. simple_member_access {
  92. field: "V"
  93. object {
  94. identifier {
  95. name: "X"
  96. }
  97. }
  98. }
  99. }
  100. }
  101. }
  102. }
  103. }
  104. }
  105. declarations {
  106. impl {
  107. kind: InternalImpl
  108. impl_type {
  109. int_type_literal {
  110. }
  111. }
  112. interface {
  113. where {
  114. base {
  115. identifier {
  116. name: "HasTypeAndValue"
  117. }
  118. }
  119. clauses {
  120. rewrite {
  121. member_name: "T"
  122. replacement {
  123. int_type_literal {
  124. }
  125. }
  126. }
  127. }
  128. clauses {
  129. rewrite {
  130. member_name: "V"
  131. replacement {
  132. int_literal {
  133. value: 5
  134. }
  135. }
  136. }
  137. }
  138. }
  139. }
  140. }
  141. }
  142. declarations {
  143. function {
  144. name {
  145. name: "Main"
  146. }
  147. param_pattern {
  148. }
  149. return_term {
  150. kind: Expression
  151. type {
  152. int_type_literal {
  153. }
  154. }
  155. }
  156. body {
  157. statements {
  158. return_expression_statement {
  159. expression {
  160. call {
  161. function {
  162. identifier {
  163. name: "F"
  164. }
  165. }
  166. argument {
  167. tuple_literal {
  168. fields {
  169. int_type_literal {
  170. }
  171. }
  172. }
  173. }
  174. }
  175. }
  176. }
  177. }
  178. }
  179. }
  180. }
  181. }