From 1d64aac5999cffd855df1cba1860d623735edf66 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Fri, 28 Nov 2014 23:37:10 -0800 Subject: everything in scala/test passes --- .../src/main/scala/scalaParser/ScalaSyntax.scala | 20 ++++++++++++-------- scalaParser/src/test/resources/test.scala | 4 ++-- .../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( -- cgit v1.2.3