JS: error message (not exception) for incompatible abi version during compilation

This commit is contained in:
Michael Nedzelsky
2015-06-05 13:29:20 +03:00
parent 34577a7e12
commit 999c83240c
10 changed files with 73 additions and 28 deletions
@@ -63,6 +63,7 @@ public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAna
if (moduleInfo is LibraryInfo && KotlinJavaScriptLibraryDetectionUtil.isKotlinJavaScriptLibrary(moduleInfo.library)) {
val providers = moduleInfo.library.getFiles(OrderRootType.CLASSES)
.flatMap { KotlinJavascriptMetadataUtils.loadMetadata(PathUtil.getLocalPath(it)!!) }
.filter { it.isAbiVersionCompatible }
.map { KotlinJavascriptSerializationUtil.createPackageFragmentProvider(moduleDescriptor, it.body, moduleContext.storageManager) }
.filterNotNull()
@@ -36,8 +36,7 @@ import com.intellij.util.PathUtil
import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.idea.framework.KotlinJavaScriptLibraryDetectionUtil
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil.isJsKotlinModule
import org.jetbrains.kotlin.utils.LibraryUtils
import java.io.File
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
import java.util.concurrent.atomic.AtomicBoolean
import kotlin.platform.platformStatic
@@ -103,11 +102,12 @@ public class KotlinJavaScriptLibraryManager private constructor(private var myPr
val path = PathUtil.getLocalPath(clsRootFile)
assert(path != null, "expected not-null path for ${clsRootFile.getName()}")
if (LibraryUtils.isKotlinJavascriptLibraryWithMetadata(File(path))) {
val classRoot = KotlinJavaScriptMetaFileSystem.getInstance().refreshAndFindFileByPath(path!! + "!/")
clsRootFiles.add(classRoot)
addSources = true
}
val metadataList = KotlinJavascriptMetadataUtils.loadMetadata(path!!)
if (metadataList.filter { !it.isAbiVersionCompatible }.isNotEmpty()) continue
val classRoot = KotlinJavaScriptMetaFileSystem.getInstance().refreshAndFindFileByPath(path + "!/")
clsRootFiles.add(classRoot)
addSources = true
}
if (addSources) {
srcRootFiles.addAll(arrayListOf(*library.getFiles(OrderRootType.SOURCES)))