Class ResolveMemberReference

java.lang.Object
recoder.kit.Transformation
recoder.kit.TwoPassTransformation
de.uka.ilkd.key.util.removegenerics.GenericResolutionTransformation
de.uka.ilkd.key.util.removegenerics.ResolveMemberReference

public class ResolveMemberReference extends GenericResolutionTransformation
  • Field Summary

    Fields inherited from class de.uka.ilkd.key.util.removegenerics.GenericResolutionTransformation

    DEBUG_OUTPUT

    Fields inherited from class recoder.kit.Transformation

    EQUIVALENCE, IDENTITY, NO_PROBLEM
  • Constructor Summary

    Constructors
    Constructor
    Description
    ResolveMemberReference(recoder.java.reference.NameReference reference, recoder.CrossReferenceServiceConfiguration sc)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    recoder.kit.ProblemReport
    Analys a MemberReference.
    void
     

    Methods inherited from class de.uka.ilkd.key.util.removegenerics.GenericResolutionTransformation

    debugOut, targetType, toString

    Methods inherited from class recoder.kit.TwoPassTransformation

    execute

    Methods inherited from class recoder.kit.Transformation

    attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attach, attachAsArgument, attachAsArgument, attachAsArgument, attachAsArgument, attachAsArgument, attachAsArgument, attachAsArgument, attachAsArgument, attachAsBody, attachAsCondition, attachAsGuard, attachAsInitializer, attachAsLabel, attachAsMessage, attachAsPrefix, attachAsPrefix, attachAsPrefix, attachAsPrefix, attachAsUpdate, detach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttach, doAttachAsArgument, doAttachAsArgument, doAttachAsArgument, doAttachAsArgument, doAttachAsArgument, doAttachAsArgument, doAttachAsArgument, doAttachAsArgument, doAttachAsArgument, doAttachAsBody, doAttachAsCondition, doAttachAsGuard, doAttachAsInitializer, doAttachAsLabel, doAttachAsMessage, doAttachAsPrefix, doAttachAsPrefix, doAttachAsPrefix, doAttachAsPrefix, doAttachAsUpdate, doDetach, doReplace, getChangeHistory, getCrossReferenceSourceInfo, getNameInfo, getProblemReport, getProgramFactory, getServiceConfiguration, getSourceFileRepository, getSourceInfo, isVisible, replace, rollback, setProblemReport, setServiceConfiguration, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • ResolveMemberReference

      public ResolveMemberReference(recoder.java.reference.NameReference reference, recoder.CrossReferenceServiceConfiguration sc)
  • Method Details

    • analyze

      public recoder.kit.ProblemReport analyze()
      Analys a MemberReference. Considering the following example:
       class B ...
       class G<E> { E m() {...} }
      
       ...
       G<B> g = new G<B>();
       B b = g.m();
       ...
       
      The reference g.m() is the one under test. Several types will show up:
      • declarationType - the type of the member at its declaration. Here the type of G.m() which is E.
      • genericFreeDeclaraionType - the type of the declaration in a non-generic situation, which is java.lang.Object here.
      • kernelType - if declarationType is an array, kernelType will be the component type (with all [] removed)
      • actualType - the type of the member in the parameterized instance: here the type of G<B>.m() which is B.
      • genericFreeType - if the actualType is a TV itsself, this is the type that it will be replaced in a non-generic situation (Object or first boundary).
      • resolvedType - if there are multiple bounds the reference might have to be cast to a different one than the first.
      Also, if there are explicit type parameters, they will be removed.
      Overrides:
      analyze in class recoder.kit.TwoPassTransformation
    • transform

      public void transform()
      Overrides:
      transform in class recoder.kit.TwoPassTransformation