diff options
author | Lukas Rytz <lukas.rytz@epfl.ch> | 2011-05-05 15:27:57 +0000 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@epfl.ch> | 2011-05-05 15:27:57 +0000 |
commit | c937fd95700bef739f012e2a11b84bc848f200be (patch) | |
tree | 8180b14c907ecbd6d7d2dffb62b111b236972b04 | |
parent | 1c0df8f97ec740eca56e82049f42d2ab2ec45d73 (diff) | |
download | scala-c937fd95700bef739f012e2a11b84bc848f200be.tar.gz scala-c937fd95700bef739f012e2a11b84bc848f200be.tar.bz2 scala-c937fd95700bef739f012e2a11b84bc848f200be.zip |
close #4524 and close #4425, review by odersky.
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala | 7 | ||||
-rw-r--r-- | test/files/neg/t4425.check | 4 | ||||
-rw-r--r-- | test/files/neg/t4425.scala | 4 | ||||
-rw-r--r-- | test/files/pos/t4524.scala | 9 |
4 files changed, 23 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala b/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala index 5b4a5b3c44..8e286ca983 100644 --- a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala +++ b/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala @@ -189,7 +189,12 @@ trait NamesDefaults { self: Analyzer => } else { val module = companionModuleOf(baseFun.symbol.owner, context) if (module == NoSymbol) None - else Some(atPos(pos.focus)(gen.mkAttributedRef(pre, module))) + else { + val ref = atPos(pos.focus)(gen.mkAttributedRef(pre, module)) + if (module.isStable && pre.isStable) // fixes #4524. the type checker does the same for + ref.setType(singleType(pre, module)) // typedSelect, it calls "stabilize" on the result. + Some(ref) + } } } diff --git a/test/files/neg/t4425.check b/test/files/neg/t4425.check new file mode 100644 index 0000000000..4ff4b1eec0 --- /dev/null +++ b/test/files/neg/t4425.check @@ -0,0 +1,4 @@ +t4425.scala:3: error: erroneous or inaccessible type + 42 match { case _ X _ => () } + ^ +one error found diff --git a/test/files/neg/t4425.scala b/test/files/neg/t4425.scala new file mode 100644 index 0000000000..d8cc6922f7 --- /dev/null +++ b/test/files/neg/t4425.scala @@ -0,0 +1,4 @@ +object Foo { + object X { def unapply(x : Int)(y : Option[Int] = None) = None } + 42 match { case _ X _ => () } +} diff --git a/test/files/pos/t4524.scala b/test/files/pos/t4524.scala new file mode 100644 index 0000000000..4721a7d067 --- /dev/null +++ b/test/files/pos/t4524.scala @@ -0,0 +1,9 @@ +object test { + import A._ + class A(b: B = new A.B()) + object A { + class B + new A() + } +} + |