diff options
author | Paul Phillips <paulp@improving.org> | 2010-11-29 22:20:39 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-11-29 22:20:39 +0000 |
commit | cbcf3f505144297ad197d0086ea7a4c4f1fbb598 (patch) | |
tree | bcacfa37635ad8293c831c3bd313806396cede76 /src/compiler | |
parent | fa822e3ef63a7e11345dcdd2c81a1f565093a63c (diff) | |
download | scala-cbcf3f505144297ad197d0086ea7a4c4f1fbb598.tar.gz scala-cbcf3f505144297ad197d0086ea7a4c4f1fbb598.tar.bz2 scala-cbcf3f505144297ad197d0086ea7a4c4f1fbb598.zip |
"I invite everyone to change this rule, and obs...
"I invite everyone to change this rule, and observe what breaks!"
This much beloved comment from #1208 has been on my radar for two years.
The worm has turned. Closes #1208. The inferred type of an object is now
Foo.type instead of "object Foo". What once was this:
scala> val x: Map[Int, Singleton] = Map(1 -> None)
<console>:5: error: type mismatch;
found : (Int, object None)
required: (Int, Singleton)
Now exudes a pleasing aura of workingness:
scala> val x: Map[Int, Singleton] = Map(1 -> None)
x: Map[Int,Singleton] = Map(1 -> None)
No review.
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Infer.scala | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Infer.scala b/src/compiler/scala/tools/nsc/typechecker/Infer.scala index 66cd76f800..4ced09795f 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Infer.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Infer.scala @@ -586,6 +586,7 @@ trait Infer { tparam -> Some( if (targ.typeSymbol == RepeatedParamClass) targ.baseType(SeqClass) else if (targ.typeSymbol == JavaRepeatedParamClass) targ.baseType(ArrayClass) + else if (targ.typeSymbol.isModuleClass) targ // this infers Foo.type instead of "object Foo" else targ.widen ) } |