update KotlinCoverageExtension according to removal of package facades
This commit is contained in:
@@ -16,32 +16,28 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.coverage
|
package org.jetbrains.kotlin.idea.coverage
|
||||||
|
|
||||||
import com.intellij.coverage.JavaCoverageEngineExtension
|
|
||||||
import com.intellij.execution.configurations.RunConfigurationBase
|
|
||||||
import org.jetbrains.kotlin.idea.run.JetRunConfiguration
|
|
||||||
import com.intellij.psi.PsiFile
|
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
|
||||||
import com.intellij.coverage.CoverageSuitesBundle
|
import com.intellij.coverage.CoverageSuitesBundle
|
||||||
import java.io.File
|
import com.intellij.coverage.JavaCoverageAnnotator
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import com.intellij.coverage.JavaCoverageEngineExtension
|
||||||
import com.intellij.openapi.roots.ProjectRootManager
|
|
||||||
import com.intellij.psi.PsiClass
|
|
||||||
import com.intellij.openapi.util.text.StringUtil
|
|
||||||
import com.intellij.psi.PsiNamedElement
|
|
||||||
import com.intellij.coverage.PackageAnnotator
|
import com.intellij.coverage.PackageAnnotator
|
||||||
|
import com.intellij.execution.configurations.RunConfigurationBase
|
||||||
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import com.intellij.openapi.module.ModuleUtilCore
|
import com.intellij.openapi.module.ModuleUtilCore
|
||||||
import com.intellij.openapi.roots.CompilerModuleExtension
|
import com.intellij.openapi.roots.CompilerModuleExtension
|
||||||
import com.intellij.coverage.JavaCoverageAnnotator
|
import com.intellij.openapi.roots.ProjectRootManager
|
||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
|
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
|
||||||
import com.intellij.openapi.diagnostic.Logger
|
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackageClassUtils
|
|
||||||
import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache
|
|
||||||
import com.intellij.openapi.vfs.LocalFileSystem
|
|
||||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
|
||||||
import com.intellij.openapi.util.io.FileUtilRt
|
import com.intellij.openapi.util.io.FileUtilRt
|
||||||
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
|
import com.intellij.psi.PsiClass
|
||||||
|
import com.intellij.psi.PsiFile
|
||||||
|
import com.intellij.psi.PsiNamedElement
|
||||||
|
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
||||||
|
import org.jetbrains.kotlin.idea.run.JetRunConfiguration
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
public class KotlinCoverageExtension(): JavaCoverageEngineExtension() {
|
public class KotlinCoverageExtension(): JavaCoverageEngineExtension() {
|
||||||
private val LOG = Logger.getInstance(javaClass<KotlinCoverageExtension>())
|
private val LOG = Logger.getInstance(javaClass<KotlinCoverageExtension>())
|
||||||
@@ -77,23 +73,6 @@ public class KotlinCoverageExtension(): JavaCoverageEngineExtension() {
|
|||||||
return true // keep everything, sort it out later
|
return true // keep everything, sort it out later
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements API added in IDEA 14.1
|
|
||||||
override fun ignoreCoverageForClass(bundle: CoverageSuitesBundle, classFile: File): Boolean {
|
|
||||||
// Ignore classes that only contain bridge methods delegating to package parts.
|
|
||||||
if (looksLikePackageFacade(classFile)) {
|
|
||||||
val classVFile = LocalFileSystem.getInstance().findFileByIoFile(classFile)
|
|
||||||
if (classVFile == null) return false
|
|
||||||
val header = KotlinBinaryClassCache.getKotlinBinaryClass(classVFile)?.getClassHeader()
|
|
||||||
return header != null && header.kind == KotlinClassHeader.Kind.PACKAGE_FACADE;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
fun looksLikePackageFacade(classFile: File): Boolean {
|
|
||||||
val packageName = classFile.getParentFile().getName()
|
|
||||||
return classFile.getName() == StringUtil.capitalize(packageName) + PackageClassUtils.PACKAGE_CLASS_NAME_SUFFIX + ".class"
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun collectOutputFiles(srcFile: PsiFile,
|
override fun collectOutputFiles(srcFile: PsiFile,
|
||||||
output: VirtualFile?,
|
output: VirtualFile?,
|
||||||
testoutput: VirtualFile?,
|
testoutput: VirtualFile?,
|
||||||
@@ -182,7 +161,7 @@ public class KotlinCoverageExtension(): JavaCoverageEngineExtension() {
|
|||||||
|
|
||||||
private fun collectClassFilePrefixes(file: KtFile): Collection<String> {
|
private fun collectClassFilePrefixes(file: KtFile): Collection<String> {
|
||||||
val result = file.getChildren().filter { it is KtClassOrObject }.map { (it as KtClassOrObject).getName()!! }
|
val result = file.getChildren().filter { it is KtClassOrObject }.map { (it as KtClassOrObject).getName()!! }
|
||||||
val packagePartFqName = PackagePartClassUtils.getPackagePartFqName(file)
|
val packagePartFqName = JvmFileClassUtil.getFileClassInfoNoResolve(file).fileClassFqName
|
||||||
return result.union(arrayListOf(packagePartFqName.shortName().asString()))
|
return result.union(arrayListOf(packagePartFqName.shortName().asString()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user