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 | |
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
-rw-r--r-- | scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala | 20 | ||||
-rw-r--r-- | scalaParser/src/test/resources/test.scala | 4 | ||||
-rw-r--r-- | scalaParser/src/test/scala/scalaParser/SyntaxTest.scala | 6 |
3 files changed, 20 insertions, 10 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)) } diff --git a/scalaParser/src/test/resources/test.scala b/scalaParser/src/test/resources/test.scala index 5ac0b8e..5e7a009 100644 --- a/scalaParser/src/test/resources/test.scala +++ b/scalaParser/src/test/resources/test.scala @@ -1,4 +1,4 @@ -object Sessions { - In{z: @serialized => System.out.println(z)} +object Test { + def t1: M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[Inty @unchecked]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] = x }
\ No newline at end of file diff --git a/scalaParser/src/test/scala/scalaParser/SyntaxTest.scala b/scalaParser/src/test/scala/scalaParser/SyntaxTest.scala index 78103c5..2a324bb 100644 --- a/scalaParser/src/test/scala/scalaParser/SyntaxTest.scala +++ b/scalaParser/src/test/scala/scalaParser/SyntaxTest.scala @@ -778,6 +778,12 @@ object SyntaxTest extends TestSuite{ |} """.stripMargin ) + * - check( + """object Test { + | def t1: M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[Inty @unchecked]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] = x + |} + """.stripMargin + ) } 'neg{ * - checkNeg( |