[#967] | project: compiler | priority: low | category: bug | |
---|---|---|---|---|
submitter | assigned to | status | date submitted | |
Nikolay | Martin | noise | 2007-02-26 16:01:15.0 | |
subject | [contrib #353] valid method call yields compiler error message | |||
code |
object Foo { private val all = new scala.collection.mutable.HashSet[Foo] def add(foo: Foo) = { all += foo allSorted() 1 } def allSorted() = all.toList.sort((a, b) => a.id < b.id) } abstract class Foo { val id = Foo.add(this) } |
|||
what happened | scala and fsc 2.3.3 give error message ("recursive method add needs result type"), unless call to allSorted() is\ removed |
|||
what expected | clean compilation | |||
[back to overview] |
Nikolay edited on 2007-02-26 16:02:48.0 |
contribution #353. I shortened the code a bit |
Martin edited on 2007-02-27 23:30:05.0 |
The error message is correct: the type of add depends on allsorted which depends on the type of Foo.id, which depends on add. |
Nikolay edited on 2007-02-28 10:46:39.0 |
My bad. I cut the contribution example too much. I now added a 1 at the end of add so the inferred type should not depend on allSorted
|
Nikolay edited on 2007-02-28 12:26:39.0 |
Apparently, it doesn't matter if allSorted is last or not. Its type is still required for the typechecking of the body of add .
|