You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Harvey Raja (JIRA)" <ji...@apache.org> on 2016/06/14 13:25:51 UTC

[jira] [Created] (MSHADE-228) Shade can incorrectly re-write an InterfaceMethodRef in the constant pool to a MethodRef

Harvey Raja created MSHADE-228:
----------------------------------

             Summary: Shade can incorrectly re-write an InterfaceMethodRef in the constant pool to a MethodRef
                 Key: MSHADE-228
                 URL: https://issues.apache.org/jira/browse/MSHADE-228
             Project: Maven Shade Plugin
          Issue Type: Bug
    Affects Versions: 2.4.3
            Reporter: Harvey Raja


Given an interface such as:
{code}
public interface InvalidMethodRefExample
    {
    String getLocation();

    static InvalidMethodRefExample autoDetect()
        {
        return () -> "$Default$";
        }
    }
{code}

{{javac}} correctly produces a bootstrap method that has a {{MethodHandle}} for its second argument to {{LambdaMetafactory.metafactory}}, and the {{MethodHandle}} is to an {{InterfaceMethodref}}.

After running shade the {{InterfaceMethodref}} becomes a {{Methodref}}.

This seems to have been the result for some time now but with Java 9 it appears that the java team have decided to enforce this CP type and will be a real problem when using shade and Java 9.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)