JS Union type members should have inherit corresponding marker interface
This commit is contained in:
committed by
Sergey Mashkov
parent
002b26e4ed
commit
42f1f9df03
@@ -170,7 +170,7 @@ fun generateUnions(ifaces: List<GenerateTraitOrClass>, typedefs: Iterable<Typede
|
||||
.filter { it.value.memberTypes.all { type -> type in declaredTypes } }
|
||||
val typedefsMarkersMap = typedefsToBeGenerated.groupBy { it.name }.mapValues { mapUnionType(it.value.first().value).copy(name = it.key) }
|
||||
|
||||
val typeNamesToUnions = anonymousUnionTypes.flatMap { unionType -> unionType.memberTypes.map { unionMember -> unionMember to unionType.name } }.toMultiMap() +
|
||||
val typeNamesToUnions = anonymousUnionTypes.flatMap { unionType -> unionType.memberTypes.map { unionMember -> unionMember to unionType.name } }.toMultiMap() merge
|
||||
typedefsToBeGenerated.flatMap { typedef -> typedef.value.memberTypes.map { unionMember -> unionMember to typedef.name } }.toMultiMap()
|
||||
|
||||
return GenerateUnionTypes(
|
||||
|
||||
@@ -13,8 +13,6 @@ fun main(args: Array<String>) {
|
||||
System.exit(1)
|
||||
return
|
||||
}
|
||||
outDir.deleteRecursively()
|
||||
outDir.mkdirs()
|
||||
|
||||
val repository = srcDir.walkTopDown().filter { it.isDirectory() || it.extension == "idl" }.asSequence().filter { it.isFile() }.fold(Repository(emptyMap(), emptyMap(), emptyMap(), emptyMap())) { acc, e ->
|
||||
val fileRepository = parseIDL(ANTLRFileStream(e.getAbsolutePath(), "UTF-8"))
|
||||
@@ -31,6 +29,9 @@ fun main(args: Array<String>) {
|
||||
val unions = generateUnions(definitions, repository.typeDefs.values())
|
||||
val allPackages = definitions.map { it.namespace }.distinct().sort()
|
||||
|
||||
outDir.deleteRecursively()
|
||||
outDir.mkdirs()
|
||||
|
||||
allPackages.forEach { pkg ->
|
||||
File(outDir, pkg + ".kt").bufferedWriter().use { w ->
|
||||
w.appendln("/*")
|
||||
|
||||
@@ -102,6 +102,7 @@ private fun mapType(repository: Repository, type: String): String =
|
||||
type.startsWith("unrestricted") -> mapType(repository, type.substring(12))
|
||||
type.startsWith("sequence<") -> "Array<${mapType(repository, type.removePrefix("sequence<").removeSuffix(">").trim())}>"
|
||||
type.startsWith("sequence") -> "Array<dynamic>"
|
||||
type.startsWith("Union<") -> "Union<" + splitUnionType(type).map { mapType(repository, it) }.join(",") + ">"
|
||||
type in repository.typeDefs -> mapTypedef(repository, type)
|
||||
type in repository.enums -> "String"
|
||||
type.contains("->") -> {
|
||||
|
||||
Reference in New Issue
Block a user