diff options
author | Paul Phillips <paulp@improving.org> | 2013-01-25 07:48:11 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-01-25 07:48:11 -0800 |
commit | 4e27a23082cc0fefa1b73c9b1f180547794aa5ff (patch) | |
tree | 045c8c1d1b0ddf093acff7e860e083225c657d29 /test/files | |
parent | d33ed9cea2740241dee0e83f68134bb3cd36b69f (diff) | |
parent | d9d6494fa7704ebacfa74e92a964381895bbf8d4 (diff) | |
download | scala-4e27a23082cc0fefa1b73c9b1f180547794aa5ff.tar.gz scala-4e27a23082cc0fefa1b73c9b1f180547794aa5ff.tar.bz2 scala-4e27a23082cc0fefa1b73c9b1f180547794aa5ff.zip |
Merge pull request #1910 from retronym/ticket/6976
SI-6976 Fix value class separate compilation crasher.
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/pos/t6976/Exts_1.scala | 10 | ||||
-rw-r--r-- | test/files/pos/t6976/ImplicitBug_1.scala | 27 | ||||
-rw-r--r-- | test/files/pos/t6976/ImplicitBug_2.scala | 7 |
3 files changed, 44 insertions, 0 deletions
diff --git a/test/files/pos/t6976/Exts_1.scala b/test/files/pos/t6976/Exts_1.scala new file mode 100644 index 0000000000..9b3a69edd9 --- /dev/null +++ b/test/files/pos/t6976/Exts_1.scala @@ -0,0 +1,10 @@ +object Exts { + implicit class AnyExts[T](val o: T) extends AnyVal { + def moo = "moo!" + } +} + +trait Exts { + import language.implicitConversions + implicit def AnyExts[T](o: T) = Exts.AnyExts(o) +} diff --git a/test/files/pos/t6976/ImplicitBug_1.scala b/test/files/pos/t6976/ImplicitBug_1.scala new file mode 100644 index 0000000000..c9031bab2e --- /dev/null +++ b/test/files/pos/t6976/ImplicitBug_1.scala @@ -0,0 +1,27 @@ +// This one is weird and nasty. Not sure if this is scalac or sbt +// (tried with 0.12 & 0.12.2-RC2) bug. +// +// A level of indirection is required to trigger this bug. +// Exts seems to need to be defined in separate file. +// +// Steps to reproduce: +// 1. sbt clean +// 2. sbt run (it works) +// 3. Comment A & uncomment B. +// 4. sbt run (it fails) +// 5. Switch it back & sbt run. It still fails. +// +// In this project sbt clean helps. However in a large project where this +// bug was found compiler crashed even after doing sbt clean. The only +// way to work around this was to reference Exts object explicitly (C) in +// the source file using its implicit classes. + +// Lets suppose this is a mega-trait combining all sorts of helper +// functionality. +trait Support extends Exts + +object ImplicitsBug extends App with Support { // A +// object ImplicitsBug extends App with Exts { // B + //Exts // C) this reference helped in the large project. + println(3.moo) +} diff --git a/test/files/pos/t6976/ImplicitBug_2.scala b/test/files/pos/t6976/ImplicitBug_2.scala new file mode 100644 index 0000000000..2fea5e2993 --- /dev/null +++ b/test/files/pos/t6976/ImplicitBug_2.scala @@ -0,0 +1,7 @@ +trait Support extends Exts + +// object ImplicitsBug extends App with Support { // A +object ImplicitsBug extends App with Exts { // B + //Exts // C) this reference helped in the large project. + println(3.moo) +} |