@@ -110,6 +110,13 @@ trait QuotesAndSplices {
110
110
def typedSplicePattern (tree : untpd.SplicePattern , pt : Type )(using Context ): Tree = {
111
111
record(" typedSplicePattern" )
112
112
if isFullyDefined(pt, ForceDegree .flipBottom) then
113
+ val typedTypeargs = tree.typeargs.map {
114
+ case typearg : untpd.Ident =>
115
+ typedType(typearg)
116
+ case arg =>
117
+ report.error(" Open pattern expected an identifier" , arg.srcPos)
118
+ EmptyTree
119
+ }
113
120
val typedArgs = withMode(Mode .InQuotePatternHoasArgs ) {
114
121
tree.args.map {
115
122
case arg : untpd.Ident =>
@@ -119,20 +126,6 @@ trait QuotesAndSplices {
119
126
EmptyTree
120
127
}
121
128
}
122
- val typedTypeargs = tree.typeargs.map {
123
- case typearg : untpd.Ident =>
124
- val typedTypearg = typedType(typearg)
125
- /* TODO-18271: Allow type bounds?
126
- * (NOTE: Needs non-trivial extension to type system)
127
- */
128
- val bounds = ctx.gadt.fullBounds(typedTypearg.symbol)
129
- if bounds != null && bounds != TypeBounds .empty then
130
- report.error(" Type arguments to Open pattern are expected to have no bounds" , typearg.srcPos)
131
- typedTypearg
132
- case arg =>
133
- report.error(" Open pattern expected an identifier" , arg.srcPos)
134
- EmptyTree
135
- }
136
129
for arg <- typedArgs if arg.symbol.is(Mutable ) do // TODO support these patterns. Possibly using scala.quoted.util.Var
137
130
report.error(" References to `var`s cannot be used in higher-order pattern" , arg.srcPos)
138
131
val argTypes = typedArgs.map(_.tpe.widenTermRefExpr)
0 commit comments