型緩和織込

AspectJ言語のaroundアドバイスは、メソッド呼び出し(や他の操作)の実行時の引数や返値を変更できる強力な機能である。しかし、aroundアドバイスには型に関する強い制限があり、例え安全であってもアスペクトが値を変更できない場合がある。本研究では、アスペクトの織込規則を型安全性を損うことなく緩め、より多くの場合に値を変更できるようにすることを目標とする。加えて、緩和された織込規則のもとでのproceedメソッドの型に関する柔軟性の向上や、総称型・共変返値型への対応にも取り組んでいる。

一例として、次のアドバイス定義を挙げる。

aspect WrapActionListener {
  ActionListener around(): call(ActionListener+.new(..)) {
    ActionListener l = proceed();
    return new Wrapper(l); // Wrapper implements ActionListener
  }
}

現在のAspectJコンパイラは、この一見正しく見えるアドバイス定義を織り込む際にエラーを報告する。

メンバー

論文など

  • Tomoyuki Aotani, Manabu Toyama, and Hidehiko Masuhara, Supporting covariant return types and generics in type relaxed weaving
    • Workshop on Foundations of Aspect-Oriented Languages(FOAL), March 2011.
    • PDF
  • Tomoyuki Aotani, Manabu Toyama, and Hidehiko Masuhara, StrongRelaxAJ: integrating adaptability of RelaxAJ and expressiveness of StrongAspectJ
    • Workshop on Foundations of Aspect-Oriented Languages(FOAL), March 2010.
    • PDF
  • Hidehiko Masuhara, Atsushi Igarashi, and Manabu Toyama, Type Relaxed Weaving
    • The 9th International Conference on Aspect-Oriented Software Development (AOSD’10), March 2010.
  • Hidehiko Masuhara, Relaxing Type Restrictions of Around Advice in Aspect-Oriented Programming
    • The Fifth ASIAN Symposium on Programming Languages and Systems (APLAS 2007), November 2007.
    • poster presentation. abstract
  • Hidehiko Masuhara, On Type Restriction of Around Advice and Aspect Interference
    • The 3rd International Workshop on Aspects, Dependencies and Interactions (ADI’08), July 2008.
    • PDF
  • 当山学, 増原英彦, “異なる型の値を返すアドバイスを許すアスペクト指向言語の織込機構”
    • 第11回プログラミングおよびプログラミング言語ワークショップ(PPL2009), March 2009.
    • PPL2009プログラム

ダウンロード