@@ -1037,4 +1037,48 @@ trait TreeOps extends Core {
1037
1037
kernel.matchWildcardTypeTree(tree).isDefined
1038
1038
}
1039
1039
1040
+ // ----- CaseDefs ------------------------------------------------
1041
+
1042
+ implicit class CaseDefAPI (caseDef : CaseDef ) {
1043
+ def pattern (implicit ctx : Context ): Pattern = kernel.CaseDef_pattern (caseDef)
1044
+ def guard (implicit ctx : Context ): Option [Term ] = kernel.CaseDef_guard (caseDef)
1045
+ def rhs (implicit ctx : Context ): Term = kernel.CaseDef_rhs (caseDef)
1046
+ }
1047
+
1048
+ object IsCaseDef {
1049
+ def unapply (self : Tree )(implicit ctx : Context ): Option [CaseDef ] =
1050
+ kernel.matchCaseDef(self)
1051
+ }
1052
+
1053
+ object CaseDef {
1054
+ def apply (pattern : Pattern , guard : Option [Term ], rhs : Term )(implicit ctx : Context ): CaseDef =
1055
+ kernel.CaseDef_module_apply (pattern, guard, rhs)
1056
+
1057
+ def copy (original : CaseDef )(pattern : Pattern , guard : Option [Term ], rhs : Term )(implicit ctx : Context ): CaseDef =
1058
+ kernel.CaseDef_module_copy (original)(pattern, guard, rhs)
1059
+
1060
+ def unapply (tree : Tree )(implicit ctx : Context ): Option [(Pattern , Option [Term ], Term )] =
1061
+ kernel.matchCaseDef(tree).map( x => (x.pattern, x.guard, x.rhs))
1062
+ }
1063
+
1064
+ implicit class TypeCaseDefAPI (caseDef : TypeCaseDef ) {
1065
+ def pattern (implicit ctx : Context ): TypeTree = kernel.TypeCaseDef_pattern (caseDef)
1066
+ def rhs (implicit ctx : Context ): TypeTree = kernel.TypeCaseDef_rhs (caseDef)
1067
+ }
1068
+
1069
+ object IsTypeCaseDef {
1070
+ def unapply (self : Tree )(implicit ctx : Context ): Option [TypeCaseDef ] =
1071
+ kernel.matchTypeCaseDef(self)
1072
+ }
1073
+
1074
+ object TypeCaseDef {
1075
+ def apply (pattern : TypeTree , rhs : TypeTree )(implicit ctx : Context ): TypeCaseDef =
1076
+ kernel.TypeCaseDef_module_apply (pattern, rhs)
1077
+
1078
+ def copy (original : TypeCaseDef )(pattern : TypeTree , rhs : TypeTree )(implicit ctx : Context ): TypeCaseDef =
1079
+ kernel.TypeCaseDef_module_copy (original)(pattern, rhs)
1080
+
1081
+ def unapply (tree : Tree )(implicit ctx : Context ): Option [(TypeTree , TypeTree )] =
1082
+ kernel.matchTypeCaseDef(tree).map( x => (x.pattern, x.rhs))
1083
+ }
1040
1084
}
0 commit comments