Load Java parameter names correctly in BinaryJavaMethod
PSI-based implementation (accessible via `-Xuse-old-class-files-reading`) loads parameter names from the "MethodParameters" attribute if it's present, so our own implementation should as well. This metadata doesn't seem supported in the java.lang.model.element API though, so SymbolBasedValueParameter (which is used in `-Xuse-javac`) will continue to have incorrect behavior for now #KT-25193 Fixed
This commit is contained in:
+12
-8
@@ -19,10 +19,8 @@ package org.jetbrains.kotlin.jvm.compiler;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.text.StringKt;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import kotlin.io.FilesKt;
|
||||
import kotlin.sequences.SequencesKt;
|
||||
import kotlin.text.Charsets;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -118,14 +116,21 @@ public class LoadDescriptorUtil {
|
||||
}
|
||||
|
||||
public static void compileJavaWithAnnotationsJar(@NotNull Collection<File> javaFiles, @NotNull File outDir) throws IOException {
|
||||
List<String> args = new ArrayList<>(Arrays.asList(
|
||||
"-sourcepath", "compiler/testData/loadJava/include",
|
||||
"-d", outDir.getPath())
|
||||
);
|
||||
|
||||
List<File> classpath = new ArrayList<>();
|
||||
|
||||
classpath.add(ForTestCompileRuntime.runtimeJarForTests());
|
||||
classpath.add(KotlinTestUtils.getAnnotationsJar());
|
||||
|
||||
for (File test: javaFiles) {
|
||||
for (File test : javaFiles) {
|
||||
String content = FilesKt.readText(test, Charsets.UTF_8);
|
||||
|
||||
args.addAll(InTextDirectivesUtils.findListWithPrefixes(content, "JAVAC_OPTIONS:"));
|
||||
|
||||
if (InTextDirectivesUtils.isDirectiveDefined(content, "ANDROID_ANNOTATIONS")) {
|
||||
classpath.add(ForTestCompileRuntime.androidAnnotationsForTests());
|
||||
}
|
||||
@@ -135,11 +140,10 @@ public class LoadDescriptorUtil {
|
||||
}
|
||||
}
|
||||
|
||||
KotlinTestUtils.compileJavaFiles(javaFiles, Arrays.asList(
|
||||
"-classpath", classpath.stream().map(File::getPath).collect(Collectors.joining(File.pathSeparator)),
|
||||
"-sourcepath", "compiler/testData/loadJava/include",
|
||||
"-d", outDir.getPath()
|
||||
));
|
||||
args.add("-classpath");
|
||||
args.add(classpath.stream().map(File::getPath).collect(Collectors.joining(File.pathSeparator)));
|
||||
|
||||
KotlinTestUtils.compileJavaFiles(javaFiles, args);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user