summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi@dropbox.com>2014-11-28 23:37:10 -0800
committerLi Haoyi <haoyi@dropbox.com>2014-11-28 23:37:10 -0800
commit1d64aac5999cffd855df1cba1860d623735edf66 (patch)
treea5fb2d020ae27b2368da8b97762940cb9ca77904
parent1be904f49025b6ece40d73cf6949cddf9b7ccbbe (diff)
downloadhands-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.scala20
-rw-r--r--scalaParser/src/test/resources/test.scala4
-rw-r--r--scalaParser/src/test/scala/scalaParser/SyntaxTest.scala6
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(