@@ -413,6 +413,14 @@ object Parsers {
413
413
finally inEnum = saved
414
414
}
415
415
416
+ private var inTypeMatchPattern = false
417
+ private def withinTypeMatchPattern [T ](body : => T ): T = {
418
+ val saved = inTypeMatchPattern
419
+ inTypeMatchPattern = true
420
+ try body
421
+ finally inTypeMatchPattern = saved
422
+ }
423
+
416
424
private var staged = StageKind .None
417
425
def withinStaged [T ](kind : StageKind )(op : => T ): T = {
418
426
val saved = staged
@@ -1862,7 +1870,7 @@ object Parsers {
1862
1870
val start = in.skipToken()
1863
1871
Ident (tpnme.USCOREkw ).withSpan(Span (start, in.lastOffset, start))
1864
1872
else
1865
- if sourceVersion.isAtLeast(future) then
1873
+ if ! inTypeMatchPattern && sourceVersion.isAtLeast(future) then
1866
1874
deprecationWarning(em " `_` is deprecated for wildcard arguments of types: use `?` instead " )
1867
1875
patch(source, Span (in.offset, in.offset + 1 ), " ?" )
1868
1876
val start = in.skipToken()
@@ -2898,7 +2906,7 @@ object Parsers {
2898
2906
val start = in.skipToken()
2899
2907
Ident (tpnme.WILDCARD ).withSpan(Span (start, in.lastOffset, start))
2900
2908
case _ =>
2901
- rejectWildcardType(infixType())
2909
+ withinTypeMatchPattern( rejectWildcardType(infixType() ))
2902
2910
}
2903
2911
}
2904
2912
CaseDef (pat, EmptyTree , atSpan(accept(ARROW )) {
0 commit comments