Fix detection of scripts in cls stub builder

This commit is contained in:
Alexander Udalov
2017-01-09 12:41:06 +03:00
parent e860d620c6
commit 453c5267ad
4 changed files with 10 additions and 9 deletions
@@ -51,7 +51,7 @@ class KotlinBuiltInStubBuilder : ClsStubBuilder() {
) )
val context = components.createContext(nameResolver, packageFqName, TypeTable(packageProto.typeTable)) val context = components.createContext(nameResolver, packageFqName, TypeTable(packageProto.typeTable))
val fileStub = createFileStub(packageFqName) val fileStub = createFileStub(packageFqName, isScript = false)
createDeclarationsStubs( createDeclarationsStubs(
fileStub, context, fileStub, context,
ProtoContainer.Package(packageFqName, context.nameResolver, context.typeTable, source = null), ProtoContainer.Package(packageFqName, context.nameResolver, context.typeTable, source = null),
@@ -84,7 +84,7 @@ open class KotlinClsStubBuilder : ClsStubBuilder() {
if (classId.isLocal) return null if (classId.isLocal) return null
val (nameResolver, classProto) = JvmProtoBufUtil.readClassDataFrom(annotationData, strings) val (nameResolver, classProto) = JvmProtoBufUtil.readClassDataFrom(annotationData, strings)
val context = components.createContext(nameResolver, packageFqName, TypeTable(classProto.typeTable)) val context = components.createContext(nameResolver, packageFqName, TypeTable(classProto.typeTable))
createTopLevelClassStub(classId, classProto, KotlinJvmBinarySourceElement(kotlinClass), context) createTopLevelClassStub(classId, classProto, KotlinJvmBinarySourceElement(kotlinClass), context, header.isScript)
} }
KotlinClassHeader.Kind.FILE_FACADE -> { KotlinClassHeader.Kind.FILE_FACADE -> {
val (nameResolver, packageProto) = JvmProtoBufUtil.readPackageDataFrom(annotationData, strings) val (nameResolver, packageProto) = JvmProtoBufUtil.readPackageDataFrom(annotationData, strings)
@@ -71,7 +71,7 @@ class KotlinJavaScriptStubBuilder : ClsStubBuilder() {
val classProto = ProtoBuf.Class.parseFrom(content, JsSerializerProtocol.extensionRegistry) val classProto = ProtoBuf.Class.parseFrom(content, JsSerializerProtocol.extensionRegistry)
val context = components.createContext(nameResolver, packageFqName, TypeTable(classProto.typeTable)) val context = components.createContext(nameResolver, packageFqName, TypeTable(classProto.typeTable))
val classId = JsMetaFileUtils.getClassId(file) val classId = JsMetaFileUtils.getClassId(file)
return createTopLevelClassStub(classId, classProto, source = null, context = context) return createTopLevelClassStub(classId, classProto, source = null, context = context, isScript = false)
} }
} }
@@ -46,9 +46,10 @@ fun createTopLevelClassStub(
classId: ClassId, classId: ClassId,
classProto: ProtoBuf.Class, classProto: ProtoBuf.Class,
source: SourceElement?, source: SourceElement?,
context: ClsStubBuilderContext context: ClsStubBuilderContext,
isScript: Boolean
): KotlinFileStubImpl { ): KotlinFileStubImpl {
val fileStub = createFileStub(classId.packageFqName) val fileStub = createFileStub(classId.packageFqName, isScript)
createClassStub(fileStub, classProto, context.nameResolver, classId, source, context) createClassStub(fileStub, classProto, context.nameResolver, classId, source, context)
return fileStub return fileStub
} }
@@ -58,7 +59,7 @@ fun createPackageFacadeStub(
packageFqName: FqName, packageFqName: FqName,
c: ClsStubBuilderContext c: ClsStubBuilderContext
): KotlinFileStubImpl { ): KotlinFileStubImpl {
val fileStub = KotlinFileStubForIde.forFile(packageFqName, packageFqName.isRoot) val fileStub = KotlinFileStubForIde.forFile(packageFqName, isScript = false)
setupFileStub(fileStub, packageFqName) setupFileStub(fileStub, packageFqName)
createDeclarationsStubs( createDeclarationsStubs(
fileStub, c, ProtoContainer.Package(packageFqName, c.nameResolver, c.typeTable, source = null), packageProto) fileStub, c, ProtoContainer.Package(packageFqName, c.nameResolver, c.typeTable, source = null), packageProto)
@@ -101,10 +102,10 @@ fun createMultifileClassStub(
return fileStub return fileStub
} }
fun createIncompatibleAbiVersionFileStub() = createFileStub(FqName.ROOT) fun createIncompatibleAbiVersionFileStub() = createFileStub(FqName.ROOT, isScript = false)
fun createFileStub(packageFqName: FqName): KotlinFileStubImpl { fun createFileStub(packageFqName: FqName, isScript: Boolean): KotlinFileStubImpl {
val fileStub = KotlinFileStubForIde.forFile(packageFqName, packageFqName.isRoot) val fileStub = KotlinFileStubForIde.forFile(packageFqName, isScript)
setupFileStub(fileStub, packageFqName) setupFileStub(fileStub, packageFqName)
return fileStub return fileStub
} }