TheTeaMan
TheTeaMan

Reputation: 2513

Mark unused parameters in Kotlin

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?

Upvotes: 139

Views: 61592

Answers (4)

Justin Fiedler
Justin Fiedler

Reputation: 6576

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) {}
}

Upvotes: 0

Mahendra Chhimwal
Mahendra Chhimwal

Reputation: 1818

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.

Upvotes: -9

bashor
bashor

Reputation: 8453

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:

Upvotes: 215

Mike
Mike

Reputation: 11565

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

Upvotes: 9

Related Questions