From 785f7e749ff9dc1b9a6804336cf83a00b5c000cd Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Fri, 27 Mar 2015 11:05:53 +0300 Subject: [PATCH] InlineCodegen: find virtual file using findVirtualFileWithHeader --- .../codegen/inline/InlineCodegenUtil.java | 2 +- .../jvm/compiler/CliVirtualFileFinder.java | 11 -------- .../kotlin/load/kotlin/VirtualFileFinder.java | 4 --- .../vfilefinder/IDEVirtualFileFinder.java | 25 ------------------- .../testData/debugger/tinyApp/outs/stdlib.out | 1 + .../src/evaluate/singleBreakpoint/stdlib.kt | 5 +++- 6 files changed, 6 insertions(+), 42 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegenUtil.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegenUtil.java index d63a4b4815e..385bd9f6416 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegenUtil.java @@ -179,7 +179,7 @@ public class InlineCodegenUtil { @Nullable public static VirtualFile findVirtualFile(@NotNull Project project, @NotNull String internalName) { VirtualFileFinder fileFinder = VirtualFileFinder.SERVICE.getInstance(project); - return fileFinder.findVirtualFile(internalName); + return fileFinder.findVirtualFileWithHeader(new FqName(internalName.replace('/', '.'))); } //TODO: navigate to inner classes diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinder.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinder.java index c195bf96b43..5033784e4e1 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinder.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliVirtualFileFinder.java @@ -46,17 +46,6 @@ public class CliVirtualFileFinder extends VirtualFileKotlinClassFinder implement return null; } - @Override - public VirtualFile findVirtualFile(@NotNull String internalName) { - for (VirtualFile root : classPath) { - VirtualFile fileInRoot = findFileInRoot(internalName, root, '/'); - if (fileInRoot != null) { - return fileInRoot; - } - } - return null; - } - //NOTE: copied with some changes from CoreJavaFileManager @Nullable private static VirtualFile findFileInRoot(@NotNull String qName, @NotNull VirtualFile root, char separator) { diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/VirtualFileFinder.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/VirtualFileFinder.java index fbe0b664a77..c75bbe47f11 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/VirtualFileFinder.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/VirtualFileFinder.java @@ -34,8 +34,4 @@ public interface VirtualFileFinder extends KotlinClassFinder { @Nullable VirtualFile findVirtualFileWithHeader(@NotNull FqName className); - - /*Also finds files without kotlin header*/ - @Nullable - VirtualFile findVirtualFile(@NotNull String internalName); } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/IDEVirtualFileFinder.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/IDEVirtualFileFinder.java index 3d59e78f7f7..0076856bf37 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/IDEVirtualFileFinder.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/IDEVirtualFileFinder.java @@ -16,12 +16,9 @@ package org.jetbrains.kotlin.idea.vfilefinder; -import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiClass; -import com.intellij.psi.impl.file.impl.JavaFileManager; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.util.indexing.FileBasedIndex; import org.jetbrains.annotations.NotNull; @@ -60,26 +57,4 @@ public final class IDEVirtualFileFinder extends VirtualFileKotlinClassFinder imp } return files.iterator().next(); } - - @Override - public VirtualFile findVirtualFile(@NotNull String internalName) { - JavaFileManager fileFinder = ServiceManager.getService(project, JavaFileManager.class); - - String qName = internalName.replace('/', '.'); - PsiClass psiClass = fileFinder.findClass(qName, scope); - if (psiClass == null) { - int dollarIndex = qName.indexOf('$'); - assert dollarIndex > 0 : "Only inner classes could be found with this patch: " + internalName; - String newName = qName.substring(0, dollarIndex); - psiClass = fileFinder.findClass(newName, scope); - if (psiClass != null) { - int i = qName.lastIndexOf('.'); - return psiClass.getContainingFile().getVirtualFile().getParent().findChild(qName.substring(i + 1) + ".class"); - } - } - if (psiClass != null) { - return psiClass.getContainingFile().getVirtualFile(); - } - return null; - } } diff --git a/idea/testData/debugger/tinyApp/outs/stdlib.out b/idea/testData/debugger/tinyApp/outs/stdlib.out index 5acedb5e5b7..d803fc7ac64 100644 --- a/idea/testData/debugger/tinyApp/outs/stdlib.out +++ b/idea/testData/debugger/tinyApp/outs/stdlib.out @@ -9,6 +9,7 @@ Compile bytecode for javaClass() Compile bytecode for javaClass() Compile bytecode for 100.toInt() Compile bytecode for 100.toLong() +Compile bytecode for args.sortBy { it }.size() Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' Process finished with exit code 0 diff --git a/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/stdlib.kt b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/stdlib.kt index 14ca45fdb91..bd1a8290a9f 100644 --- a/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/stdlib.kt +++ b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/stdlib.kt @@ -24,4 +24,7 @@ fun main(args: Array) { // RESULT: 100: I // EXPRESSION: 100.toLong() -// RESULT: 100: J \ No newline at end of file +// RESULT: 100: J + +// EXPRESSION: args.sortBy { it }.size() +// RESULT: 0: I \ No newline at end of file