Skip to content

Non-variadic functions clashing with variadic functions are erroneously invoked #478

@purplesyringa

Description

@purplesyringa

Vineflower version

1.11.1

Describe the bug

// outputs "variadic"
class Test {
    public static void main(String[] args) {
        overloaded(new Object[]{"arg"});
    }

    static void overloaded(Object o) {
        System.out.println("non-variadic");
    }

    static void overloaded(Object... o) {
        System.out.println("variadic");
    }
}

decompiles to

// outputs "non-variadic"
class Test {
   public static void main(String[] var0) {
      overloaded("arg");
   }

   static void overloaded(Object var0) {
      System.out.println("non-variadic");
   }

   static void overloaded(Object... var0) {
      System.out.println("variadic");
   }
}

which invokes the wrong overload.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority: HighHigh prioritySubsystem: WritingAnything concerning how expressions are writtenType: BugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions