abc.aspectj.extension
Class AJCall_c

java.lang.Object
  extended by Call_c
      extended by abc.aspectj.extension.AJCall_c
All Implemented Interfaces:
MakesAspectMethods

public class AJCall_c
extends Call_c
implements MakesAspectMethods

Override the typechecking of method calls, to delegate to the host in certain cases when the call occurs from within an intertype declaration.

Author:
Oege de Moor.

Constructor Summary
AJCall_c(Position pos, Receiver target, java.lang.String name, java.util.List arguments)
           
 
Method Summary
 void aspectMethodsEnter(AspectMethods visitor)
           
 Node aspectMethodsLeave(AspectMethods visitor, AJNodeFactory nf, AJTypeSystem ts)
           
 Node typeCheck(TypeChecker tc)
          in intertype declarations with an interface host, one can make calls of the form "super.foo()" - these then have to be resolved in the super-interfaces of the host.
protected  Node typeCheckNullTarget(TypeChecker tc, java.util.List argTypes)
          Typecheck the Call when the target is null.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AJCall_c

public AJCall_c(Position pos,
                Receiver target,
                java.lang.String name,
                java.util.List arguments)
Method Detail

typeCheckNullTarget

protected Node typeCheckNullTarget(TypeChecker tc,
                                   java.util.List argTypes)
                            throws SemanticException
Typecheck the Call when the target is null. This method finds an appropriate target, and then type checks accordingly.

Parameters:
argTypes - list of Types of the arguments
Throws:
SemanticException

typeCheck

public Node typeCheck(TypeChecker tc)
               throws SemanticException
in intertype declarations with an interface host, one can make calls of the form "super.foo()" - these then have to be resolved in the super-interfaces of the host.

Throws:
SemanticException

aspectMethodsEnter

public void aspectMethodsEnter(AspectMethods visitor)
Specified by:
aspectMethodsEnter in interface MakesAspectMethods

aspectMethodsLeave

public Node aspectMethodsLeave(AspectMethods visitor,
                               AJNodeFactory nf,
                               AJTypeSystem ts)
Specified by:
aspectMethodsLeave in interface MakesAspectMethods