Detecting and resolving ambiguities caused by inter-dependent introductions
AOP languages are continuously evolving, for example (1) pointcut languages are becoming increasingly powerful with respect to the expressiveness of the pointcut language itself, (2) new program properties can be used as a selection criterion in pointcut designators, or (3) new types of program elements can be introduced by means of a crosscut specification. In this paper we investigate the consequences of these trends. To this end, we focus particularly on the usage of meta-data annotations: several recent (versions of) AOP languages support the use of annotations as a selection criterion in pointcut designators or the introduction of annotations, or both. We investigate the introduction of annotations through the use of expressive pointcut languages; explain why introduction of annotations is useful, and in particular, why and how annotations can be derived from other annotations.
We explore the issues that arise due to the inter-dependencies between annotation introductions. We investigate when such dependencies may cause ambiguities, and we present an algorithm that resolves the dependencies when possible, and detects ambiguous cases that cannot be resolved. The solution we propose is implemented within the Compose* tool, which supports the introduction of meta-data annotations.