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 fileStub = createFileStub(packageFqName)
val fileStub = createFileStub(packageFqName, isScript = false)
createDeclarationsStubs(
fileStub, context,
ProtoContainer.Package(packageFqName, context.nameResolver, context.typeTable, source = null),
@@ -84,7 +84,7 @@ open class KotlinClsStubBuilder : ClsStubBuilder() {
if (classId.isLocal) return null
val (nameResolver, classProto) = JvmProtoBufUtil.readClassDataFrom(annotationData, strings)
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 -> {
val (nameResolver, packageProto) = JvmProtoBufUtil.readPackageDataFrom(annotationData, strings)
@@ -71,7 +71,7 @@ class KotlinJavaScriptStubBuilder : ClsStubBuilder() {
val classProto = ProtoBuf.Class.parseFrom(content, JsSerializerProtocol.extensionRegistry)
val context = components.createContext(nameResolver, packageFqName, TypeTable(classProto.typeTable))
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,
classProto: ProtoBuf.Class,
source: SourceElement?,
context: ClsStubBuilderContext
context: ClsStubBuilderContext,
isScript: Boolean
): KotlinFileStubImpl {
val fileStub = createFileStub(classId.packageFqName)
val fileStub = createFileStub(classId.packageFqName, isScript)
createClassStub(fileStub, classProto, context.nameResolver, classId, source, context)
return fileStub
}
@@ -58,7 +59,7 @@ fun createPackageFacadeStub(
packageFqName: FqName,
c: ClsStubBuilderContext
): KotlinFileStubImpl {
val fileStub = KotlinFileStubForIde.forFile(packageFqName, packageFqName.isRoot)
val fileStub = KotlinFileStubForIde.forFile(packageFqName, isScript = false)
setupFileStub(fileStub, packageFqName)
createDeclarationsStubs(
fileStub, c, ProtoContainer.Package(packageFqName, c.nameResolver, c.typeTable, source = null), packageProto)
@@ -101,10 +102,10 @@ fun createMultifileClassStub(
return fileStub
}
fun createIncompatibleAbiVersionFileStub() = createFileStub(FqName.ROOT)
fun createIncompatibleAbiVersionFileStub() = createFileStub(FqName.ROOT, isScript = false)
fun createFileStub(packageFqName: FqName): KotlinFileStubImpl {
val fileStub = KotlinFileStubForIde.forFile(packageFqName, packageFqName.isRoot)
fun createFileStub(packageFqName: FqName, isScript: Boolean): KotlinFileStubImpl {
val fileStub = KotlinFileStubForIde.forFile(packageFqName, isScript)
setupFileStub(fileStub, packageFqName)
return fileStub
}