summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-09-30 15:41:03 +0200
committerAdriaan Moors <adriaan@lightbend.com>2016-09-30 16:10:05 -0700
commit0e0614c866526d8922a34e3aab1afc64d7b4f01c (patch)
tree6cd286aa256ccfe4e58ae4a8f2e4c2e2e9e9c6de /src
parent759b0daaf448f08f3233ee5fdaa3bc29f0732dfc (diff)
downloadscala-0e0614c866526d8922a34e3aab1afc64d7b4f01c.tar.gz
scala-0e0614c866526d8922a34e3aab1afc64d7b4f01c.tar.bz2
scala-0e0614c866526d8922a34e3aab1afc64d7b4f01c.zip
Default -Xmixin-force-forwarders to true
Also eliminates the warning when a mixin forwarder cannot be implemented because the target method is a java-defined default method in an interface that is not a direct parent of the class. The test t5148 is moved to neg, as expected: It was moved to pos when disabling mixin forwarders in 33e7106. Same for the changed error message in t4749.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/settings/ScalaSettings.scala4
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala9
2 files changed, 7 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala b/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
index e10fa3a114..4f0a4c8a46 100644
--- a/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
+++ b/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
@@ -139,7 +139,7 @@ trait ScalaSettings extends AbsScalaSettings
helpArg = "mode",
descr = "Generate forwarder methods in classes inhering concrete methods from traits.",
choices = List("true", "junit", "false"),
- default = "junit",
+ default = "true",
choicesHelp = List(
"Always generate mixin forwarders.",
"Generate mixin forwarders for JUnit-annotated methods (JUnit 4 does not support default methods).",
@@ -147,7 +147,7 @@ trait ScalaSettings extends AbsScalaSettings
object mixinForwarderChoices {
def isTruthy = XmixinForceForwarders.value == "true"
- def isJunit = isTruthy || XmixinForceForwarders.value == "junit"
+ def isAtLeastJunit = isTruthy || XmixinForceForwarders.value == "junit"
}
// XML parsing options
diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala
index 582c51b90d..1c27cee5d2 100644
--- a/src/compiler/scala/tools/nsc/transform/Mixin.scala
+++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala
@@ -218,9 +218,10 @@ abstract class Mixin extends InfoTransform with ast.TreeDSL with AccessorSynthes
def genForwarder(required: Boolean): Unit = {
val owner = member.owner
if (owner.isJavaDefined && owner.isInterface && !clazz.parentSymbols.contains(owner)) {
- val text = s"Unable to implement a mixin forwarder for $member in $clazz unless interface ${owner.name} is directly extended by $clazz."
- if (required) reporter.error(clazz.pos, text)
- else warning(clazz.pos, text)
+ if (required) {
+ val text = s"Unable to implement a mixin forwarder for $member in $clazz unless interface ${owner.name} is directly extended by $clazz."
+ reporter.error(clazz.pos, text)
+ }
} else
cloneAndAddMixinMember(mixinClass, member).asInstanceOf[TermSymbol] setAlias member
}
@@ -259,7 +260,7 @@ abstract class Mixin extends InfoTransform with ast.TreeDSL with AccessorSynthes
}
def generateJUnitForwarder: Boolean = {
- settings.mixinForwarderChoices.isJunit &&
+ settings.mixinForwarderChoices.isAtLeastJunit &&
member.annotations.nonEmpty &&
JUnitAnnotations.exists(annot => annot.exists && member.hasAnnotation(annot))
}