mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-15 02:13:50 +02:00
50 lines
1.6 KiB
Java
50 lines
1.6 KiB
Java
package symbols;
|
|
|
|
strictfp aspect A issingleton() {
|
|
|
|
/** objects */
|
|
pointcut instanceof_C(): this(C);
|
|
pointcut hasaspect_A(): if(A.hasAspect());
|
|
|
|
/** lexical extents */
|
|
pointcut within_C(): within(C);
|
|
pointcut withinall_C(): within(C+);
|
|
pointcut withincode_C(): withincode(void C.*(..));
|
|
|
|
/** control flow */
|
|
pointcut cflow_C(): cflow(withincode_C());
|
|
pointcut cflowtop_C(): cflow(withincode_C() && !cflowbelow(withincode_C()));
|
|
|
|
/** methods and constructors */
|
|
pointcut calls_C(): call(int C.*(..));
|
|
pointcut receptions_C(): call(int C.*(..));
|
|
pointcut executions_C(): execution(* C.*(..,float,..));
|
|
//pointcut callsto_C(): callsto(call(void C.*()));
|
|
|
|
/** exception handlers */
|
|
pointcut handlers_Thr(): handler(java.lang.Throwable);
|
|
pointcut handlers_Err(): handler(java.lang.Error);
|
|
pointcut handlers_Exc(): handler(java.lang.Exception);
|
|
pointcut handlers_Rt(): handler(java.lang.RuntimeException);
|
|
|
|
/** fields */
|
|
pointcut gets_f(): get(float C.*);
|
|
pointcut sets_f(): set(float C.*);
|
|
|
|
/** Advices */
|
|
//before(): call(void C.*()) { }
|
|
before(): this(C) && call(String Object.toString()) { }
|
|
before(): execution(C.new()) { }
|
|
after(): call(void C.*()) { }
|
|
after() returning (int x): call(int C.*(..)) { }
|
|
after() throwing (RuntimeException e): call(void C.MethV()) {
|
|
throw new RuntimeException("test");
|
|
}
|
|
void around() : call(void C.MethV()) { proceed(); }
|
|
|
|
/** Introductions */
|
|
public double symbols.C.intrD;
|
|
private void C.intrMethV() { intrD += 1; }
|
|
|
|
}
|