aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/parsing/Parsers.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/parsing/Parsers.scala')
-rw-r--r--src/dotty/tools/dotc/parsing/Parsers.scala22
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} `]'
*/