mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-01 08:18:08 +02:00
42 lines
1.5 KiB
Java
42 lines
1.5 KiB
Java
|
|
package typepatternmatch.pack1;
|
|
import org.aspectj.testing.Tester;
|
|
import org.aspectj.testing.Tester;
|
|
|
|
/**
|
|
* FYI the compiler will not warn when a TypePattern matches no type/class.
|
|
* From an email to user from Stefan
|
|
*/
|
|
public class IntroErrorLocation {
|
|
/** change to true if the compiler ever should weave in by finding type? */
|
|
public static volatile boolean EXPECT_INIT = false;
|
|
/** signifies that the initialization advice was run */
|
|
public static final String INIT_SIGNAL = "init";
|
|
static {
|
|
if (EXPECT_INIT) Tester.event(INIT_SIGNAL);
|
|
}
|
|
public static void main(String[] args) {
|
|
typepatternmatch.pack2.TargetClass target
|
|
= new typepatternmatch.pack2.TargetClass();
|
|
Tester.checkAllEvents();
|
|
}
|
|
}
|
|
|
|
aspect MyIntroductionAspect {
|
|
|
|
/** @testTarget typepattern.nonmatching.introduction.method */
|
|
public String TargetClass.introMethod(String s) { // fails to match typepattern in other package
|
|
return s;
|
|
}
|
|
/** @testTarget signature.nonmatching.advice.initialization */
|
|
after (typepatternmatch.pack2.TargetClass c)
|
|
: initialization(TargetClass.new()) && this(c) { // fails to match signature in other package
|
|
final String test = IntroErrorLocation.INIT_SIGNAL;
|
|
if (IntroErrorLocation.EXPECT_INIT) {
|
|
//Tester.event(c.introMethod(test)); // todo add positive: passed
|
|
}
|
|
// compiler error here is correct: no such method; no introMethod b/c TargetClass not matched
|
|
Tester.checkEqual(test, c.introMethod(test), "Round trip failed"); // correct compiler error
|
|
}
|
|
}
|