summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala8
-rw-r--r--src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala2
-rw-r--r--test/files/scalacheck/quasiquotes/DefinitionConstructionProps.scala6
3 files changed, 11 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index 3542fe5945..9e631febee 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -3096,10 +3096,6 @@ self =>
stats ++= importClause()
acceptStatSepOpt()
}
- else if (isExprIntro) {
- stats += statement(InBlock)
- if (!isCaseDefEnd) acceptStatSep()
- }
else if (isDefIntro || isLocalModifier || isAnnotation) {
if (in.token == IMPLICIT) {
val start = in.skipToken()
@@ -3110,6 +3106,10 @@ self =>
}
acceptStatSepOpt()
}
+ else if (isExprIntro) {
+ stats += statement(InBlock)
+ if (!isCaseDefEnd) acceptStatSep()
+ }
else if (isStatSep) {
in.nextToken()
}
diff --git a/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala b/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala
index 3b93a8933d..a788a5edc2 100644
--- a/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala
+++ b/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala
@@ -118,6 +118,8 @@ trait Parsers { self: Quasiquotes =>
override def isTemplateIntro: Boolean = super.isTemplateIntro || (isHole && lookingAhead { isTemplateIntro })
+ override def isDefIntro: Boolean = super.isDefIntro || (isHole && lookingAhead { isDefIntro })
+
override def isDclIntro: Boolean = super.isDclIntro || (isHole && lookingAhead { isDclIntro })
override def isStatSep(token: Int) = token == EOF || super.isStatSep(token)
diff --git a/test/files/scalacheck/quasiquotes/DefinitionConstructionProps.scala b/test/files/scalacheck/quasiquotes/DefinitionConstructionProps.scala
index fdb0d83277..c6ad453c45 100644
--- a/test/files/scalacheck/quasiquotes/DefinitionConstructionProps.scala
+++ b/test/files/scalacheck/quasiquotes/DefinitionConstructionProps.scala
@@ -9,7 +9,7 @@ object DefinitionConstructionProps
with ValDefConstruction
with PatDefConstruction
with DefConstruction
- with PackageConstruction
+ with PackageConstruction
with ImportConstruction {
val x: Tree = q"val x: Int"
@@ -81,6 +81,10 @@ trait ClassConstruction { self: QuasiquoteProperties =>
assertEqAst(q" class C($privx)", " class C(x: Int) ")
assertEqAst(q"case class C($privx)", "case class C(private[this] val x: Int)")
}
+
+ property("SI-8333") = test {
+ assertEqAst(q"{ $NoMods class C }", "{ class C }")
+ }
}
trait TraitConstruction { self: QuasiquoteProperties =>