From 41be228d1a658540125eed984a48f8ea9a500927 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Fri, 16 Nov 2007 15:57:40 +0000 Subject: fixed #209 --- test/files/jvm/protectedacc.scala | 3 ++- test/files/neg/abstract.check | 10 +--------- test/files/neg/bug1010.check | 6 ++++++ test/files/neg/bug1010.scala | 15 +++++++++++++++ test/files/neg/bug415.check | 5 ----- test/files/neg/bug415.scala | 9 --------- test/files/neg/bug836.check | 9 +++++---- test/files/neg/bug839.check | 5 ----- test/files/neg/bug839.scala | 26 -------------------------- test/files/neg/sabin2.check | 7 ++++--- test/files/pos/bug1010.scala | 15 --------------- test/files/pos/bug415.scala | 9 +++++++++ test/files/pos/bug839.scala | 26 ++++++++++++++++++++++++++ 13 files changed, 68 insertions(+), 77 deletions(-) create mode 100644 test/files/neg/bug1010.check create mode 100644 test/files/neg/bug1010.scala delete mode 100644 test/files/neg/bug415.check delete mode 100644 test/files/neg/bug415.scala delete mode 100644 test/files/neg/bug839.check delete mode 100644 test/files/neg/bug839.scala delete mode 100644 test/files/pos/bug1010.scala create mode 100644 test/files/pos/bug415.scala create mode 100644 test/files/pos/bug839.scala (limited to 'test/files') diff --git a/test/files/jvm/protectedacc.scala b/test/files/jvm/protectedacc.scala index 50fd66c0b5..fc6d5336d4 100644 --- a/test/files/jvm/protectedacc.scala +++ b/test/files/jvm/protectedacc.scala @@ -136,7 +136,8 @@ package p { m(self) trait InnerInner { - getB.tie(self2) + val g = getB + g.tie(self2.asInstanceOf[g.Node]) } } } diff --git a/test/files/neg/abstract.check b/test/files/neg/abstract.check index c33011bb55..b73539112a 100644 --- a/test/files/neg/abstract.check +++ b/test/files/neg/abstract.check @@ -1,19 +1,11 @@ -abstract.scala:5: error: method bar cannot be accessed in A.this.T - because its instance type ()A.this.T#T contains a malformed type: A.this.T#T - def foo1: A = bar().bar(); - ^ abstract.scala:6: error: type mismatch; found : A required: A.this.T def foo2: T = bar().baz(); ^ -abstract.scala:8: error: method bar cannot be accessed in A - because its instance type ()A#T contains a malformed type: A#T - def foo4: A = baz().bar(); - ^ abstract.scala:9: error: type mismatch; found : A required: A.this.T def foo5: T = baz().baz(); ^ -four errors found +two errors found diff --git a/test/files/neg/bug1010.check b/test/files/neg/bug1010.check new file mode 100644 index 0000000000..a0a97e940c --- /dev/null +++ b/test/files/neg/bug1010.check @@ -0,0 +1,6 @@ +bug1010.scala:14: error: type mismatch; + found : MailBox#Message + required: _1.in.Message where val _1: Actor + unstable.send(msg) // in.Message becomes unstable.Message, but that's ok since Message is a concrete type member + ^ +one error found diff --git a/test/files/neg/bug1010.scala b/test/files/neg/bug1010.scala new file mode 100644 index 0000000000..7a1e6615e5 --- /dev/null +++ b/test/files/neg/bug1010.scala @@ -0,0 +1,15 @@ +class MailBox { + class Message + //type Message = AnyRef +} + +abstract class Actor { + private val in = new MailBox + + def send(msg: in.Message) = error("foo") + + def unstable: Actor = error("foo") + + def dubiousSend(msg: MailBox#Message): Nothing = + unstable.send(msg) // in.Message becomes unstable.Message, but that's ok since Message is a concrete type member +} diff --git a/test/files/neg/bug415.check b/test/files/neg/bug415.check deleted file mode 100644 index a1c68954cb..0000000000 --- a/test/files/neg/bug415.check +++ /dev/null @@ -1,5 +0,0 @@ -bug415.scala:8: error: method x cannot be accessed in A - because its instance type => A#T contains a malformed type: A#T - val y: String = a.x; - ^ -one error found diff --git a/test/files/neg/bug415.scala b/test/files/neg/bug415.scala deleted file mode 100644 index 355b6136d1..0000000000 --- a/test/files/neg/bug415.scala +++ /dev/null @@ -1,9 +0,0 @@ -abstract class A { - type T <: String; - def x: T; -} - -abstract class B { - def a: A; - val y: String = a.x; -} diff --git a/test/files/neg/bug836.check b/test/files/neg/bug836.check index 1fcae2ecb3..4949e2cd66 100644 --- a/test/files/neg/bug836.check +++ b/test/files/neg/bug836.check @@ -1,5 +1,6 @@ -bug836.scala:6: error: type S cannot be accessed in A.this.MyObj - because its instance type A.this.MyObj#S is malformed - type S = MyObj#S - ^ +bug836.scala:9: error: type mismatch; + found : Any + required: A.this.S + val some: S = any // compiles => type X is set to scala.Any + ^ one error found diff --git a/test/files/neg/bug839.check b/test/files/neg/bug839.check deleted file mode 100644 index 2f22e26d44..0000000000 --- a/test/files/neg/bug839.check +++ /dev/null @@ -1,5 +0,0 @@ -bug839.scala:25: error: method set cannot be accessed in object Test.this.FileImpl#treeBuilder - because its instance type (Test.this.Global#Tree)Unit contains a malformed type: Test.this.Global#Tree - file.treeBuilder.set(nsc.get); - ^ -one error found diff --git a/test/files/neg/bug839.scala b/test/files/neg/bug839.scala deleted file mode 100644 index d845ed3aae..0000000000 --- a/test/files/neg/bug839.scala +++ /dev/null @@ -1,26 +0,0 @@ -// see pending/pos/bug112606A.scala -package test; -trait Test { - trait Global { - type Tree; - def get : Tree; - } - trait TreeBuilder { - val global : Global; - def set(tree : global.Tree) = {} - } - val nsc : Global; - trait FileImpl { - object treeBuilder extends TreeBuilder { - val global : nsc.type = nsc; - } - // OK - treeBuilder.set(nsc.get); - } - val file0 : FileImpl; - // OK - file0.treeBuilder.set(nsc.get); - def file : FileImpl; - // type mismatch - file.treeBuilder.set(nsc.get); -} diff --git a/test/files/neg/sabin2.check b/test/files/neg/sabin2.check index 682c08bc62..0e148fa038 100644 --- a/test/files/neg/sabin2.check +++ b/test/files/neg/sabin2.check @@ -1,5 +1,6 @@ -sabin2.scala:22: error: method set cannot be accessed in Test.Base#Inner - because its instance type (Test.Base#T)Unit contains a malformed type: Test.Base#T +sabin2.scala:22: error: type mismatch; + found : Test.Base#T + required: _1.T where val _1: Test.Base a.set(b.get()) // Error - ^ + ^ one error found diff --git a/test/files/pos/bug1010.scala b/test/files/pos/bug1010.scala deleted file mode 100644 index 7a1e6615e5..0000000000 --- a/test/files/pos/bug1010.scala +++ /dev/null @@ -1,15 +0,0 @@ -class MailBox { - class Message - //type Message = AnyRef -} - -abstract class Actor { - private val in = new MailBox - - def send(msg: in.Message) = error("foo") - - def unstable: Actor = error("foo") - - def dubiousSend(msg: MailBox#Message): Nothing = - unstable.send(msg) // in.Message becomes unstable.Message, but that's ok since Message is a concrete type member -} diff --git a/test/files/pos/bug415.scala b/test/files/pos/bug415.scala new file mode 100644 index 0000000000..355b6136d1 --- /dev/null +++ b/test/files/pos/bug415.scala @@ -0,0 +1,9 @@ +abstract class A { + type T <: String; + def x: T; +} + +abstract class B { + def a: A; + val y: String = a.x; +} diff --git a/test/files/pos/bug839.scala b/test/files/pos/bug839.scala new file mode 100644 index 0000000000..d845ed3aae --- /dev/null +++ b/test/files/pos/bug839.scala @@ -0,0 +1,26 @@ +// see pending/pos/bug112606A.scala +package test; +trait Test { + trait Global { + type Tree; + def get : Tree; + } + trait TreeBuilder { + val global : Global; + def set(tree : global.Tree) = {} + } + val nsc : Global; + trait FileImpl { + object treeBuilder extends TreeBuilder { + val global : nsc.type = nsc; + } + // OK + treeBuilder.set(nsc.get); + } + val file0 : FileImpl; + // OK + file0.treeBuilder.set(nsc.get); + def file : FileImpl; + // type mismatch + file.treeBuilder.set(nsc.get); +} -- cgit v1.2.3