diff options
author | Martin Odersky <odersky@gmail.com> | 2014-03-09 13:35:33 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-03-09 13:39:22 +0100 |
commit | af337f0667fa559411f9a96355b9ceeabf95b232 (patch) | |
tree | 25d3e9e7c55b9adcce5e744108f0ff219bb7b874 /tests | |
parent | d827b0180b05e7461856f668c3c4ca0ea6ed5d62 (diff) | |
download | dotty-af337f0667fa559411f9a96355b9ceeabf95b232.tar.gz dotty-af337f0667fa559411f9a96355b9ceeabf95b232.tar.bz2 dotty-af337f0667fa559411f9a96355b9ceeabf95b232.zip |
Fix of #50 - volatile
Volatile checking needs to take all intersections into account; previously these
could be discarded through needsChecking.
Plus several refactorings and additions.
1) Module vals now have Final and Stable flags set
2) All logic around isVolatile is now in TypeOps; some of it was moved from Types.
3) Added stability checking to Select and SelectFromType typings.
Todo: We should find a better name for isVolatile. Maybe define the negation instead under the name
"isRealizable"?.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/neg/i50-volatile.scala | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/neg/i50-volatile.scala b/tests/neg/i50-volatile.scala new file mode 100644 index 000000000..ae31a764c --- /dev/null +++ b/tests/neg/i50-volatile.scala @@ -0,0 +1,25 @@ +object Test { + class Base { + class Inner + } + type A <: Base { + type X = String + } + type B <: { + type X = Int + } + lazy val o: A & B = ??? + + class Client extends o.Inner + + def xToString(x: o.X): String = x + + def intToString(i: Int): String = xToString(i) +} +object Test2 { + + import Test.o._ + + def xToString(x: X): String = x + +} |