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”に挑戦するらしいが、何の事やら?(爆) 最適化のこと? |