aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/parsing/Parsers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-05-13 17:03:36 +0200
committerMartin Odersky <odersky@gmail.com>2014-05-30 14:34:33 +0200
commited1d5f310951715d95873c56f64195ac3ee45817 (patch)
tree755803d8e6badeac510de960b63ecec8fd2d6916 /src/dotty/tools/dotc/parsing/Parsers.scala
parent7bc5cd18ee4f881f223e9a317e6c6a329942d5af (diff)
downloaddotty-ed1d5f310951715d95873c56f64195ac3ee45817.tar.gz
dotty-ed1d5f310951715d95873c56f64195ac3ee45817.tar.bz2
dotty-ed1d5f310951715d95873c56f64195ac3ee45817.zip
Fix of pos/t2454
"_" type paraeters need to be given fresh names.
Diffstat (limited to 'src/dotty/tools/dotc/parsing/Parsers.scala')
-rw-r--r--src/dotty/tools/dotc/parsing/Parsers.scala11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala
index 7bc7d5516..0ad33a96c 100644
--- a/src/dotty/tools/dotc/parsing/Parsers.scala
+++ b/src/dotty/tools/dotc/parsing/Parsers.scala
@@ -447,10 +447,6 @@ object Parsers {
if (tok == BACKQUOTED_IDENT) BackquotedIdent(name)
else Ident(name)
- /** IdentOrWildcard ::= id | `_' */
- def identOrWildcard(): Name =
- if (in.token == USCORE) { in.nextToken(); nme.WILDCARD } else ident()
-
def wildcardIdent(): Ident =
atPos(accept(USCORE)) { Ident(nme.WILDCARD) }
@@ -1478,7 +1474,12 @@ object Parsers {
if (mods is VarianceFlags) in.nextToken()
}
atPos(tokenRange) {
- val name = (if (isConcreteOwner) ident() else identOrWildcard()).toTypeName
+ val name =
+ if (isConcreteOwner || in.token != USCORE) ident().toTypeName
+ else {
+ in.nextToken()
+ ctx.freshName(nme.USCORE_PARAM_PREFIX).toTypeName
+ }
val hkparams =
if (ownerKind == ParamOwner.TypeParam) Nil
else typeParamClauseOpt(ParamOwner.TypeParam)