Mark unused parameters in Kotlin

Suppress WarningsKotlinUnused Variables

Suppress Warnings Problem Overview


I am defining some functions to be used as callbacks and not all of them use all their parameters.

How can I mark unused parameters so that the compiler won't give me warnings about them?

Suppress Warnings Solutions


Solution 1 - Suppress Warnings

With the @Suppress annotation You can suppress any diagnostics on any declaration or expression.

Examples: Suppress warning on parameter:

fun foo(a: Int, @Suppress("UNUSED_PARAMETER") b: Int) = a

Suppress all UNUSED_PARAMETER warnings inside declaration

@Suppress("UNUSED_PARAMETER")
fun foo(a: Int,  b: Int) {
  fun bar(c: Int) {}
}

@Suppress("UNUSED_PARAMETER")
class Baz {
    fun foo(a: Int,  b: Int) {
        fun bar(c: Int) {}
    }
}

Additionally IDEA's intentions(Alt+Enter) can help you to suppress any diagnostics:

http://i.stack.imgur.com/T9TxX.png"/>

Solution 2 - Suppress Warnings

If your parameter is in a lambda, you can use an underscore to omit it. This removes the unused parameter warnings. It will also prevent IllegalArgumentException in the case that the parameter was null and was marked non-null.

See https://kotlinlang.org/docs/reference/lambdas.html#underscore-for-unused-variables-since-11

Solution 3 - Suppress Warnings

If the functions are part of a class you can declare the containing class open or abstract and the offending methods as open.

open class ClassForCallbacks {
  // no warnings here!
  open fun methodToBeOverriden(a: Int, b: Boolean) {}
}

Or

abstract class ClassForCallbacks {
  // no warnings here!
  open fun methodToBeOverriden(a: Int, b: Boolean) {}
}

Solution 4 - Suppress Warnings

One can disable these warnings by adding a kotlin compile option flag in build.gradle. To configure a single task, use its name. Examples:

compileKotlin {
    kotlinOptions.suppressWarnings = true
}

compileKotlin {
    kotlinOptions {
        suppressWarnings = true
    }
}

It is also possible to configure all Kotlin compilation tasks in the project:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        // ...
    }
}

If one is using kotlin in Android and want to suppress kotlin compiler warnings, add below in app-module build.gradle file

android{
    ....other configurations
    kotlinOptions {
        suppressWarnings = true
    }
}

Whether you really need to suppress all kotlin warning for your project or not, its up to you.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTheTeaManView Question on Stackoverflow
Solution 1 - Suppress WarningsbashorView Answer on Stackoverflow
Solution 2 - Suppress WarningsMikeView Answer on Stackoverflow
Solution 3 - Suppress WarningsJustin FiedlerView Answer on Stackoverflow
Solution 4 - Suppress WarningsMahendra ChhimwalView Answer on Stackoverflow