Don't load irrelevant classes by accident, if resource happens to exist

Check with the containing class or package first, don't load the class if the
container doesn't know about it. This also makes the workaround for
case-insensitive file systems unnecessary
This commit is contained in:
Alexander Udalov
2015-06-26 19:12:51 +03:00
parent 1e7b96aec0
commit 110d6fa7f1
7 changed files with 48 additions and 36 deletions
@@ -16,11 +16,11 @@
package org.jetbrains.kotlin.serialization.js
import org.jetbrains.kotlin.serialization.deserialization.DeserializedPackageFragment
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.deserialization.DeserializedPackageFragment
import org.jetbrains.kotlin.storage.StorageManager
import java.io.InputStream
@@ -31,7 +31,7 @@ public class KotlinJavascriptPackageFragment(
loadResource: (path: String) -> InputStream?
) : DeserializedPackageFragment(fqName, storageManager, module, KotlinJavascriptSerializedResourcePaths, loadResource) {
protected override fun loadClassNames(fqName: FqName, packageProto: ProtoBuf.Package): Collection<Name> {
protected override fun loadClassNames(packageProto: ProtoBuf.Package): Collection<Name> {
val classesStream = loadResourceSure(KotlinJavascriptSerializedResourcePaths.getClassesInPackageFilePath(fqName))
val classesProto = JsProtoBuf.Classes.parseFrom(classesStream, serializedResourcePaths.EXTENSION_REGISTRY)
return classesProto.getClassNameList()?.map { id -> nameResolver.getName(id) } ?: listOf()