From 3e153e59375d95dd5dbdf15e37a80f80b8741156 Mon Sep 17 00:00:00 2001 From: Pavel Punegov Date: Thu, 24 Jan 2019 20:51:02 +0300 Subject: [PATCH] Fix warnings in compiler and interop --- Interop/Runtime/build.gradle | 2 +- .../src/main/kotlin/kotlinx/cinterop/StableRef.kt | 3 +-- .../kotlin/native/interop/gen/ObjCStubs.kt | 1 + backend.native/build.gradle | 2 +- .../src/org/jetbrains/kotlin/cli/bc/K2Native.kt | 2 +- .../org/jetbrains/kotlin/backend/konan/Context.kt | 2 +- .../jetbrains/kotlin/backend/konan/InteropUtils.kt | 3 +-- .../jetbrains/kotlin/backend/konan/LinkStage.kt | 1 - .../kotlin/backend/konan/llvm/EntryPoint.kt | 14 +++----------- .../konan/optimizations/Devirtualization.kt | 4 ++-- 10 files changed, 12 insertions(+), 22 deletions(-) diff --git a/Interop/Runtime/build.gradle b/Interop/Runtime/build.gradle index c597789df22..94f2418d80f 100644 --- a/Interop/Runtime/build.gradle +++ b/Interop/Runtime/build.gradle @@ -74,7 +74,7 @@ sourceSets.main.kotlin.srcDirs += "src/jvm/kotlin" compileKotlin { kotlinOptions { - freeCompilerArgs = ['-Xuse-experimental=kotlin.ExperimentalUnsignedTypes'] + freeCompilerArgs = ['-Xuse-experimental=kotlin.ExperimentalUnsignedTypes', "-XXLanguage:+InlineClasses"] } } diff --git a/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/StableRef.kt b/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/StableRef.kt index 1151c07d563..45c9989ba77 100644 --- a/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/StableRef.kt +++ b/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/StableRef.kt @@ -73,5 +73,4 @@ public inline class StableRef @PublishedApi internal constructor( /** * Converts to [StableRef] this opaque pointer produced by [StableRef.asCPointer]. */ -inline fun CPointer<*>.asStableRef(): StableRef = StableRef(this) - .also { it.get() as T } +inline fun CPointer<*>.asStableRef(): StableRef = StableRef(this).also { it.get() } diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt index 246b4dead98..4ddfa9f87a0 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt @@ -398,6 +398,7 @@ private val ObjCClassOrProtocol.superTypes: Sequence private fun ObjCClassOrProtocol.declaredMethods(isClass: Boolean): Sequence = this.methods.asSequence().filter { it.isClass == isClass } +@Suppress("UNUSED_PARAMETER") private fun Sequence.inheritedTo(container: ObjCClassOrProtocol, isMeta: Boolean): Sequence = this // TODO: exclude methods that are marked as unavailable in [container]. diff --git a/backend.native/build.gradle b/backend.native/build.gradle index 0dd76f8c5aa..5851fdb9705 100644 --- a/backend.native/build.gradle +++ b/backend.native/build.gradle @@ -222,7 +222,7 @@ targetList.each { target -> args = [*konanArgs, '-output', project(':runtime').file("build/${target}Stdlib"), '-produce', 'library', '-module-name', 'stdlib', '-XXLanguage:+AllowContractsForCustomFunctions', - '-Xmulti-platform', '-Xuse-experimental=kotlin.Experimental', + '-Xmulti-platform', '-Xuse-experimental=kotlin.Experimental', '-XXLanguage:+InlineClasses', '-Xuse-experimental=kotlin.contracts.ExperimentalContracts', '-Xuse-experimental=kotlin.ExperimentalMultiplatform', '-Xallow-result-return-type', diff --git a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt index 03df269a876..cc24a464913 100644 --- a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt +++ b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt @@ -33,7 +33,7 @@ import org.jetbrains.kotlin.serialization.konan.KonanMetadataVersion private class K2NativeCompilerPerformanceManager: CommonCompilerPerformanceManager("Kotlin to Native Compiler") class K2Native : CLICompiler() { - override fun createMetadataVersion(p0: IntArray): BinaryVersion = KonanMetadataVersion(*p0) + override fun createMetadataVersion(versionArray: IntArray): BinaryVersion = KonanMetadataVersion(*versionArray) override val performanceManager:CommonCompilerPerformanceManager by lazy { K2NativeCompilerPerformanceManager() diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt index adb390a6814..7cbd41d92cc 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt @@ -299,7 +299,7 @@ internal class Context(config: KonanConfig) : KonanBackendContext(config) { get() = ir.irModule.irBuiltins val interopBuiltIns by lazy { - InteropBuiltIns(this.builtIns, nativePtr) + InteropBuiltIns(this.builtIns) } var llvmModule: LLVMModuleRef? = null diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InteropUtils.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InteropUtils.kt index 67eaabfaa5c..dfeced21f5f 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InteropUtils.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InteropUtils.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.types.TypeUtils -import org.jetbrains.kotlin.util.OperatorNameConventions object InteropFqNames { @@ -27,7 +26,7 @@ object InteropFqNames { val nativePointed = packageName.child(Name.identifier(nativePointedName)).toUnsafe() } -internal class InteropBuiltIns(builtIns: KonanBuiltIns, vararg konanPrimitives: ClassDescriptor) { +internal class InteropBuiltIns(builtIns: KonanBuiltIns) { val packageScope = builtIns.builtInsModule.getPackage(InteropFqNames.packageName).memberScope diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt index c0f705dc983..b0c11463c5e 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt @@ -193,7 +193,6 @@ internal class LinkStage(val context: Context, val phaser: PhaseManager) { } } catch (e: KonanExternalToolFailure) { context.reportCompilationError("${e.toolName} invocation reported errors") - return null } return executable } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/EntryPoint.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/EntryPoint.kt index d0d93faa446..3a76ad37dd3 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/EntryPoint.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/EntryPoint.kt @@ -7,19 +7,15 @@ package org.jetbrains.kotlin.backend.konan.llvm import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.backend.konan.descriptors.isArray -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.incremental.components.NoLookupLocation -import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.konan.target.CompilerOutputKind.* import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.typeUtil.isUnit -import org.jetbrains.kotlin.utils.alwaysTrue internal fun findMainEntryPoint(context: Context): FunctionDescriptor? { @@ -43,14 +39,10 @@ internal fun findMainEntryPoint(context: Context): FunctionDescriptor? { val main = candidates.singleOrNull { it.hasSingleArrayOfStringParameter } ?: candidates.singleOrNull { it.hasNoParameters } ?: - run { - context.reportCompilationError("Could not find '$entryName' in '$packageName' package.") - null - } - - if (main != null && main.isSuspend) { + context.reportCompilationError("Could not find '$entryName' in '$packageName' package.") + + if (main.isSuspend) { context.reportCompilationError("Entry point can not be a suspend function.") - return null } return main diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt index 7d4ee1ef507..e714afa7802 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/Devirtualization.kt @@ -1016,7 +1016,7 @@ internal object Devirtualization { .asSequence() .filter { it.key.irCallSite != null } .associate { it.key.irCallSite!! to it.value } - devirtualize(irModule, context, moduleDFG, externalModulesDFG, devirtualizedCallSites) + devirtualize(irModule, context, externalModulesDFG, devirtualizedCallSites) removeRedundantCoercions(irModule, context, moduleDFG, externalModulesDFG) return AnalysisResult(devirtualizationAnalysisResult) } @@ -1040,7 +1040,7 @@ internal object Devirtualization { || (this is IrPrivateFunctionCall && specialNames.any { dfgSymbol.name?.contains(it) == true }) private fun devirtualize(irModule: IrModuleFragment, context: Context, - moduleDFG: ModuleDFG, externalModulesDFG: ExternalModulesDFG, + externalModulesDFG: ExternalModulesDFG, devirtualizedCallSites: Map) { val symbols = context.ir.symbols val nativePtrEqualityOperatorSymbol = symbols.areEqualByValue[PrimitiveBinaryType.POINTER]!!