diff options
author | Martin Odersky <odersky@gmail.com> | 2014-05-05 18:34:59 +0200 |
---|---|---|
committer | Samuel Gruetter <samuel.gruetter@epfl.ch> | 2014-05-20 13:38:48 +0200 |
commit | 82c4db686d07ae8e91f157f5c8b55a1a76917941 (patch) | |
tree | 3024867516bdc571987207296046fe5bcd3ca566 /tests/pos/t1957.scala | |
parent | 94ceb9895a539b05fd81c8abe040c276178b5507 (diff) | |
download | dotty-82c4db686d07ae8e91f157f5c8b55a1a76917941.tar.gz dotty-82c4db686d07ae8e91f157f5c8b55a1a76917941.tar.bz2 dotty-82c4db686d07ae8e91f157f5c8b55a1a76917941.zip |
Pos tests t17xx - t19xx
Diffstat (limited to 'tests/pos/t1957.scala')
-rw-r--r-- | tests/pos/t1957.scala | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/pos/t1957.scala b/tests/pos/t1957.scala new file mode 100644 index 000000000..711ce17de --- /dev/null +++ b/tests/pos/t1957.scala @@ -0,0 +1,38 @@ +object Test { + abstract class Settings {} + + abstract class Grist + { self => + type settingsType <: Settings + type moduleType <: Module {type settingsType = self.settingsType} + val module: moduleType + } + + abstract class Tool + { self => + type settingsType <: Settings + type moduleType = Module { type settingsType = self.settingsType } + type gristType = Grist { type moduleType <: self.moduleType; type settingsType <: self.settingsType } + + def inputGrist: List[gristType] + } + + abstract class Module + { self => + type settingsType <: Settings + final type commonModuleType = Module {type settingsType = self.settingsType} + type selfType >: self.type <: commonModuleType + + // BTW: if we use the commented out type decls, the code compiles successfully + // type gristType = Grist {type settingsType <: self.settingsType; type moduleType <: commonModuleType } + + val tools: List[Tool {type settingsType = self.settingsType}] + + protected def f: List[commonModuleType] = + { + val inputGrists = tools.flatMap(_.inputGrist) // val inputGrists: List[gristType] = + inputGrists.map(_.module) + } + + } +} |