diff options
Diffstat (limited to 'src/dotty/tools/dotc/parsing/Parsers.scala')
-rw-r--r-- | src/dotty/tools/dotc/parsing/Parsers.scala | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala index cbefb81fe..dd2c9bcaa 100644 --- a/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/src/dotty/tools/dotc/parsing/Parsers.scala @@ -754,17 +754,21 @@ object Parsers { if (in.token == ARROW) atPos(in.skipToken()) { ByNameTypeTree(argType()) } else argType() - /** ParamType ::= FunArgType | ArgType `*' + /** ParamType ::= [`=>'] ParamValueType */ def paramType(): Tree = - if (in.token == ARROW) funArgType() - else { - val t = argType() - if (isIdent(nme.raw.STAR)) { - in.nextToken() - atPos(t.pos.start) { PostfixOp(t, nme.raw.STAR) } - } else t - } + if (in.token == ARROW) atPos(in.skipToken()) { ByNameTypeTree(paramValueType()) } + else paramValueType() + + /** ParamValueType ::= Type [`*'] + */ + def paramValueType(): Tree = { + val t = typ() + if (isIdent(nme.raw.STAR)) { + in.nextToken() + atPos(t.pos.start) { PostfixOp(t, nme.raw.STAR) } + } else t + } /** TypeArgs ::= `[' ArgType {`,' ArgType} `]' */ |