Class InterfaceInvocation

  • All Implemented Interfaces:
    AstNode, Typed, Xmir

    public final class InterfaceInvocation
    extends Object
    implements AstNode, Typed
    Interface invocation.
    Since:
    0.2
    To do:
    #173:90min Remove code duplication between Invocations. I just copied some code from other invocations and changed the opcode. It means that we have a code duplication. We need to remove it somehow. Also pay attention that #xargs method is duplicate of the same method from org.eolang.opeo.compilation.XmirParser#args class., #344:90min Interface Invocation Type Inference We used to infer 'owner' of a interface method invocation from the source. However it led to failed tests.

    Here is how we did it: final Typed owner = (Typed) this.source; res.add( new Opcode( Opcodes.INVOKEINTERFACE, owner.type().getClassName().replace('.', '/'), this.attrs.name(), this.attrs.descriptor(), this.attrs.interfaced() ) );

    We should use the similar approach, but we also have to ensure that all the tests pass.
    • Constructor Detail

      • InterfaceInvocation

        public InterfaceInvocation​(org.eolang.jeo.representation.xmir.XmlNode node,
                                   Parser parser)
        Constructor.
        Parameters:
        node - XML node.
        parser - Parser, which can extract AstNode from XmlNode.
      • InterfaceInvocation

        public InterfaceInvocation​(AstNode source,
                                   Attributes attributes,
                                   AstNode... args)
        Constructor.
        Parameters:
        source - Source or target on which the invocation is performed
        attributes - Method attributes.
        args - Arguments of the method.
      • InterfaceInvocation

        public InterfaceInvocation​(AstNode source,
                                   Attributes attributes,
                                   List<AstNode> args)
        Constructor.
        Parameters:
        source - Source or target on which the invocation is performed
        attributes - Method attributes.
        args - Arguments of the method.
    • Method Detail

      • toXmir

        public Iterable<org.xembly.Directive> toXmir()
        Description copied from interface: Xmir
        Convert node to XMIR.
        Specified by:
        toXmir in interface Xmir
        Returns:
        XMIR XML.
      • opcodes

        public List<AstNode> opcodes()
        Description copied from interface: AstNode
        Bytecode instructions.
        Specified by:
        opcodes in interface AstNode
        Returns:
        List of opcodes.
      • type

        public org.objectweb.asm.Type type()
        Description copied from interface: Typed
        Node type.
        Specified by:
        type in interface Typed
        Returns:
        Type.