@@ -699,6 +699,25 @@ object TreeChecker {
699
699
assert(! tree.expr.isInstanceOf [untpd.Quote ] || inInlineMethod, i " missed quote cancellation in $tree" )
700
700
super .typedSplice(tree, pt)
701
701
702
+ override def typedQuotePattern (tree : untpd.QuotePattern , pt : Type )(using Context ): Tree =
703
+ assert(ctx.mode.is(Mode .Pattern ))
704
+ for binding <- tree.bindings do
705
+ assert(binding.isInstanceOf [untpd.Bind ], i " expected Bind in QuotePattern bindings but was: $binding" )
706
+ super .typedQuotePattern(tree, pt)
707
+
708
+ override def typedSplicePattern (tree : untpd.SplicePattern , pt : Type )(using Context ): Tree =
709
+ assert(ctx.mode.is(Mode .QuotedPattern ))
710
+ def isAppliedIdent (rhs : untpd.Tree ): Boolean = rhs match
711
+ case _ : Ident => true
712
+ case rhs : GenericApply => isAppliedIdent(rhs.fun)
713
+ case _ => false
714
+ def isEtaExpandedIdent (arg : untpd.Tree ): Boolean = arg match
715
+ case closureDef(ddef) => isAppliedIdent(ddef.rhs)
716
+ case _ => false
717
+ for arg <- tree.args do
718
+ assert(arg.isInstanceOf [untpd.Ident ] || isEtaExpandedIdent(arg), i " expected Ident SplicePattern args but was: $arg" )
719
+ super .typedSplicePattern(tree, pt)
720
+
702
721
override def typedHole (tree : untpd.Hole , pt : Type )(using Context ): Tree = {
703
722
val tree1 @ Hole (isTerm, idx, args, content) = super .typedHole(tree, pt): @ unchecked
704
723
0 commit comments