diff options
-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( |