module SyntaxTrees.Scala.Pattern where import SyntaxTrees.Scala.Common (Literal, QCtor, QCtorOp, Var) import Utils.String data Pattern = CtorPattern { Pattern -> QCtor ctor :: QCtor , Pattern -> [Pattern] fields :: [Pattern] } | InfixCtorPattern { Pattern -> QCtorOp ctorOp :: QCtorOp , fields :: [Pattern] } | AliasedPattern Var Pattern | TuplePattern [Pattern] | VarPattern Var | LitPattern Literal | Wildcard instance Show Pattern where show :: Pattern -> String show (CtorPattern QCtor x [Pattern] y) = forall a. Show a => a -> String show QCtor x String -> ShowS +++ forall a. Show a => [a] -> String wrapParensCsv [Pattern] y show (InfixCtorPattern QCtorOp x [Pattern] y) = forall a. Show a => String -> [a] -> String str (ShowS wrapSpaces forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show QCtorOp x) [Pattern] y show (AliasedPattern Var x Pattern y) = ShowS wrapParens forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> String show Var x String -> ShowS +++ String "@" String -> ShowS +++ forall a. Show a => a -> String show Pattern y show (TuplePattern [Pattern x]) = forall a. Show a => a -> String show Pattern x show (TuplePattern [Pattern] x) = forall a. Show a => [a] -> String wrapParensCsv [Pattern] x show (VarPattern Var x) = forall a. Show a => a -> String show Var x show (LitPattern Literal x) = forall a. Show a => a -> String show Literal x show Pattern Wildcard = String "_"