diff options
author | Martin Odersky <odersky@gmail.com> | 2015-06-20 00:44:47 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-06-20 00:45:02 +0200 |
commit | 9a4b5e7c306eb3f1c82ace10dd62576473b1dec1 (patch) | |
tree | 9580b1faebdee6cd0a55cfba71526cb5046e3897 /tests/run/t8611b.scala | |
parent | c093792189f49c3e72ada99ca0fdb97e4023ef78 (diff) | |
download | dotty-9a4b5e7c306eb3f1c82ace10dd62576473b1dec1.tar.gz dotty-9a4b5e7c306eb3f1c82ace10dd62576473b1dec1.tar.bz2 dotty-9a4b5e7c306eb3f1c82ace10dd62576473b1dec1.zip |
Map outer fields to parameters in primary constructor
Previously this was only done in secondary constructors; need
to do it in primary constructor as well to avoid "reference to
this before super" problems.
Diffstat (limited to 'tests/run/t8611b.scala')
-rw-r--r-- | tests/run/t8611b.scala | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/run/t8611b.scala b/tests/run/t8611b.scala new file mode 100644 index 000000000..75114c2ae --- /dev/null +++ b/tests/run/t8611b.scala @@ -0,0 +1,54 @@ +sealed trait KrafsDescription + +abstract class NotWorkingEnum extends Enumeration { + + type ExtendedValue = Value with KrafsDescription + + def Enum(inDescription: String): ExtendedValue = { + new Val(nextId) with KrafsDescription { + } + } +} + +abstract class WorkingEnum extends Enumeration { + + type ExtendedValue = Value + + def Enum(inDescription: String): ExtendedValue = { + new Val(nextId) { + } + } +} + +object NotWorkingTab extends NotWorkingEnum { + val a = Enum("A") + val b = Enum("B") +} + +object WorkingTab extends WorkingEnum { + val a = Enum("A") + val b = Enum("B") +} + +object Test extends dotty.runtime.LegacyApp { + testGris() + testWorking() + + def testGris(): Unit = { + val pipp = NotWorkingTab.b + pipp match { + case NotWorkingTab.a => ??? + case NotWorkingTab.b => + case _ => ??? + } + } + + def testWorking(): Unit = { + val stuff = WorkingTab.a + stuff match { + case WorkingTab.a => + case WorkingTab.b => ??? + case _ => ??? + } + } +} |