Data Flow Constraint
めも。
データフロー制約を表記する言語が見つからないので、人にやさしい言語を少し考えてみる。
- expr1 must expr2
- expr1の評価は常にexpr2と同値
- expr1 !must expr2
- expr1の評価はexpr2と同値でない場合がある
- expr1 may expr2
- expr1の評価はexpr2と同値である場合がある
- expr1 !may expr2
- expr1の評価は常にexpr2と同値でない
access : {@link CtVariableAccess<?>} invocation : {@link CtMethodInvocation<?>} access.variable may null access = invocation.qualifier
- あるメソッド呼び出しに利用するレシーバオブジェクトは、nullと同値である場合がある
まだまだ駄目っぽい。
追記
Control Flow Constraintも欲しい。
streamを開いたら必ずcloseとか。フラットに解析するのは地獄だろうけど…
さらに追記
違和感を感じると思ったら、英語のmust/may notとここでの!must/mayは意味が違う…
論理学っぽい記号を使いたいので、別の手を考えなきゃ。