2df8a45807e01a85bd980ac9aafa9f12eebb6fc5 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. compilation_unit {
  2. package_statement {
  3. package_name: "ExplorerTest"
  4. }
  5. is_api: true
  6. declarations {
  7. class_declaration {
  8. name {
  9. name: "A"
  10. }
  11. members {
  12. variable {
  13. binding {
  14. name: "n"
  15. type {
  16. expression_pattern {
  17. expression {
  18. int_type_literal {
  19. }
  20. }
  21. }
  22. }
  23. }
  24. }
  25. }
  26. }
  27. }
  28. declarations {
  29. impl {
  30. kind: ExternalImpl
  31. impl_type {
  32. identifier {
  33. name: "A"
  34. }
  35. }
  36. interface {
  37. where {
  38. base {
  39. identifier {
  40. name: "Negate"
  41. }
  42. }
  43. clauses {
  44. rewrite {
  45. member_name: "Result"
  46. replacement {
  47. identifier {
  48. name: "A"
  49. }
  50. }
  51. }
  52. }
  53. }
  54. }
  55. members {
  56. function {
  57. name {
  58. name: "Op"
  59. }
  60. self_pattern {
  61. binding_pattern {
  62. name: "self"
  63. type {
  64. expression_pattern {
  65. expression {
  66. identifier {
  67. name: "Self"
  68. }
  69. }
  70. }
  71. }
  72. }
  73. }
  74. param_pattern {
  75. }
  76. return_term {
  77. kind: Expression
  78. type {
  79. identifier {
  80. name: "A"
  81. }
  82. }
  83. }
  84. body {
  85. statements {
  86. return_expression_statement {
  87. expression {
  88. struct_literal {
  89. fields {
  90. name: "n"
  91. expression {
  92. operator {
  93. op: Neg
  94. arguments {
  95. simple_member_access {
  96. field: "n"
  97. object {
  98. identifier {
  99. name: "self"
  100. }
  101. }
  102. }
  103. }
  104. }
  105. }
  106. }
  107. }
  108. }
  109. }
  110. }
  111. }
  112. }
  113. }
  114. }
  115. }
  116. declarations {
  117. function {
  118. name {
  119. name: "Main"
  120. }
  121. param_pattern {
  122. }
  123. return_term {
  124. kind: Expression
  125. type {
  126. int_type_literal {
  127. }
  128. }
  129. }
  130. body {
  131. statements {
  132. variable_definition {
  133. pattern {
  134. binding_pattern {
  135. name: "a"
  136. type {
  137. expression_pattern {
  138. expression {
  139. identifier {
  140. name: "A"
  141. }
  142. }
  143. }
  144. }
  145. }
  146. }
  147. init {
  148. struct_literal {
  149. fields {
  150. name: "n"
  151. expression {
  152. int_literal {
  153. value: 5
  154. }
  155. }
  156. }
  157. }
  158. }
  159. is_returned: false
  160. }
  161. }
  162. statements {
  163. assign {
  164. lhs {
  165. identifier {
  166. name: "a"
  167. }
  168. }
  169. rhs {
  170. operator {
  171. op: Neg
  172. arguments {
  173. identifier {
  174. name: "a"
  175. }
  176. }
  177. }
  178. }
  179. op: Plain
  180. }
  181. }
  182. statements {
  183. return_expression_statement {
  184. expression {
  185. simple_member_access {
  186. field: "n"
  187. object {
  188. identifier {
  189. name: "a"
  190. }
  191. }
  192. }
  193. }
  194. }
  195. }
  196. }
  197. }
  198. }
  199. }