@@ -717,15 +717,7 @@ object Parsers {
717
717
/** Same as [[typ ]], but if this results in a wildcard it emits a syntax error and
718
718
* returns a tree for type `Any` instead.
719
719
*/
720
- def toplevelTyp (): Tree = {
721
- val t = typ()
722
- findWildcardType(t) match {
723
- case Some (wildcardPos) =>
724
- syntaxError(UnboundWildcardType (), wildcardPos)
725
- scalaAny
726
- case None => t
727
- }
728
- }
720
+ def toplevelTyp (): Tree = checkWildcard(typ())
729
721
730
722
/** Type ::= [FunArgMods] FunArgTypes `=>' Type
731
723
* | HkTypeParamClause `->' Type
@@ -925,7 +917,7 @@ object Parsers {
925
917
else Nil
926
918
first :: rest
927
919
}
928
- def typParser () = if (wildOK) typ() else toplevelTyp( )
920
+ def typParser () = checkWildcard( typ(), wildOK )
929
921
if (namedOK && in.token == IDENTIFIER )
930
922
typParser() match {
931
923
case Ident (name) if in.token == EQUALS =>
@@ -1020,6 +1012,17 @@ object Parsers {
1020
1012
case _ => None
1021
1013
}
1022
1014
1015
+ def rejectWildcard (t : Tree , report : Position => Unit , fallbackTree : Tree ): Tree =
1016
+ findWildcardType(t) match {
1017
+ case Some (wildcardPos) =>
1018
+ report(wildcardPos)
1019
+ fallbackTree
1020
+ case None => t
1021
+ }
1022
+
1023
+ def checkWildcard (t : Tree , wildOK : Boolean = false , fallbackTree : Tree = scalaAny): Tree =
1024
+ if (wildOK) t else rejectWildcard(t, syntaxError(UnboundWildcardType (), _), fallbackTree)
1025
+
1023
1026
/* ----------- EXPRESSIONS ------------------------------------------------ */
1024
1027
1025
1028
/** EqualsExpr ::= `=' Expr
0 commit comments