use Red::AST; use Red::AST::Unary; use Red::AST::Infixes; use Red::AST::Value; #| Represents a case statement unit class Red::AST::Case does Red::AST; #also does Red::AST::Optimizer::Case; has Red::AST $.case; has Red::AST %.when{Red::AST}; has Red::AST $.else; multi method new(Red::AST :$case, Red::AST :%when, Red::AST :$else is copy) { my \case-ret = self.optimize: :$case, :%when, :$else; return case-ret if case-ret.DEFINITE && case-ret !~~ Empty; self.WHAT.bless: :$case, :%when, :$else } method args { $!case, |%!when.kv, $!else } method returns { #%!when.head.value.returns } method find-column-name {}