diff --git a/rewrite-groovy/src/main/java/org/openrewrite/groovy/GroovyParserVisitor.java b/rewrite-groovy/src/main/java/org/openrewrite/groovy/GroovyParserVisitor.java index b68eafaa37..9e8b7509a2 100644 --- a/rewrite-groovy/src/main/java/org/openrewrite/groovy/GroovyParserVisitor.java +++ b/rewrite-groovy/src/main/java/org/openrewrite/groovy/GroovyParserVisitor.java @@ -2405,7 +2405,7 @@ private JRightPadded convertTopLevelStatement(SourceUnit unit, ASTNod if (sourceStartsWith("as")) { alias = padLeft(sourceBefore("as"), new J.Identifier(randomId(), whitespace(), Markers.EMPTY, emptyList(), name(), null, null)); } - return maybeSemicolon(new J.Import(randomId(), importPrefix, Markers.EMPTY, statik, qualid, alias)); + return maybeSemicolon(new J.Import(randomId(), importPrefix, Markers.EMPTY, statik, null, qualid, alias)); } RewriteGroovyVisitor groovyVisitor = new RewriteGroovyVisitor(node, new RewriteGroovyClassVisitor(unit)); diff --git a/rewrite-java-11/src/main/java/org/openrewrite/java/isolated/ReloadableJava11ParserVisitor.java b/rewrite-java-11/src/main/java/org/openrewrite/java/isolated/ReloadableJava11ParserVisitor.java index a99108285d..b56707f4db 100644 --- a/rewrite-java-11/src/main/java/org/openrewrite/java/isolated/ReloadableJava11ParserVisitor.java +++ b/rewrite-java-11/src/main/java/org/openrewrite/java/isolated/ReloadableJava11ParserVisitor.java @@ -721,6 +721,7 @@ public J visitImport(ImportTree node, Space fmt) { return new J.Import(randomId(), fmt, Markers.EMPTY, new JLeftPadded<>(node.isStatic() ? sourceBefore("static") : EMPTY, node.isStatic(), Markers.EMPTY), + JLeftPadded.build(false), convert(node.getQualifiedIdentifier()), null); } diff --git a/rewrite-java-17/src/main/java/org/openrewrite/java/isolated/ReloadableJava17ParserVisitor.java b/rewrite-java-17/src/main/java/org/openrewrite/java/isolated/ReloadableJava17ParserVisitor.java index 82fbdecd61..5580711bb0 100644 --- a/rewrite-java-17/src/main/java/org/openrewrite/java/isolated/ReloadableJava17ParserVisitor.java +++ b/rewrite-java-17/src/main/java/org/openrewrite/java/isolated/ReloadableJava17ParserVisitor.java @@ -816,6 +816,7 @@ public J visitImport(ImportTree node, Space fmt) { return new J.Import(randomId(), fmt, Markers.EMPTY, new JLeftPadded<>(node.isStatic() ? sourceBefore("static") : EMPTY, node.isStatic(), Markers.EMPTY), + JLeftPadded.build(false), convert(node.getQualifiedIdentifier()), null); } diff --git a/rewrite-java-21/src/main/java/org/openrewrite/java/isolated/ReloadableJava21ParserVisitor.java b/rewrite-java-21/src/main/java/org/openrewrite/java/isolated/ReloadableJava21ParserVisitor.java index 0d5012f6f5..89409b0752 100644 --- a/rewrite-java-21/src/main/java/org/openrewrite/java/isolated/ReloadableJava21ParserVisitor.java +++ b/rewrite-java-21/src/main/java/org/openrewrite/java/isolated/ReloadableJava21ParserVisitor.java @@ -818,6 +818,7 @@ public J visitImport(ImportTree node, Space fmt) { return new J.Import(randomId(), fmt, Markers.EMPTY, new JLeftPadded<>(node.isStatic() ? sourceBefore("static") : EMPTY, node.isStatic(), Markers.EMPTY), + JLeftPadded.build(false), convert(node.getQualifiedIdentifier()), null); } diff --git a/rewrite-java-25/src/main/java/org/openrewrite/java/isolated/ReloadableJava25ParserVisitor.java b/rewrite-java-25/src/main/java/org/openrewrite/java/isolated/ReloadableJava25ParserVisitor.java index 0cafe05429..d9cc955a56 100644 --- a/rewrite-java-25/src/main/java/org/openrewrite/java/isolated/ReloadableJava25ParserVisitor.java +++ b/rewrite-java-25/src/main/java/org/openrewrite/java/isolated/ReloadableJava25ParserVisitor.java @@ -818,6 +818,8 @@ public J visitImport(ImportTree node, Space fmt) { return new J.Import(randomId(), fmt, Markers.EMPTY, new JLeftPadded<>(node.isStatic() ? sourceBefore("static") : EMPTY, node.isStatic(), Markers.EMPTY), + new JLeftPadded<>(node.isModule() ? sourceBefore("module") : EMPTY, + node.isModule(), Markers.EMPTY), convert(node.getQualifiedIdentifier()), null); } diff --git a/rewrite-java-8/src/main/java/org/openrewrite/java/ReloadableJava8ParserVisitor.java b/rewrite-java-8/src/main/java/org/openrewrite/java/ReloadableJava8ParserVisitor.java index 3906136da8..d5791c26f7 100644 --- a/rewrite-java-8/src/main/java/org/openrewrite/java/ReloadableJava8ParserVisitor.java +++ b/rewrite-java-8/src/main/java/org/openrewrite/java/ReloadableJava8ParserVisitor.java @@ -720,6 +720,7 @@ public J visitImport(ImportTree node, Space fmt) { return new J.Import(randomId(), fmt, Markers.EMPTY, new JLeftPadded<>(node.isStatic() ? sourceBefore("static") : EMPTY, node.isStatic(), Markers.EMPTY), + JLeftPadded.build(false), convert(node.getQualifiedIdentifier()), null); } diff --git a/rewrite-java-tck/src/main/java/org/openrewrite/java/tree/ImportTest.java b/rewrite-java-tck/src/main/java/org/openrewrite/java/tree/ImportTest.java index 8771747a89..14e252dbf5 100644 --- a/rewrite-java-tck/src/main/java/org/openrewrite/java/tree/ImportTest.java +++ b/rewrite-java-tck/src/main/java/org/openrewrite/java/tree/ImportTest.java @@ -18,6 +18,7 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.openrewrite.Issue; +import org.openrewrite.java.MinimumJava25; import org.openrewrite.test.RewriteTest; import org.openrewrite.test.TypeValidation; @@ -239,4 +240,130 @@ void semicolonAfterImports() { ) ); } + + @Issue("https://openjdk.org/jeps/511") + @MinimumJava25 + @Test + void moduleImportBasic() { + rewriteRun( + java( + """ + import module java.base; + + public class A { + String s = "test"; + List list; + } + """ + ) + ); + } + + @Issue("https://openjdk.org/jeps/511") + @MinimumJava25 + @Test + void moduleImportMultiple() { + rewriteRun( + java( + """ + import module java.base; + import module java.sql; + + public class A { + Set s; + Connection conn; + } + """, + spec -> spec.afterRecipe(cu -> assertThat(cu.getImports().stream() + .filter(J.Import::isModule) + .map(J.Import::getQualid) + .map(J.FieldAccess::toString)) + .containsExactly( + "java.base", + "java.sql" + )) + ) + ); + } + + @Issue("https://openjdk.org/jeps/511") + @MinimumJava25 + @Test + void moduleImportWithRegularImports() { + rewriteRun( + java( + """ + import module java.base; + import java.util.HashMap; + import static java.util.Collections.emptyList; + + public class A { + String s; + HashMap map; + List list = emptyList(); + } + """ + ) + ); + } + + @Issue("https://openjdk.org/jeps/511") + @MinimumJava25 + @Test + void moduleImportShadowing() { + rewriteRun( + java( + """ + import module java.base; + // List is ambiguous here because java.awt.List is also in java.base + import java.util.List; + import java.awt.*; + + public class A { + List list; + Color color; + } + """ + ) + ); + } + + @Issue("https://openjdk.org/jeps/511") + @MinimumJava25 + @Test + void moduleImportAggregator() { + rewriteRun( + java( + """ + import module java.se; + + public class A { + String s; + List list; + Connection conn; + Path path; + } + """ + ) + ); + } + + @Issue("https://openjdk.org/jeps/511") + @MinimumJava25 + @Test + void moduleImportOrdering() { + rewriteRun( + java( + """ + import java.util.List; + import module java.base; + import static java.util.Collections.emptyList; + import module java.sql; + import java.util.*; + + public class A {} + """ + ) + ); + } } diff --git a/rewrite-java/src/main/java/org/openrewrite/java/AddImport.java b/rewrite-java/src/main/java/org/openrewrite/java/AddImport.java index 67bd8fa3f0..1f638f2e28 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/AddImport.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/AddImport.java @@ -71,6 +71,9 @@ public class AddImport

