From 64fdd86f287e15121bc1eb4d8e24bc9e10013550 Mon Sep 17 00:00:00 2001 From: Marco Gomiero Date: Sun, 26 May 2024 09:37:37 +0200 Subject: [PATCH] Add klib validator. Set source and target jvm back to 8 --- build.gradle.kts | 7 + gradle/libs.versions.toml | 2 +- renovate.json | 3 +- rssparser/api/rssparser.klib.api | 236 ++++++++++++++++++ rssparser/build.gradle.kts | 25 +- .../kotlin/com/prof18/rssparser/TestUtils.kt | 2 - .../com/prof18/rssparser/XmlParserFactory.kt | 1 - .../prof18/rssparser/XmlParserTestExecutor.kt | 1 - 8 files changed, 256 insertions(+), 21 deletions(-) create mode 100644 rssparser/api/rssparser.klib.api diff --git a/build.gradle.kts b/build.gradle.kts index 8c88ff05..416dcb66 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,4 @@ +import kotlinx.validation.ExperimentalBCVApi import org.jetbrains.kotlin.gradle.targets.native.tasks.KotlinNativeTest plugins { @@ -20,6 +21,12 @@ apiValidation { "java" ) ) + + @OptIn(ExperimentalBCVApi::class) + klib { + enabled = true + strictValidation = true + } } allprojects { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1113c11b..0ccced07 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,7 +10,7 @@ library-version-name = "6.0.7" com-squareup-okhttp3 = "4.12.0" com-vanniktech-maven-publish="0.28.0" org-robolectric = "4.11.1" -binary-compatibility-validator = "0.14.0" +binary-compatibility-validator = "0.15.0-Beta.2" coroutines = "1.8.0" # Sample dependencies diff --git a/renovate.json b/renovate.json index abddb539..fefb1286 100644 --- a/renovate.json +++ b/renovate.json @@ -9,8 +9,7 @@ "groupSlug": "kotlin", "matchPackageNames": [ "org.jetbrains.kotlin", - "org.jetbrains.compose", - "androidx.compose.compiler" + "org.jetbrains.compose" ] } ] diff --git a/rssparser/api/rssparser.klib.api b/rssparser/api/rssparser.klib.api new file mode 100644 index 00000000..e49a6f82 --- /dev/null +++ b/rssparser/api/rssparser.klib.api @@ -0,0 +1,236 @@ +// Klib ABI Dump +// Targets: [iosArm64, iosSimulatorArm64, iosX64, macosArm64, macosX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +final class com.prof18.rssparser.exception/HttpException : kotlin/Exception { // com.prof18.rssparser.exception/HttpException|null[0] + constructor (kotlin/Int, kotlin/String?) // com.prof18.rssparser.exception/HttpException.|(kotlin.Int;kotlin.String?){}[0] + final fun component1(): kotlin/Int // com.prof18.rssparser.exception/HttpException.component1|component1(){}[0] + final fun component2(): kotlin/String? // com.prof18.rssparser.exception/HttpException.component2|component2(){}[0] + final fun copy(kotlin/Int = ..., kotlin/String? = ...): com.prof18.rssparser.exception/HttpException // com.prof18.rssparser.exception/HttpException.copy|copy(kotlin.Int;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.exception/HttpException.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.prof18.rssparser.exception/HttpException.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.prof18.rssparser.exception/HttpException.toString|toString(){}[0] + final val code // com.prof18.rssparser.exception/HttpException.code|{}code[0] + final fun (): kotlin/Int // com.prof18.rssparser.exception/HttpException.code.|(){}[0] + final val message // com.prof18.rssparser.exception/HttpException.message|{}message[0] + final fun (): kotlin/String? // com.prof18.rssparser.exception/HttpException.message.|(){}[0] +} +final class com.prof18.rssparser.exception/RssParsingException : kotlin/Exception { // com.prof18.rssparser.exception/RssParsingException|null[0] + constructor (kotlin/String?, kotlin/Throwable?) // com.prof18.rssparser.exception/RssParsingException.|(kotlin.String?;kotlin.Throwable?){}[0] + final fun component1(): kotlin/String? // com.prof18.rssparser.exception/RssParsingException.component1|component1(){}[0] + final fun component2(): kotlin/Throwable? // com.prof18.rssparser.exception/RssParsingException.component2|component2(){}[0] + final fun copy(kotlin/String? = ..., kotlin/Throwable? = ...): com.prof18.rssparser.exception/RssParsingException // com.prof18.rssparser.exception/RssParsingException.copy|copy(kotlin.String?;kotlin.Throwable?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.exception/RssParsingException.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.prof18.rssparser.exception/RssParsingException.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.prof18.rssparser.exception/RssParsingException.toString|toString(){}[0] + final val cause // com.prof18.rssparser.exception/RssParsingException.cause|{}cause[0] + final fun (): kotlin/Throwable? // com.prof18.rssparser.exception/RssParsingException.cause.|(){}[0] + final val message // com.prof18.rssparser.exception/RssParsingException.message|{}message[0] + final fun (): kotlin/String? // com.prof18.rssparser.exception/RssParsingException.message.|(){}[0] +} +final class com.prof18.rssparser.model/ItunesChannelData { // com.prof18.rssparser.model/ItunesChannelData|null[0] + constructor (kotlin/String?, kotlin.collections/List = ..., kotlin/String?, kotlin/String?, kotlin/String?, kotlin.collections/List, kotlin/String?, com.prof18.rssparser.model/ItunesOwner?, kotlin/String?, kotlin/String?, kotlin/String?) // com.prof18.rssparser.model/ItunesChannelData.|(kotlin.String?;kotlin.collections.List;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List;kotlin.String?;com.prof18.rssparser.model.ItunesOwner?;kotlin.String?;kotlin.String?;kotlin.String?){}[0] + final fun component1(): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.component1|component1(){}[0] + final fun component10(): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.component10|component10(){}[0] + final fun component11(): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.component11|component11(){}[0] + final fun component2(): kotlin.collections/List // com.prof18.rssparser.model/ItunesChannelData.component2|component2(){}[0] + final fun component3(): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.component3|component3(){}[0] + final fun component4(): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.component4|component4(){}[0] + final fun component5(): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.component5|component5(){}[0] + final fun component6(): kotlin.collections/List // com.prof18.rssparser.model/ItunesChannelData.component6|component6(){}[0] + final fun component7(): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.component7|component7(){}[0] + final fun component8(): com.prof18.rssparser.model/ItunesOwner? // com.prof18.rssparser.model/ItunesChannelData.component8|component8(){}[0] + final fun component9(): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.component9|component9(){}[0] + final fun copy(kotlin/String? = ..., kotlin.collections/List = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin.collections/List = ..., kotlin/String? = ..., com.prof18.rssparser.model/ItunesOwner? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ...): com.prof18.rssparser.model/ItunesChannelData // com.prof18.rssparser.model/ItunesChannelData.copy|copy(kotlin.String?;kotlin.collections.List;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List;kotlin.String?;com.prof18.rssparser.model.ItunesOwner?;kotlin.String?;kotlin.String?;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.model/ItunesChannelData.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.prof18.rssparser.model/ItunesChannelData.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.prof18.rssparser.model/ItunesChannelData.toString|toString(){}[0] + final val author // com.prof18.rssparser.model/ItunesChannelData.author|{}author[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.author.|(){}[0] + final val categories // com.prof18.rssparser.model/ItunesChannelData.categories|{}categories[0] + final fun (): kotlin.collections/List // com.prof18.rssparser.model/ItunesChannelData.categories.|(){}[0] + final val duration // com.prof18.rssparser.model/ItunesChannelData.duration|{}duration[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.duration.|(){}[0] + final val explicit // com.prof18.rssparser.model/ItunesChannelData.explicit|{}explicit[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.explicit.|(){}[0] + final val image // com.prof18.rssparser.model/ItunesChannelData.image|{}image[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.image.|(){}[0] + final val keywords // com.prof18.rssparser.model/ItunesChannelData.keywords|{}keywords[0] + final fun (): kotlin.collections/List // com.prof18.rssparser.model/ItunesChannelData.keywords.|(){}[0] + final val newsFeedUrl // com.prof18.rssparser.model/ItunesChannelData.newsFeedUrl|{}newsFeedUrl[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.newsFeedUrl.|(){}[0] + final val owner // com.prof18.rssparser.model/ItunesChannelData.owner|{}owner[0] + final fun (): com.prof18.rssparser.model/ItunesOwner? // com.prof18.rssparser.model/ItunesChannelData.owner.|(){}[0] + final val subtitle // com.prof18.rssparser.model/ItunesChannelData.subtitle|{}subtitle[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.subtitle.|(){}[0] + final val summary // com.prof18.rssparser.model/ItunesChannelData.summary|{}summary[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.summary.|(){}[0] + final val type // com.prof18.rssparser.model/ItunesChannelData.type|{}type[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesChannelData.type.|(){}[0] +} +final class com.prof18.rssparser.model/ItunesItemData { // com.prof18.rssparser.model/ItunesItemData|null[0] + constructor (kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin.collections/List, kotlin/String?, kotlin/String?, kotlin/String?) // com.prof18.rssparser.model/ItunesItemData.|(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List;kotlin.String?;kotlin.String?;kotlin.String?){}[0] + final fun component1(): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.component1|component1(){}[0] + final fun component10(): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.component10|component10(){}[0] + final fun component2(): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.component2|component2(){}[0] + final fun component3(): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.component3|component3(){}[0] + final fun component4(): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.component4|component4(){}[0] + final fun component5(): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.component5|component5(){}[0] + final fun component6(): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.component6|component6(){}[0] + final fun component7(): kotlin.collections/List // com.prof18.rssparser.model/ItunesItemData.component7|component7(){}[0] + final fun component8(): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.component8|component8(){}[0] + final fun component9(): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.component9|component9(){}[0] + final fun copy(kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin.collections/List = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ...): com.prof18.rssparser.model/ItunesItemData // com.prof18.rssparser.model/ItunesItemData.copy|copy(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List;kotlin.String?;kotlin.String?;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.model/ItunesItemData.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.prof18.rssparser.model/ItunesItemData.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.prof18.rssparser.model/ItunesItemData.toString|toString(){}[0] + final val author // com.prof18.rssparser.model/ItunesItemData.author|{}author[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.author.|(){}[0] + final val duration // com.prof18.rssparser.model/ItunesItemData.duration|{}duration[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.duration.|(){}[0] + final val episode // com.prof18.rssparser.model/ItunesItemData.episode|{}episode[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.episode.|(){}[0] + final val episodeType // com.prof18.rssparser.model/ItunesItemData.episodeType|{}episodeType[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.episodeType.|(){}[0] + final val explicit // com.prof18.rssparser.model/ItunesItemData.explicit|{}explicit[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.explicit.|(){}[0] + final val image // com.prof18.rssparser.model/ItunesItemData.image|{}image[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.image.|(){}[0] + final val keywords // com.prof18.rssparser.model/ItunesItemData.keywords|{}keywords[0] + final fun (): kotlin.collections/List // com.prof18.rssparser.model/ItunesItemData.keywords.|(){}[0] + final val season // com.prof18.rssparser.model/ItunesItemData.season|{}season[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.season.|(){}[0] + final val subtitle // com.prof18.rssparser.model/ItunesItemData.subtitle|{}subtitle[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.subtitle.|(){}[0] + final val summary // com.prof18.rssparser.model/ItunesItemData.summary|{}summary[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesItemData.summary.|(){}[0] +} +final class com.prof18.rssparser.model/ItunesOwner { // com.prof18.rssparser.model/ItunesOwner|null[0] + constructor (kotlin/String?, kotlin/String?) // com.prof18.rssparser.model/ItunesOwner.|(kotlin.String?;kotlin.String?){}[0] + final fun component1(): kotlin/String? // com.prof18.rssparser.model/ItunesOwner.component1|component1(){}[0] + final fun component2(): kotlin/String? // com.prof18.rssparser.model/ItunesOwner.component2|component2(){}[0] + final fun copy(kotlin/String? = ..., kotlin/String? = ...): com.prof18.rssparser.model/ItunesOwner // com.prof18.rssparser.model/ItunesOwner.copy|copy(kotlin.String?;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.model/ItunesOwner.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.prof18.rssparser.model/ItunesOwner.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.prof18.rssparser.model/ItunesOwner.toString|toString(){}[0] + final val email // com.prof18.rssparser.model/ItunesOwner.email|{}email[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesOwner.email.|(){}[0] + final val name // com.prof18.rssparser.model/ItunesOwner.name|{}name[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/ItunesOwner.name.|(){}[0] +} +final class com.prof18.rssparser.model/RssChannel { // com.prof18.rssparser.model/RssChannel|null[0] + constructor (kotlin/String?, kotlin/String?, kotlin/String?, com.prof18.rssparser.model/RssImage?, kotlin/String?, kotlin/String?, kotlin.collections/List, com.prof18.rssparser.model/ItunesChannelData?) // com.prof18.rssparser.model/RssChannel.|(kotlin.String?;kotlin.String?;kotlin.String?;com.prof18.rssparser.model.RssImage?;kotlin.String?;kotlin.String?;kotlin.collections.List;com.prof18.rssparser.model.ItunesChannelData?){}[0] + final fun component1(): kotlin/String? // com.prof18.rssparser.model/RssChannel.component1|component1(){}[0] + final fun component2(): kotlin/String? // com.prof18.rssparser.model/RssChannel.component2|component2(){}[0] + final fun component3(): kotlin/String? // com.prof18.rssparser.model/RssChannel.component3|component3(){}[0] + final fun component4(): com.prof18.rssparser.model/RssImage? // com.prof18.rssparser.model/RssChannel.component4|component4(){}[0] + final fun component5(): kotlin/String? // com.prof18.rssparser.model/RssChannel.component5|component5(){}[0] + final fun component6(): kotlin/String? // com.prof18.rssparser.model/RssChannel.component6|component6(){}[0] + final fun component7(): kotlin.collections/List // com.prof18.rssparser.model/RssChannel.component7|component7(){}[0] + final fun component8(): com.prof18.rssparser.model/ItunesChannelData? // com.prof18.rssparser.model/RssChannel.component8|component8(){}[0] + final fun copy(kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., com.prof18.rssparser.model/RssImage? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin.collections/List = ..., com.prof18.rssparser.model/ItunesChannelData? = ...): com.prof18.rssparser.model/RssChannel // com.prof18.rssparser.model/RssChannel.copy|copy(kotlin.String?;kotlin.String?;kotlin.String?;com.prof18.rssparser.model.RssImage?;kotlin.String?;kotlin.String?;kotlin.collections.List;com.prof18.rssparser.model.ItunesChannelData?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.model/RssChannel.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.prof18.rssparser.model/RssChannel.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.prof18.rssparser.model/RssChannel.toString|toString(){}[0] + final val description // com.prof18.rssparser.model/RssChannel.description|{}description[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssChannel.description.|(){}[0] + final val image // com.prof18.rssparser.model/RssChannel.image|{}image[0] + final fun (): com.prof18.rssparser.model/RssImage? // com.prof18.rssparser.model/RssChannel.image.|(){}[0] + final val items // com.prof18.rssparser.model/RssChannel.items|{}items[0] + final fun (): kotlin.collections/List // com.prof18.rssparser.model/RssChannel.items.|(){}[0] + final val itunesChannelData // com.prof18.rssparser.model/RssChannel.itunesChannelData|{}itunesChannelData[0] + final fun (): com.prof18.rssparser.model/ItunesChannelData? // com.prof18.rssparser.model/RssChannel.itunesChannelData.|(){}[0] + final val lastBuildDate // com.prof18.rssparser.model/RssChannel.lastBuildDate|{}lastBuildDate[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssChannel.lastBuildDate.|(){}[0] + final val link // com.prof18.rssparser.model/RssChannel.link|{}link[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssChannel.link.|(){}[0] + final val title // com.prof18.rssparser.model/RssChannel.title|{}title[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssChannel.title.|(){}[0] + final val updatePeriod // com.prof18.rssparser.model/RssChannel.updatePeriod|{}updatePeriod[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssChannel.updatePeriod.|(){}[0] +} +final class com.prof18.rssparser.model/RssImage { // com.prof18.rssparser.model/RssImage|null[0] + constructor (kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?) // com.prof18.rssparser.model/RssImage.|(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?){}[0] + final fun component1(): kotlin/String? // com.prof18.rssparser.model/RssImage.component1|component1(){}[0] + final fun component2(): kotlin/String? // com.prof18.rssparser.model/RssImage.component2|component2(){}[0] + final fun component3(): kotlin/String? // com.prof18.rssparser.model/RssImage.component3|component3(){}[0] + final fun component4(): kotlin/String? // com.prof18.rssparser.model/RssImage.component4|component4(){}[0] + final fun copy(kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ...): com.prof18.rssparser.model/RssImage // com.prof18.rssparser.model/RssImage.copy|copy(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.model/RssImage.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.prof18.rssparser.model/RssImage.hashCode|hashCode(){}[0] + final fun isNotEmpty(): kotlin/Boolean // com.prof18.rssparser.model/RssImage.isNotEmpty|isNotEmpty(){}[0] + final fun toString(): kotlin/String // com.prof18.rssparser.model/RssImage.toString|toString(){}[0] + final val description // com.prof18.rssparser.model/RssImage.description|{}description[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssImage.description.|(){}[0] + final val link // com.prof18.rssparser.model/RssImage.link|{}link[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssImage.link.|(){}[0] + final val title // com.prof18.rssparser.model/RssImage.title|{}title[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssImage.title.|(){}[0] + final val url // com.prof18.rssparser.model/RssImage.url|{}url[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssImage.url.|(){}[0] +} +final class com.prof18.rssparser.model/RssItem { // com.prof18.rssparser.model/RssItem|null[0] + constructor (kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin.collections/List, com.prof18.rssparser.model/ItunesItemData?, kotlin/String?) // com.prof18.rssparser.model/RssItem.|(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List;com.prof18.rssparser.model.ItunesItemData?;kotlin.String?){}[0] + final fun component1(): kotlin/String? // com.prof18.rssparser.model/RssItem.component1|component1(){}[0] + final fun component10(): kotlin/String? // com.prof18.rssparser.model/RssItem.component10|component10(){}[0] + final fun component11(): kotlin/String? // com.prof18.rssparser.model/RssItem.component11|component11(){}[0] + final fun component12(): kotlin/String? // com.prof18.rssparser.model/RssItem.component12|component12(){}[0] + final fun component13(): kotlin.collections/List // com.prof18.rssparser.model/RssItem.component13|component13(){}[0] + final fun component14(): com.prof18.rssparser.model/ItunesItemData? // com.prof18.rssparser.model/RssItem.component14|component14(){}[0] + final fun component15(): kotlin/String? // com.prof18.rssparser.model/RssItem.component15|component15(){}[0] + final fun component2(): kotlin/String? // com.prof18.rssparser.model/RssItem.component2|component2(){}[0] + final fun component3(): kotlin/String? // com.prof18.rssparser.model/RssItem.component3|component3(){}[0] + final fun component4(): kotlin/String? // com.prof18.rssparser.model/RssItem.component4|component4(){}[0] + final fun component5(): kotlin/String? // com.prof18.rssparser.model/RssItem.component5|component5(){}[0] + final fun component6(): kotlin/String? // com.prof18.rssparser.model/RssItem.component6|component6(){}[0] + final fun component7(): kotlin/String? // com.prof18.rssparser.model/RssItem.component7|component7(){}[0] + final fun component8(): kotlin/String? // com.prof18.rssparser.model/RssItem.component8|component8(){}[0] + final fun component9(): kotlin/String? // com.prof18.rssparser.model/RssItem.component9|component9(){}[0] + final fun copy(kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin.collections/List = ..., com.prof18.rssparser.model/ItunesItemData? = ..., kotlin/String? = ...): com.prof18.rssparser.model/RssItem // com.prof18.rssparser.model/RssItem.copy|copy(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List;com.prof18.rssparser.model.ItunesItemData?;kotlin.String?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.model/RssItem.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // com.prof18.rssparser.model/RssItem.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // com.prof18.rssparser.model/RssItem.toString|toString(){}[0] + final val audio // com.prof18.rssparser.model/RssItem.audio|{}audio[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.audio.|(){}[0] + final val author // com.prof18.rssparser.model/RssItem.author|{}author[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.author.|(){}[0] + final val categories // com.prof18.rssparser.model/RssItem.categories|{}categories[0] + final fun (): kotlin.collections/List // com.prof18.rssparser.model/RssItem.categories.|(){}[0] + final val commentsUrl // com.prof18.rssparser.model/RssItem.commentsUrl|{}commentsUrl[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.commentsUrl.|(){}[0] + final val content // com.prof18.rssparser.model/RssItem.content|{}content[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.content.|(){}[0] + final val description // com.prof18.rssparser.model/RssItem.description|{}description[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.description.|(){}[0] + final val guid // com.prof18.rssparser.model/RssItem.guid|{}guid[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.guid.|(){}[0] + final val image // com.prof18.rssparser.model/RssItem.image|{}image[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.image.|(){}[0] + final val itunesItemData // com.prof18.rssparser.model/RssItem.itunesItemData|{}itunesItemData[0] + final fun (): com.prof18.rssparser.model/ItunesItemData? // com.prof18.rssparser.model/RssItem.itunesItemData.|(){}[0] + final val link // com.prof18.rssparser.model/RssItem.link|{}link[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.link.|(){}[0] + final val pubDate // com.prof18.rssparser.model/RssItem.pubDate|{}pubDate[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.pubDate.|(){}[0] + final val sourceName // com.prof18.rssparser.model/RssItem.sourceName|{}sourceName[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.sourceName.|(){}[0] + final val sourceUrl // com.prof18.rssparser.model/RssItem.sourceUrl|{}sourceUrl[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.sourceUrl.|(){}[0] + final val title // com.prof18.rssparser.model/RssItem.title|{}title[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.title.|(){}[0] + final val video // com.prof18.rssparser.model/RssItem.video|{}video[0] + final fun (): kotlin/String? // com.prof18.rssparser.model/RssItem.video.|(){}[0] +} +final class com.prof18.rssparser/RssParser { // com.prof18.rssparser/RssParser|null[0] + final suspend fun getRssChannel(kotlin/String): com.prof18.rssparser.model/RssChannel // com.prof18.rssparser/RssParser.getRssChannel|getRssChannel(kotlin.String){}[0] + final suspend fun parse(kotlin/String): com.prof18.rssparser.model/RssChannel // com.prof18.rssparser/RssParser.parse|parse(kotlin.String){}[0] +} +final class com.prof18.rssparser/RssParserBuilder : com.prof18.rssparser/RssParser.Builder { // com.prof18.rssparser/RssParserBuilder|null[0] + constructor (platform.Foundation/NSURLSession = ...) // com.prof18.rssparser/RssParserBuilder.|(platform.Foundation.NSURLSession){}[0] + final fun build(): com.prof18.rssparser/RssParser // com.prof18.rssparser/RssParserBuilder.build|build(){}[0] +} +final fun com.prof18.rssparser/RssParser(): com.prof18.rssparser/RssParser // com.prof18.rssparser/RssParser|RssParser(){}[0] diff --git a/rssparser/build.gradle.kts b/rssparser/build.gradle.kts index cff70253..99f28aac 100644 --- a/rssparser/build.gradle.kts +++ b/rssparser/build.gradle.kts @@ -1,4 +1,6 @@ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile plugins { alias(libs.plugins.kotlin.multiplatform) @@ -6,22 +8,17 @@ plugins { alias(libs.plugins.com.vanniktech.maven.publish) } -kotlin { - jvm { - compilations.all { - kotlinOptions { - jvmTarget = "11" - } - } +tasks.withType(KotlinJvmCompile::class).configureEach { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) } +} + +kotlin { + jvm() androidTarget { publishAllLibraryVariants() - compilations.all { - kotlinOptions { - jvmTarget = "11" - } - } } iosArm64() @@ -115,7 +112,7 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } } diff --git a/rssparser/src/commonTest/kotlin/com/prof18/rssparser/TestUtils.kt b/rssparser/src/commonTest/kotlin/com/prof18/rssparser/TestUtils.kt index cd15692e..9146abab 100644 --- a/rssparser/src/commonTest/kotlin/com/prof18/rssparser/TestUtils.kt +++ b/rssparser/src/commonTest/kotlin/com/prof18/rssparser/TestUtils.kt @@ -2,7 +2,6 @@ package com.prof18.rssparser import com.prof18.rssparser.internal.ParserInput -@Suppress("NO_ACTUAL_FOR_EXPECT") internal expect fun readFileFromResources( resourceName: String ): ParserInput @@ -11,5 +10,4 @@ internal expect fun readFileFromResourcesAsString( resourceName: String ): String -@Suppress("NO_ACTUAL_FOR_EXPECT") internal expect val currentTarget: CurrentTarget diff --git a/rssparser/src/commonTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt b/rssparser/src/commonTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt index 9fc1d2fb..453865a9 100644 --- a/rssparser/src/commonTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt +++ b/rssparser/src/commonTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt @@ -2,7 +2,6 @@ package com.prof18.rssparser import com.prof18.rssparser.internal.XmlParser -@Suppress("NO_ACTUAL_FOR_EXPECT") internal expect object XmlParserFactory { fun createXmlParser(): XmlParser } diff --git a/rssparser/src/commonTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt b/rssparser/src/commonTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt index 76521351..34a52f03 100644 --- a/rssparser/src/commonTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt +++ b/rssparser/src/commonTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt @@ -1,4 +1,3 @@ package com.prof18.rssparser -@Suppress("NO_ACTUAL_FOR_EXPECT") expect abstract class XmlParserTestExecutor()