Report abuse


			
#hydra>cat adhoc/case_with_splat.rb
x =  case 'z'
     when *['a', 'b', 'c', 'd']
        "foo" 
     when *['x', 'y', 'z']
        "bar" 
     end

p x


#hydra>./shotgun/rubinius describe adhoc/case_with_splat.rb                                              
#Path: adhoc/case_with_splat.rb
#Size: 117 bytes

#Sexp:
  [:block, 
  [:newline, 1, "(eval)", 
    [:lasgn, :x, 0, 
      [:case, [:str, "z"], 
        [
          [:when, 
            [:array, 
              [:many_if, 
                [
                  [
                    [:array, [:str, "a"], [:str, "b"], 
                      [:str, "c"], 
                      [:str, "d"]
                    ], nil
                  ]
                ], nil
              ]
            ], 
            [:newline, 3, "(eval)", [:str, "foo"]]
          ], 
          [:when, 
            [:array, 
              [:many_if, 
                [
                  [
                    [:array, [:str, "x"], [:str, "y"], 
                      [:str, "z"]
                    ], nil
                  ]
                ], nil
              ]
            ], 
            [:newline, 5, "(eval)", [:str, "bar"]]
          ]
        ], nil
      ]
    ]
  ], 
  [:newline, 8, "(eval)", 
    [:fcall, :p, [:array, [:lvar, :x, 0]]]
  ]
]

#Normalized Sexp:
  [:block, 
  [:newline, 1, "(eval)", 
    [:lasgn, :x, 2, 
      [:case, [:str, "z"], 
        [
          [:when, 
            [:array, 
              [:if, [:str, "d"], [:block, nil], nil]
            ], 
            [:block, 
              [:newline, 3, "(eval)", [:str, "foo"]]
            ]
          ], 
          [:when, 
            [:array, 
              [:if, [:str, "z"], [:block, nil], nil]
            ], 
            [:block, 
              [:newline, 5, "(eval)", [:str, "bar"]]
            ]
          ]
        ], nil
      ]
    ]
  ], 
  [:newline, 8, "(eval)", 
    [:call, [:self], :p, [:array, [:lvar, :x, 2]], {:function=>true}]
  ]
]