>  
> > Looking at the source code like this:
> > logger.debug("Entry number: " + i + " is " + 
> > String.valueOf(entry[i]));
> 
> In general, it's undecidable what might be a parameter for debug(..).
> Reachbility is not decidable for Turing complete languages.
> 

When looking at source code, it should be fairly easy to define a cutpoint that 
is "before anything is done inside the parentheses of this function call".  
(Fairly easy probably means about as hard as the existing pointcut that 
captures a function call after argument creation.)  Given a function call of 
f(g(a+b),h()), beforeArgs(f) (with appropriate extras to match properly) would 
happen before a and b are added, g is called or h is called.  That would cover 
the case that the original poster was asking about.

Load time weaving is quite probably much more difficult.  I expect that is 
where the problem becomes undecidable.  Consider this snippet.

{
  String a = getA();
  String b = a + getB();
  System.out.println(b + getC());
}

In object code, this could easily be identical to

System.out.println(getA() + getB() + getC());

or 

{
  String s = getA() + getB() + getC();
  System.out.println(s);
}

In all three cases, a string is built up from the results of three function 
calls and never used again.  Unless there are extra markings in the object 
code, the location of the open parenthesis has been lost.  

Speaking with the blissful ignorance of someone totally unfamiliar with the 
AspectJ source, I expect that it would be possible to create such a point cut, 
but it would only work for compile-time weaving.  If the ApsectJ team is 
committed to having compile-time and run-time weaving be interchangeable, that 
means this type of cutpoint is not doable.

Troy

> Eric
> 
> --
> Eric Bodden
> Sable Research Group
> McGill University, Montréal, Canada
> _______________________________________________
> aspectj-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> 
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to