summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-11-07 11:42:04 +1000
committerJason Zaugg <jzaugg@gmail.com>2014-11-07 11:42:04 +1000
commitb1e6f57b2be7ba986927c798d2fb9687b48fe61c (patch)
tree5467615d87dc72501144aa4915a27efd6e3589be
parent7830b4689a5f9962011f117c9b866a939795e58a (diff)
parent4a22b918ff938b7c627647e4ed5e74f539e62baa (diff)
downloadscala-b1e6f57b2be7ba986927c798d2fb9687b48fe61c.tar.gz
scala-b1e6f57b2be7ba986927c798d2fb9687b48fe61c.tar.bz2
scala-b1e6f57b2be7ba986927c798d2fb9687b48fe61c.zip
Merge pull request #4096 from retronym/ticket/7019
SI-7019 Fix crasher with private[this] extension methods
-rw-r--r--src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala2
-rw-r--r--test/files/run/t7019.scala10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala b/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
index 228c9da624..116047a2ad 100644
--- a/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
+++ b/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
@@ -208,7 +208,7 @@ abstract class ExtensionMethods extends Transform with TypingTransformers {
def makeExtensionMethodSymbol = {
val extensionName = extensionNames(origMeth).head.toTermName
val extensionMeth = (
- companion.moduleClass.newMethod(extensionName, tree.pos.focus, origMeth.flags & ~OVERRIDE & ~PROTECTED | FINAL)
+ companion.moduleClass.newMethod(extensionName, tree.pos.focus, origMeth.flags & ~OVERRIDE & ~PROTECTED & ~LOCAL | FINAL)
setAnnotations origMeth.annotations
)
origMeth.removeAnnotation(TailrecClass) // it's on the extension method, now.
diff --git a/test/files/run/t7019.scala b/test/files/run/t7019.scala
new file mode 100644
index 0000000000..5dcc09d2b6
--- /dev/null
+++ b/test/files/run/t7019.scala
@@ -0,0 +1,10 @@
+final class Foo(val i: Int) extends AnyVal {
+ def foo() = go(i)
+ private[this] def go(i: Int) = i * 2
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ assert(new Foo(1).foo() == 2)
+ }
+}