S-JIS[2011-09-09] 変更履歴
Scala2.9.1のコンパイラプラグインのModifiers( クラスや変数の修飾子)のメモ。
クラスや変数の修飾子(privateとか)は、コンパイラプラグインではModifiersで表現されている。
プロパティー | 備考 | |
---|---|---|
flags | Long | 修飾子 |
privateWithin | Name | |
annotations | List[Tree] | アノテーションだが、ClassDefやValDefではここには何も入っていない。 typecheckerが削除してSymbol.anntationsに移しているらしい。 (ModifiersのScaladocコメント参照) |
positions | Map[Long, Position] | 修飾子毎のソースファイル内の位置 |
メソッド | 備考 |
---|---|
| (flag: Long) | フラグを立てる。 |
& (flag: Long) | 他のフラグをクリアする。 |
&~ (flag: Long) | フラグをクリアする。 |
is〜 | フラグが立っていればtrueを返す。 |
hasFlag(flag: Long) | フラグが立っていればtrueを返す。 |
hasFlagsToString(mask: Long) | 立っているフラグの文字列表現を返す。 |
toString() | 立っているフラグの文字列表現を返す。 |
ModifierFlagsやFlagsに定数が定義されている。(Scala2.9.1でModifierFlags/Flagsは非推奨になったようだが、代わりに何を使えばいいのかは不明)
FlagsはModifierFlagsを継承しているので、Flagsだけインポートすればよい。
import scala.reflect.generic.Flags
値 | 関連メソッド | 備考 |
---|---|---|
IMPLICIT | isImplicit | |
FINAL | isFinal | |
PRIVATE | isPrivate isPrivateLocal |
|
PROTECTED | isProtected isProtectedLocal |
|
isPublic | ||
SEALED | isSealed | |
OVERRIDE | isOverride | |
CASE | isCase | |
ABSTRACT | hasAbstractFlag isAbstract |
|
DEFERRED | isDeferred | 抽象メンバーである。 トレイトの場合はvirtualである。 |
INTERFACE | isInterface | インターフェース(つまり実装の無いtrait)である。 |
MUTABLE | isMutable | var(可変な変数)である。 |
PARAM | isParameter hasDefault isByNameParam |
メソッドの引数である。 |
COVARIANT | ||
BYNAMEPARAM | isByNameParam | |
CONTRAVARIANT | hasContravariantFlag | |
ABSOVERRIDE | isAbstractOverride | |
LOCAL | hasLocalFlag isPrivateLocal isProtectedLocal |
ローカル(this)スコープ、つまりprivate[this]やprotected[this]である。 |
JAVA | isJavaDefined | |
STATIC | hasStaticFlag | |
CASEACCESSOR | isCaseAccessor | ケースクラスの変数やそのアクセスメソッドである。 |
TRAIT | isTrait hasTraitFlag |
|
DEFAULTPARAM | hasDefault hasDefaultFlag |
変数のデフォルト値(初期値)を持っている。 |
PARAMACCESSOR | isParamAccessor | 基本コンストラクターによって定義されたフィールドである。 |
LAZY | isLazy | lazy valである。 |
PRESUPER | hasPreSuperFlag | superが呼ばれる前に値が評価される。 |
DEFAULTINIT | isDefaultInit | 型のデフォルト値で初期化される。(-Xcheckinit) |
METHOD | isLabel | |
MODULE | hasModuleFlag | object |
PACKAGE | hasPackageFlag | |
CAPTURED | ネストされた関数から呼ばれる変数である。 | |
LABEL | isLabel | |
INCONSTRUCTOR | hasInConstructorFlag | 自分自身や親クラスによって定義されたコンストラクターである。 |
SYNTHETIC | isSynthetic | コンパイラーによって生成されたものである。 |
STABLE | hasStableFlag | |
BRIDGE | ||
ACCESSOR | hasAccessorFlag | 変数のアクセスメソッド(setterやgetter)である。 |
SUPERACCESSOR | isSuperAccessor | |
MODULEVAR | objectの値をキャッシュした変数である。 | |
IS_ERROR | ||
OVERLOADED | ||
LIFTED | isLifted | |
MIXEDIN | ||
EXISTENTIAL | ||
EXPANDEDNAME | ||
IMPLCLASS | ||
TRANS_FLAG | transient | |
LOCKED | ||
SPECIALIZED | ||
VBRIDGE | ||
VARARGS | Java形式の可変長引数である。 | |
TRIEDCOOKING | “Cooking”に挑戦するらしいが、何の事やら?(爆) 最適化のこと? |