org.aspectj/tests/new/typepatternmatch/pack1/IntroErrorLocation.java
2002-12-16 18:51:06 +00:00

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
}
}