rewrite icon indicating copy to clipboard operation
rewrite copied to clipboard

Matching Varargs from Refaster recipe

Open Laurens-W opened this issue 1 year ago • 1 comments

When the recipe below is ran against the test case the generated JavaTemplate.Matcher doesn't find a match. I've also tried boolean[] items but it made no difference

Recipe

    @RecipeDescriptor(
            name = "`Booleans.asList` to `Arrays.asList`",
            description = "Migrate from Guava `Booleans.asList` to `Arrays.asList`."
    )
    public static class BooleanAsList {

        @BeforeTemplate
        List<Boolean> before(boolean... items) {
            return Booleans.asList(items);
        }

        @AfterTemplate
        List<Boolean> after(Boolean... items) {
            return Arrays.asList(items);
        }
    }

Test case

    @Test
    void replaceBoolean() {
        //language=java
        rewriteRun(
          java(
            """
              import com.google.common.primitives.Booleans;
              
              class Test {
                  List<Boolean> bools = Booleans.asList(true, false);
              }
              """,
            """
              class Test {
                  List<Boolean> bools = Arrays.asList(true, false);
              }
              """
          )
        );
    }

Java template code String

"com.google.common.primitives.Booleans.asList(#{items:anyArray(boolean)})"

Laurens-W avatar Aug 08 '24 08:08 Laurens-W

@knutwannheden Tim asked me to inform you of this issue

Laurens-W avatar Aug 08 '24 08:08 Laurens-W

Refaster has a Annotation '@Repeated' for that. -> https://github.com/google/error-prone/issues/568 but it doesn't work yet

Totemuegerli avatar Feb 06 '25 15:02 Totemuegerli