Aladdin - Scala Bugtracking
[#316] project: compiler priority: high category: bug
submitter assigned to status date submitted
Michel _ fixed 2004-04-02 14:33:07.0
subject Anonymous classes get non-deterministic names
code
class MyIterator with Iterator[Int] {
    def hasNext = false;
    def next = 42;
}

object Test {
  def main(args: Array[String]): Unit =
    (new MyIterator) filter { x: Int => x == 1 };
}
what happened
When running the above example, one gets:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Iterator$$anon$2
	at MyIterator$class.filter(bug_anon.scala:114)
	at Test$.main(bug_anon.scala:8)
	at Test.main(bug_anon.scala:7)

what expected

A normal run. As discussed, the problem is related to the fact that we have a global counter to create fresh names (in FreshNameCreator) and this means that in two successive compilations some classes/methods can get different names.

The fix is to remove all uses of FreshNameCreator.

[back to overview]
Changes of this bug report
Philippe  edited on  2004-04-02 15:35:22.0
Moved FreshNameCreator from Global into Unit.