Aladdin - Scala Bugtracking
[#231] project: compiler priority: high category: bug
submitter assigned to status date submitted
Michel Martin fixed 2003-11-19 15:02:59.0
subject Type of separately compiled nested modules not correct
code
// file O1.scala
package toto;

object O1 {
  object O2 {
    def f(x: Int): Int = x+1;
  }
}

// file bug.scala
import toto._;
object Main with Executable {
  System.out.println(toto.O1.O2.f(5));
}
what happened
If compiled together, these two files produce correct code. If O1.scala is compiled first, and then\
 bug.scala is compiled, one gets the following error:
Exception in thread "main" java.lang.NoSuchFieldError: MODULE$
	at Main$.(bug.scala:3)
	at Main$.(bug.scala)
	at Main.main(bug.scala)
what expected Same behaviour with and without separate compilation. I'm actually pretty sure I know the source of the bug. RefCheck.scala currently contains the following line in function transformModule:
	    sym.updateInfo(Type.PolyType(Symbol.EMPTY_ARRAY, sym.type()));
This correctly changes the type of the value representing a nested module when its tree is transformed. However, such changes should be done in transformInfo, otherwise they are not applied when the file is compiled separately, and that's precisely the problem here.
[back to overview]
Changes of this bug report
Martin  edited on  2003-11-20 14:21:42.0