FSC は、必要がなくても毎回私の .scala ファイルを再コンパイルします。試行の間に何も編集せずに 2 回コンパイルでき、それらを再コンパイルします! たとえば、2つのファイルがあります
Hello.scala
class Hello{
print("hello")
}
そして Tokens.scala:
abstract class Token(val str: String, val start: Int, val end: Int)
{override def toString = getClass.getSimpleName + "(" + "[" + start + "-" + end + "]" + str + ")"}
class InputToken(str: String, start: Int, end: Int)
extends Token(str, start, end)
class ParsedToken(str: String, start: Int, end: Int, val invisible: Boolean)
extends Token(str, start, end)
ant にプロジェクトを最初からコンパイルするように依頼すると、次の出力が表示されます。
ant compile
init:
[mkdir] Created dir: D:\projects\Test\build\classes
[mkdir] Created dir: D:\projects\Test\build\test\classes
compile:
[fsc] Base directory is `D:\projects\Test`
[fsc] Compiling source files: somepackage\Hello.scala, somepackage\Tokens.scala to D:\projects\Test\build\classes
BUILD SUCCESSFUL
私は何も編集せず、再度 ant コンパイルを依頼します。
ant compile
init:
[mkdir] Created dir: D:\projects\Test\build\classes
[mkdir] Created dir: D:\projects\Test\build\test\classes
compile:
[fsc] Base directory is `D:\projects\Test`
[fsc] Compiling source files: somepackage\Tokens.scala to D:\projects\Test\build\classes
BUILD SUCCESSFUL
ご覧のとおり、fsc は Hello.scala の場合はスマートに動作し (再コンパイルなし)、Tokens.scala の場合は愚かに動作します。問題は何らかの形で継承に関連していると思いますが、それだけです。
では、何が問題なのですか?