diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-28 23:37:10 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-28 23:37:10 -0800 |
commit | 1d64aac5999cffd855df1cba1860d623735edf66 (patch) | |
tree | a5fb2d020ae27b2368da8b97762940cb9ca77904 /scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala | |
parent | 1be904f49025b6ece40d73cf6949cddf9b7ccbbe (diff) | |
download | hands-on-scala-js-1d64aac5999cffd855df1cba1860d623735edf66.tar.gz hands-on-scala-js-1d64aac5999cffd855df1cba1860d623735edf66.tar.bz2 hands-on-scala-js-1d64aac5999cffd855df1cba1860d623735edf66.zip |
everything in scala/test passes
Diffstat (limited to 'scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala')
-rw-r--r-- | scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala index 644c545..29bff1e 100644 --- a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala +++ b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala @@ -101,12 +101,18 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif "forSome" ~ '{' ~ oneOrMore(ExistentialDcl).separatedBy(Semi) ~ '}' } def Type: R0 = { - def WildcardType: R0 = rule{ `_` } - + def FunctionArgTypes = rule { + '(' ~ optional(oneOrMore(ParamType) separatedBy ',') ~ ')' + } rule { - (WildcardType | - FunctionArgTypes ~ `=>` ~ Type | - InfixType ~ optional(ExistentialClause)) ~ TypeBounds + ( + `_` | + FunctionArgTypes ~ `=>` ~ Type | + InfixType ~ ( + `=>` ~ Type | + optional(ExistentialClause) + ) + ) ~ TypeBounds } } @@ -138,9 +144,7 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif def TypePat = rule { CompoundType } - def FunctionArgTypes = rule { - InfixType | '(' ~ optional(oneOrMore(ParamType) separatedBy ',') ~ ')' - } + def Ascription = rule { ":" ~ ("_" ~ "*" | Type | oneOrMore(Annotation)) } |