diff options
author | Martin Odersky <odersky@gmail.com> | 2016-06-29 19:02:34 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-07-11 13:34:58 +0200 |
commit | cdb4a1cb986f25eddf411dfc45aeb20dd994f7d5 (patch) | |
tree | ba9c96c271418ec09c4b39adad8ebdbf7b81f4fa /src/dotty/tools/dotc/parsing/Parsers.scala | |
parent | 5d0318681f8c368f04796da5dd11ee1c9fcbdbd0 (diff) | |
download | dotty-cdb4a1cb986f25eddf411dfc45aeb20dd994f7d5.tar.gz dotty-cdb4a1cb986f25eddf411dfc45aeb20dd994f7d5.tar.bz2 dotty-cdb4a1cb986f25eddf411dfc45aeb20dd994f7d5.zip |
New type lambda scheme for hk types
Diffstat (limited to 'src/dotty/tools/dotc/parsing/Parsers.scala')
-rw-r--r-- | src/dotty/tools/dotc/parsing/Parsers.scala | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala index ded17c67c..0cc392bad 100644 --- a/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/src/dotty/tools/dotc/parsing/Parsers.scala @@ -223,7 +223,9 @@ object Parsers { } // DEBUG private def expectedMsg(token: Int): String = - showToken(token) + " expected but " + showToken(in.token) + " found." + expectedMessage(showToken(token)) + private def expectedMessage(what: String): String = + s"$what expected but ${showToken(in.token)} found" /** Consume one token of the specified type, or * signal an error if it is not there. @@ -648,6 +650,7 @@ object Parsers { /* ------------- TYPES ------------------------------------------------------ */ /** Type ::= FunArgTypes `=>' Type + * | HkTypeParamClause `->' Type * | InfixType * FunArgTypes ::= InfixType * | `(' [ FunArgType {`,' FunArgType } ] `)' @@ -677,6 +680,12 @@ object Parsers { } } } + else if (in.token == LBRACKET) { + val tparams = typeParamClause(ParamOwner.TypeParam) + if (isIdent && in.name.toString == "->") + atPos(in.skipToken())(TypeLambdaTree(tparams, typ())) + else { syntaxErrorOrIncomplete(expectedMessage("`->'")); typ() } + } else infixType() in.token match { |