@@ -99,7 +99,7 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
99
99
case class DoWhile (body : Tree , cond : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
100
100
case class ForYield (enums : List [Tree ], expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
101
101
case class ForDo (enums : List [Tree ], body : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
102
- case class GenFrom (pat : Tree , expr : Tree , filtering : Boolean )(implicit @ constructorOnly src : SourceFile ) extends Tree
102
+ case class GenFrom (pat : Tree , expr : Tree , checkMode : GenCheckMode )(implicit @ constructorOnly src : SourceFile ) extends Tree
103
103
case class GenAlias (pat : Tree , expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends Tree
104
104
case class ContextBounds (bounds : TypeBoundsTree , cxBounds : List [Tree ])(implicit @ constructorOnly src : SourceFile ) extends TypTree
105
105
case class PatDef (mods : Modifiers , pats : List [Tree ], tpt : Tree , rhs : Tree )(implicit @ constructorOnly src : SourceFile ) extends DefTree
@@ -116,6 +116,14 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
116
116
* `Positioned#checkPos` */
117
117
class XMLBlock (stats : List [Tree ], expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends Block (stats, expr)
118
118
119
+ /** An enum to control checking or filtering of patterns in GenFrom trees */
120
+ class GenCheckMode (val x : Int ) extends AnyVal
121
+ object GenCheckMode {
122
+ val Ignore = new GenCheckMode (0 ) // neither filter nor check since filtering was done before
123
+ val Check = new GenCheckMode (1 ) // check that pattern is irrefutable
124
+ val Filter = new GenCheckMode (2 ) // filter out non-matching elements
125
+ }
126
+
119
127
// ----- Modifiers -----------------------------------------------------
120
128
/** Mod is intended to record syntactic information about modifiers, it's
121
129
* NOT a replacement of FlagSet.
@@ -525,9 +533,9 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
525
533
case tree : ForDo if (enums eq tree.enums) && (body eq tree.body) => tree
526
534
case _ => finalize(tree, untpd.ForDo (enums, body)(tree.source))
527
535
}
528
- def GenFrom (tree : Tree )(pat : Tree , expr : Tree , filtering : Boolean )(implicit ctx : Context ): Tree = tree match {
529
- case tree : GenFrom if (pat eq tree.pat) && (expr eq tree.expr) && (filtering == tree.filtering ) => tree
530
- case _ => finalize(tree, untpd.GenFrom (pat, expr, filtering )(tree.source))
536
+ def GenFrom (tree : Tree )(pat : Tree , expr : Tree , checkMode : GenCheckMode )(implicit ctx : Context ): Tree = tree match {
537
+ case tree : GenFrom if (pat eq tree.pat) && (expr eq tree.expr) && (checkMode == tree.checkMode ) => tree
538
+ case _ => finalize(tree, untpd.GenFrom (pat, expr, checkMode )(tree.source))
531
539
}
532
540
def GenAlias (tree : Tree )(pat : Tree , expr : Tree )(implicit ctx : Context ): Tree = tree match {
533
541
case tree : GenAlias if (pat eq tree.pat) && (expr eq tree.expr) => tree
@@ -589,8 +597,8 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
589
597
cpy.ForYield (tree)(transform(enums), transform(expr))
590
598
case ForDo (enums, body) =>
591
599
cpy.ForDo (tree)(transform(enums), transform(body))
592
- case GenFrom (pat, expr, filtering ) =>
593
- cpy.GenFrom (tree)(transform(pat), transform(expr), filtering )
600
+ case GenFrom (pat, expr, checkMode ) =>
601
+ cpy.GenFrom (tree)(transform(pat), transform(expr), checkMode )
594
602
case GenAlias (pat, expr) =>
595
603
cpy.GenAlias (tree)(transform(pat), transform(expr))
596
604
case ContextBounds (bounds, cxBounds) =>
0 commit comments