extends JavaIsoVisitor

{ @Nullable private final String member; + @EqualsAndHashCode.Include + private final boolean module; + @EqualsAndHashCode.Include private final boolean onlyIfReferenced; @@ -84,6 +87,18 @@ public AddImport(String type, @Nullable String member, boolean onlyIfReferenced) this.typeName = lastDotIdx != -1 ? type.substring(lastDotIdx + 1) : type; this.fullyQualifiedName = type; this.member = member; + this.module = false; + this.onlyIfReferenced = onlyIfReferenced; + alias = null; + } + + public AddImport(String type, @Nullable String member, boolean module, boolean onlyIfReferenced) { + int lastDotIdx = type.lastIndexOf('.'); + this.packageName = lastDotIdx != -1 ? type.substring(0, lastDotIdx) : null; + this.typeName = lastDotIdx != -1 ? type.substring(lastDotIdx + 1) : type; + this.fullyQualifiedName = type; + this.member = member; + this.module = module; this.onlyIfReferenced = onlyIfReferenced; alias = null; } @@ -93,6 +108,16 @@ public AddImport(@Nullable String packageName, String typeName, @Nullable String this.typeName = typeName.replace('.', '$'); this.fullyQualifiedName = packageName == null ? typeName : packageName + "." + typeName; this.member = member; + this.module = false; + this.onlyIfReferenced = onlyIfReferenced; + this.alias = alias; + } + public AddImport(@Nullable String packageName, String typeName, @Nullable String member, boolean module, @Nullable String alias, boolean onlyIfReferenced) { + this.packageName = packageName; + this.typeName = typeName.replace('.', '$'); + this.fullyQualifiedName = packageName == null ? typeName : packageName + "." + typeName; + this.member = member; + this.module = module; this.onlyIfReferenced = onlyIfReferenced; this.alias = alias; } @@ -145,6 +170,8 @@ public AddImport(@Nullable String packageName, String typeName, @Nullable String Markers.EMPTY, new JLeftPadded<>(member == null ? Space.EMPTY : Space.SINGLE_SPACE, member != null, Markers.EMPTY), + new JLeftPadded<>(module ? Space.SINGLE_SPACE : Space.EMPTY, + module, Markers.EMPTY), TypeTree.build(fullyQualifiedName + (member == null ? "" : "." + member)).withPrefix(Space.SINGLE_SPACE), null); diff --git a/rewrite-java/src/main/java/org/openrewrite/java/JavaPrinter.java b/rewrite-java/src/main/java/org/openrewrite/java/JavaPrinter.java index c16570cec1..e9b28c08c9 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/JavaPrinter.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/JavaPrinter.java @@ -716,6 +716,9 @@ public J visitImport(J.Import import_, PrintOutputCapture

p) { if (import_.isStatic()) { visitSpace(import_.getPadding().getStatic().getBefore(), Space.Location.STATIC_IMPORT, p); p.append("static"); + } else if (import_.isModule()) { + visitSpace(import_.getPadding().getModule().getBefore(), Space.Location.MODULE_IMPORT, p); + p.append("module"); } visit(import_.getQualid(), p); afterSyntax(import_, p); diff --git a/rewrite-java/src/main/java/org/openrewrite/java/JavaVisitor.java b/rewrite-java/src/main/java/org/openrewrite/java/JavaVisitor.java index ba2e7e9a40..b4695e5761 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/JavaVisitor.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/JavaVisitor.java @@ -126,11 +126,22 @@ public void maybeAddImport(String fullyQualifiedName, @Nullable String member, b int lastDotIdx = fullyQualifiedName.lastIndexOf('.'); String packageName = lastDotIdx != -1 ? fullyQualifiedName.substring(0, lastDotIdx) : null; String typeName = lastDotIdx != -1 ? fullyQualifiedName.substring(lastDotIdx + 1) : fullyQualifiedName; - maybeAddImport(packageName, typeName, member, null, onlyIfReferenced); + maybeAddImport(packageName, typeName, member, false, null, onlyIfReferenced); + } + + public void maybeAddImport(String fullyQualifiedName, boolean module, boolean onlyIfReferenced) { + int lastDotIdx = fullyQualifiedName.lastIndexOf('.'); + String packageName = lastDotIdx != -1 ? fullyQualifiedName.substring(0, lastDotIdx) : null; + String typeName = lastDotIdx != -1 ? fullyQualifiedName.substring(lastDotIdx + 1) : fullyQualifiedName; + maybeAddImport(packageName, typeName, null, module, null, onlyIfReferenced); } public void maybeAddImport(@Nullable String packageName, String typeName, @Nullable String member, @Nullable String alias, boolean onlyIfReferenced) { - JavaVisitor

visitor = service(ImportService.class).addImportVisitor(packageName, typeName, member, alias, onlyIfReferenced); + maybeAddImport(packageName, typeName, member, false, alias, onlyIfReferenced); + } + + public void maybeAddImport(@Nullable String packageName, String typeName, @Nullable String member, boolean module, @Nullable String alias, boolean onlyIfReferenced) { + JavaVisitor

visitor = service(ImportService.class).addImportVisitor(packageName, typeName, member, module, alias, onlyIfReferenced); if (!getAfterVisit().contains(visitor)) { doAfterVisit(visitor); } diff --git a/rewrite-java/src/main/java/org/openrewrite/java/service/ImportService.java b/rewrite-java/src/main/java/org/openrewrite/java/service/ImportService.java index 51379bf31a..362ba5387c 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/service/ImportService.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/service/ImportService.java @@ -31,7 +31,16 @@ public

JavaVisitor

addImportVisitor(@Nullable String packageName, @Nullable String member, @Nullable String alias, boolean onlyIfReferenced) { - return new AddImport<>(packageName, typeName, member, alias, onlyIfReferenced); + return new AddImport<>(packageName, typeName, member, alias, onlyIfReferenced); + } + + public

JavaVisitor

addImportVisitor(@Nullable String packageName, + String typeName, + @Nullable String member, + boolean module, + @Nullable String alias, + boolean onlyIfReferenced) { + return new AddImport<>(packageName, typeName, member, module, alias, onlyIfReferenced); } public JavaVisitor shortenAllFullyQualifiedTypeReferences() { diff --git a/rewrite-java/src/main/java/org/openrewrite/java/tree/J.java b/rewrite-java/src/main/java/org/openrewrite/java/tree/J.java index fdcc286adc..5379a33b8d 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/tree/J.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/tree/J.java @@ -2851,6 +2851,7 @@ public If withThenPart(JRightPadded thenPart) { @RequiredArgsConstructor @AllArgsConstructor(access = AccessLevel.PRIVATE) final class Import implements Statement, Comparable { + @Nullable @NonFinal transient WeakReference padding; @@ -2870,6 +2871,9 @@ final class Import implements Statement, Comparable { JLeftPadded statik; + @Nullable + JLeftPadded module; + @With @Getter FieldAccess qualid; @@ -2881,15 +2885,22 @@ public boolean isStatic() { return statik.getElement(); } - public Import withStatic(boolean statik) { + public J.Import withStatic(boolean statik) { return getPadding().withStatic(this.statik.withElement(statik)); } + public boolean isModule() { + return module != null ? module.getElement() : false; + } + + public J.Import withModule(boolean module) { + return this.module != null ? + getPadding().withModule(this.module.withElement(module)) : + getPadding().withModule(JLeftPadded.build(module)); + } + public J.@Nullable Identifier getAlias() { - if (alias == null) { - return null; - } - return alias.getElement(); + return alias != null ? alias.getElement() : null; } public J.Import withAlias(J.@Nullable Identifier alias) { @@ -2897,12 +2908,12 @@ public J.Import withAlias(J.@Nullable Identifier alias) { if (alias == null) { return this; } - return new J.Import(null, id, prefix, markers, statik, qualid, JLeftPadded + return new J.Import(null, id, prefix, markers, statik, module, qualid, JLeftPadded .build(alias) .withBefore(Space.format(" "))); } if (alias == null) { - return new J.Import(null, id, prefix, markers, statik, qualid, null); + return new J.Import(null, id, prefix, markers, statik, module, qualid, null); } return getPadding().withAlias(this.alias.withElement(alias)); } @@ -3056,7 +3067,15 @@ public JLeftPadded getStatic() { } public Import withStatic(JLeftPadded statik) { - return t.statik == statik ? t : new Import(t.id, t.prefix, t.markers, statik, t.qualid, t.alias); + return t.statik == statik ? t : new Import(t.id, t.prefix, t.markers, statik, t.module, t.qualid, t.alias); + } + + public @Nullable JLeftPadded getModule() { + return t.module; + } + + public Import withModule(JLeftPadded module) { + return t.module == module ? t : new Import(t.id, t.prefix, t.markers, t.statik, module, t.qualid, t.alias); } public @Nullable JLeftPadded getAlias() { @@ -3064,7 +3083,7 @@ public Import withStatic(JLeftPadded statik) { } public Import withAlias(@Nullable JLeftPadded alias) { - return t.alias == alias ? t : new Import(t.id, t.prefix, t.markers, t.statik, t.qualid, alias); + return t.alias == alias ? t : new Import(t.id, t.prefix, t.markers, t.statik, t.module, t.qualid, alias); } } diff --git a/rewrite-java/src/main/java/org/openrewrite/java/tree/Space.java b/rewrite-java/src/main/java/org/openrewrite/java/tree/Space.java index 9ada9a2d9b..befd22b313 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/tree/Space.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/tree/Space.java @@ -399,6 +399,7 @@ public enum Location { METHOD_INVOCATION_PREFIX, METHOD_SELECT_SUFFIX, MODIFIER_PREFIX, + MODULE_IMPORT, MULTI_CATCH_PREFIX, NAMED_VARIABLE_SUFFIX, NEW_ARRAY_INITIALIZER, diff --git a/rewrite-java/src/test/java/org/openrewrite/java/style/ImportLayoutStyleTest.java b/rewrite-java/src/test/java/org/openrewrite/java/style/ImportLayoutStyleTest.java index 6609645a26..67370701d3 100644 --- a/rewrite-java/src/test/java/org/openrewrite/java/style/ImportLayoutStyleTest.java +++ b/rewrite-java/src/test/java/org/openrewrite/java/style/ImportLayoutStyleTest.java @@ -94,6 +94,7 @@ void addImportInPresenceOfDuplicateOtherImport() { Space.EMPTY, Markers.EMPTY, new JLeftPadded<>(Space.SINGLE_SPACE, true, Markers.EMPTY), + JLeftPadded.build(false), TypeTree.build("pkg.Clazz.MEMBER_1").withPrefix(Space.SINGLE_SPACE), null), Space.EMPTY, @@ -104,6 +105,7 @@ void addImportInPresenceOfDuplicateOtherImport() { Space.EMPTY, Markers.EMPTY, new JLeftPadded<>(Space.SINGLE_SPACE, true, Markers.EMPTY), + JLeftPadded.build(false), TypeTree.build("pkg.Clazz.MEMBER_1").withPrefix(Space.SINGLE_SPACE), null), Space.EMPTY, @@ -113,6 +115,7 @@ void addImportInPresenceOfDuplicateOtherImport() { Space.EMPTY, Markers.EMPTY, new JLeftPadded<>(Space.SINGLE_SPACE, true, Markers.EMPTY), + JLeftPadded.build(false), TypeTree.build("pkg.Clazz.MEMBER_2").withPrefix(Space.SINGLE_SPACE), null); assertThat(style.addImport(List.of(import1, import2), importToAdd, null, emptyList())) @@ -131,6 +134,7 @@ void addImportWithNewLineInUnsortedImportList() { Space.EMPTY, Markers.EMPTY, new JLeftPadded<>(Space.SINGLE_SPACE, true, Markers.EMPTY), + JLeftPadded.build(false), TypeTree.build("pkg.AAA.MEMBER_0").withPrefix(Space.SINGLE_SPACE), null), Space.EMPTY, @@ -141,6 +145,7 @@ void addImportWithNewLineInUnsortedImportList() { Space.EMPTY, Markers.EMPTY, new JLeftPadded<>(Space.SINGLE_SPACE, true, Markers.EMPTY), + JLeftPadded.build(false), TypeTree.build("pkg.Clazz.MEMBER_3").withPrefix(Space.SINGLE_SPACE), null), Space.EMPTY, @@ -151,6 +156,7 @@ void addImportWithNewLineInUnsortedImportList() { Space.EMPTY, Markers.EMPTY, new JLeftPadded<>(Space.SINGLE_SPACE, true, Markers.EMPTY), + JLeftPadded.build(false), TypeTree.build("pkg.Clazz.MEMBER_1").withPrefix(Space.SINGLE_SPACE), null), Space.EMPTY, @@ -160,6 +166,7 @@ void addImportWithNewLineInUnsortedImportList() { Space.EMPTY, Markers.EMPTY, new JLeftPadded<>(Space.EMPTY, true, Markers.EMPTY), + JLeftPadded.build(false), TypeTree.build("pkg.Clazz.MEMBER_2").withPrefix(Space.SINGLE_SPACE), null); diff --git a/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/AddImport.java b/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/AddImport.java index d36613bbca..d565c306b1 100644 --- a/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/AddImport.java +++ b/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/AddImport.java @@ -144,6 +144,7 @@ public AddImport(@Nullable String packageName, String typeName, @Nullable String Space.EMPTY, Markers.EMPTY, new JLeftPadded<>(Space.EMPTY, member != null, Markers.EMPTY), + null, TypeTree.build(fullyQualifiedName + (member == null ? "" : "." + member), '`').withPrefix(Space.SINGLE_SPACE), alias != null ? new JLeftPadded<>( diff --git a/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/internal/KotlinTreeParserVisitor.java b/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/internal/KotlinTreeParserVisitor.java index be8ff606d3..9088733faa 100644 --- a/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/internal/KotlinTreeParserVisitor.java +++ b/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/internal/KotlinTreeParserVisitor.java @@ -2594,6 +2594,7 @@ public J visitImportDirective(KtImportDirective importDirective, ExecutionContex deepPrefix(importDirective), Markers.EMPTY, rpStatic, + null, (J.FieldAccess) reference, // Aliases contain Kotlin `Name` and do not resolve to a type. The aliases type is the import directive, so we set the type to match the import. alias != null ? padLeft(prefix(alias), createIdentifier(requireNonNull(alias.getNameIdentifier()), jt)) : null diff --git a/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/service/KotlinImportService.java b/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/service/KotlinImportService.java index 728fc6a9a0..2ffccd2763 100644 --- a/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/service/KotlinImportService.java +++ b/rewrite-kotlin/src/main/java/org/openrewrite/kotlin/service/KotlinImportService.java @@ -23,7 +23,7 @@ public class KotlinImportService extends ImportService { @Override - public

JavaVisitor

addImportVisitor(@Nullable String packageName, String typeName, @Nullable String member, @Nullable String alias, boolean onlyIfReferenced) { + public

JavaVisitor

addImportVisitor(@Nullable String packageName, String typeName, @Nullable String member, boolean __, @Nullable String alias, boolean onlyIfReferenced) { return new AddImport<>(packageName, typeName, member, alias, onlyIfReferenced); } }