Vector. がときどきコンパイルできない。

Flex Builder 3でもFlash Builder 4でも発生するのですが、Vector型のメンバ変数の要素の型を指定する時に、ユーザー定義のクラスを与えると、ときどきコンパイルに失敗するようです。ある程度の規模のソースの中に次のような感じのコードが含まれていると、数回に一回ビルドエラーが起こります。

import __AS3__.vec.Vector;
import com.example.MyClass;

public class Foo {
  private var bar:Vector.<MyClass>;
}

ちなみにVector.<*>と書いても同様に、ビルドエラーが起こります。

発生するエラーは次のとおり。

  • FB3 USの場合、 Error 1046: Type was not found or was not a compile-time constant: Vector
  • FB3 JPの場合、 1046: 型が見つからないか、コンパイル時定数ではありません : Vector
  • FB4 JPの場合、 1046: 型が見つからないか、コンパイル時定数ではありません :。

Flash Builder 4だとエラーメッセージ自体がなんか変ですね。

クリーンビルドするとビルドエラーは起こりません。したがって、ほぼ間違いなくFlex/Flash Builderのバグだと思うのですが…。ワークアラウンドは今のところクリーンビルドしかないようです。

経験的にはプロジェクトの規模がかなり大きくなってこないと起こらないので、なかなか遭遇する人が少ないのかも…。プロジェクトを細かく分ければいいんでしょうかね。