diff options
Diffstat (limited to 'scalaParser/src')
-rw-r--r-- | scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala | 7 | ||||
-rw-r--r-- | scalaParser/src/test/resources/test.scala | 13 | ||||
-rw-r--r-- | scalaParser/src/test/scala/scalaParser/SyntaxTest.scala | 27 |
3 files changed, 35 insertions, 12 deletions
diff --git a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala index 7770bca..f99e016 100644 --- a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala +++ b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala @@ -108,7 +108,8 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif OneNewlineMax ~ '{' ~ oneOrMore(RefineStat).separatedBy(Semi) ~ "}" } rule { - oneOrMore(AnnotType).separatedBy(K.W("with")) ~ optional(Refinement) + oneOrMore(AnnotType).separatedBy(K.W("with")) ~ optional(Refinement) | + Refinement } } def AnnotType = rule { @@ -304,7 +305,7 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif def TypeParamClause: R0 = { - def VariantTypeParam: R0 = rule { zeroOrMore(Annotation) ~ optional(anyOf("+-")) ~ TypeParam } + def VariantTypeParam: R0 = rule { zeroOrMore(Annotation) ~ optional(WL ~ anyOf("+-")) ~ TypeParam } rule { '[' ~ oneOrMore(VariantTypeParam).separatedBy(',') ~ ']' } } def FunTypeParamClause: R0 = rule { @@ -356,7 +357,7 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif def TemplateStat: R0 = rule { Import | zeroOrMore(Annotation ~ OneNewlineMax) ~ zeroOrMore(Modifier) ~ (Def | Dcl) | - Expr + Expr0(true) } def SelfType: R0 = rule { K.W("this") ~ K.O(":") ~ Type ~ K.O("=>") | Id ~ optional(K.O(":") ~ Type) ~ K.O("=>") } diff --git a/scalaParser/src/test/resources/test.scala b/scalaParser/src/test/resources/test.scala index 32bac45..69f1f1a 100644 --- a/scalaParser/src/test/resources/test.scala +++ b/scalaParser/src/test/resources/test.scala @@ -1,10 +1,5 @@ -object K{ - - def newBuilder = - new B - - @inline def a = 1 - - -} +object L{ + a.b = c + a().b = c +}
\ 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 997d8e0..abb17fe 100644 --- a/scalaParser/src/test/scala/scalaParser/SyntaxTest.scala +++ b/scalaParser/src/test/scala/scalaParser/SyntaxTest.scala @@ -568,6 +568,33 @@ object SyntaxTest extends TestSuite{ |} """.stripMargin ) + * - check( + """trait Function12[-T1, +R] + """.stripMargin + ) + * - check( + """@a // Don't do this at home! + |trait B + """.stripMargin + ) + * - check( + """object T{ + | type B = { def F: S } + |} + | + """.stripMargin + ) + * - check( + """ + |object ScalaJSBuild{ + | ( + | 1 / 2 + | / 3 + | ) + |} + | + """.stripMargin + ) } 'neg{ * - checkNeg( |