summaryrefslogtreecommitdiffstats
path: root/tests/java5/generics/pointcuts/InitializationPointcutMatching.aj
blob: a270211183c15f2897e2e3756f04a6cad1c7b8e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public aspect InitializationPointcutMatching {
	
	// rule 1) you can't use generic or parameterized type patterns in the declaring type position
	pointcut tryInitGeneric() : initialization(Generic<T>.new(..)); // CE L 4
	pointcut tryPreInitGeneric() : preinitialization(Generic<T>.new(..)); // CE L5
	pointcut tryInitParameterized() : initialization(Generic<String>.new(..)); // CE L6
	pointcut tryPreInitParameterized() : preinitialization(Generic<String>.new(..)); // CE L7
	pointcut trySneakyInit() : initialization((Object || Generic<Number>).new(..)); // CE L8
	pointcut badThrows() : initialization(Generic.new(..) throws Ex*<String>); // CE L9
}


class Generic<T> {
	
	T foo = null;
	
	T getFoo() {
		return foo;
	}
	
}