Don't try to read binary data from a non-class file

Fixes EA-59470, where a virtual file is checked to be a compiled Kotlin class
from the decompiler (which doesn't check its FileType)
This commit is contained in:
Alexander Udalov
2014-08-27 14:04:56 +04:00
parent 8c041f56cc
commit b0cb4c330f
2 changed files with 3 additions and 7 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.jet.lang.resolve.kotlin;
import com.intellij.ide.highlighter.JavaClassFileType;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.util.Ref;
@@ -45,6 +46,8 @@ public final class KotlinBinaryClassCache implements Disposable {
@Nullable
public static KotlinJvmBinaryClass getKotlinBinaryClass(@NotNull VirtualFile file) {
if (file.getFileType() != JavaClassFileType.INSTANCE) return null;
KotlinBinaryClassCache service = ServiceManager.getService(KotlinBinaryClassCache.class);
return service.cache.get().get(file).get();
}
@@ -16,9 +16,6 @@
package org.jetbrains.jet.lang.resolve.kotlin
import com.intellij.ide.highlighter.JavaClassFileType
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.annotations.Nullable
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaClassImpl
import org.jetbrains.jet.lang.resolve.name.FqName
@@ -38,10 +35,6 @@ public abstract class VirtualFileKotlinClassFinder() : VirtualFileFinder {
file = file.getParent()!!.findChild(classFileName(javaClass) + ".class").sure("Virtual file not found for $javaClass")
}
if (file.getFileType() != JavaClassFileType.INSTANCE) {
return null
}
return KotlinBinaryClassCache.getKotlinBinaryClass(file)
}