match_int.golden 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. ********** source program **********
  2. fn main () -> Int {
  3. var auto: t = 5;
  4. match (t) {
  5. case 5 =>
  6. return 0;
  7. case auto: _ =>
  8. return 1;
  9. }
  10. }
  11. ********** type checking **********
  12. --- step exp Int --->
  13. --- step exp Int --->
  14. --- step exp auto --->
  15. --- step exp auto --->
  16. ********** type checking complete **********
  17. fn main () -> Int {
  18. var auto: t = 5;
  19. match (t) {
  20. case 5 =>
  21. return 0;
  22. case auto: _ =>
  23. return 1;
  24. }
  25. }
  26. ********** starting execution **********
  27. ********** initializing globals **********
  28. --- step exp () --->
  29. ********** calling main function **********
  30. {
  31. stack: top{main()<-1>}
  32. heap: fun<main>,
  33. env: main: fun<main>,
  34. }
  35. --- step exp main() --->
  36. {
  37. stack: top{main<-1> :: main()<0>}
  38. heap: fun<main>,
  39. env: main: fun<main>,
  40. }
  41. --- step exp main --->
  42. {
  43. stack: top{fun<main><-1> :: main()<0>}
  44. heap: fun<main>,
  45. env: main: fun<main>,
  46. }
  47. --- handle value fun<main> with main()<1>(fun<main>,) --->
  48. {
  49. stack: top{()<-1> :: main()<1>(fun<main>,)}
  50. heap: fun<main>,
  51. env: main: fun<main>,
  52. }
  53. --- step exp () --->
  54. {
  55. stack: top{()<-1> :: main()<1>(fun<main>,)}
  56. heap: fun<main>,
  57. env: main: fun<main>,
  58. }
  59. --- handle value () with main()<2>(fun<main>,(),) --->
  60. pattern_match((), ())
  61. {
  62. stack: main{var auto: t = 5; ... <-1>} :: top{}
  63. heap: fun<main>,
  64. env: main: fun<main>,
  65. }
  66. --- step stmt var auto: t = 5; ... --->
  67. {
  68. stack: main{var auto: t = 5;<-1> :: match (t) {...}<-1>} :: top{}
  69. heap: fun<main>,
  70. env: main: fun<main>,
  71. }
  72. --- step stmt var auto: t = 5; --->
  73. {
  74. stack: main{5<-1> :: var auto: t = 5;<0> :: match (t) {...}<-1>} :: top{}
  75. heap: fun<main>,
  76. env: main: fun<main>,
  77. }
  78. --- step exp 5 --->
  79. {
  80. stack: main{5<-1> :: var auto: t = 5;<0> :: match (t) {...}<-1>} :: top{}
  81. heap: fun<main>,
  82. env: main: fun<main>,
  83. }
  84. --- handle value 5 with var auto: t = 5;<1>(5,) --->
  85. {
  86. stack: main{auto: t<-1> :: var auto: t = 5;<1>(5,) :: match (t) {...}<-1>} :: top{}
  87. heap: fun<main>,
  88. env: main: fun<main>,
  89. }
  90. --- step exp auto: t --->
  91. {
  92. stack: main{auto<-1> :: auto: t<0> :: var auto: t = 5;<1>(5,) :: match (t) {...}<-1>} :: top{}
  93. heap: fun<main>,
  94. env: main: fun<main>,
  95. }
  96. --- step exp auto --->
  97. {
  98. stack: main{auto<-1> :: auto: t<0> :: var auto: t = 5;<1>(5,) :: match (t) {...}<-1>} :: top{}
  99. heap: fun<main>,
  100. env: main: fun<main>,
  101. }
  102. --- handle value auto with auto: t<1>(auto,) --->
  103. {
  104. stack: main{auto: t<-1> :: var auto: t = 5;<1>(5,) :: match (t) {...}<-1>} :: top{}
  105. heap: fun<main>,
  106. env: main: fun<main>,
  107. }
  108. --- handle value auto: t with var auto: t = 5;<2>(5,auto: t,) --->
  109. pattern_match(auto: t, 5)
  110. {
  111. stack: main{match (t) {...}<-1>} :: top{}
  112. heap: fun<main>, 5,
  113. env: t: 5, main: fun<main>,
  114. }
  115. --- step stmt match (t) {...} --->
  116. {
  117. stack: main{t<-1> :: match (t) {...}<0>} :: top{}
  118. heap: fun<main>, 5,
  119. env: t: 5, main: fun<main>,
  120. }
  121. --- step exp t --->
  122. {
  123. stack: main{5<-1> :: match (t) {...}<0>} :: top{}
  124. heap: fun<main>, 5,
  125. env: t: 5, main: fun<main>,
  126. }
  127. --- handle value 5 with match (t) {...}<1>(5,) --->
  128. {
  129. stack: main{5<-1> :: match (t) {...}<1>(5,)} :: top{}
  130. heap: fun<main>, 5,
  131. env: t: 5, main: fun<main>,
  132. }
  133. --- step exp 5 --->
  134. {
  135. stack: main{5<-1> :: match (t) {...}<1>(5,)} :: top{}
  136. heap: fun<main>, 5,
  137. env: t: 5, main: fun<main>,
  138. }
  139. --- handle value 5 with match (t) {...}<2>(5,5,) --->
  140. pattern_match(5, 5)
  141. {
  142. stack: main{return 0;<-1> :: {
  143. ...
  144. }
  145. <0>} :: top{}
  146. heap: fun<main>, 5,
  147. env: t: 5, main: fun<main>,
  148. }
  149. --- step stmt return 0; --->
  150. {
  151. stack: main{0<-1> :: return 0;<0> :: {
  152. ...
  153. }
  154. <0>} :: top{}
  155. heap: fun<main>, 5,
  156. env: t: 5, main: fun<main>,
  157. }
  158. --- step exp 0 --->
  159. {
  160. stack: main{0<-1> :: return 0;<0> :: {
  161. ...
  162. }
  163. <0>} :: top{}
  164. heap: fun<main>, 5,
  165. env: t: 5, main: fun<main>,
  166. }
  167. --- handle value 0 with return 0;<1>(0,) --->
  168. {
  169. stack: top{0<-1>}
  170. heap: fun<main>, !!5,
  171. env: main: fun<main>,
  172. }
  173. result: 0