Recientemente, enfrenté esta advertencia en mi IntelliJ Idea. Pero no tengo ninguna solución para eso... Además, no quiero usar @Suppress("NAME_SHADOWING") . Te agradeceré si me orientas. Este es mi código:
fun add( @Parameter id: Long? ): someClass { myTable?.content?.firstOrNull { it.add }?.id?.let { id -> db.products.readById(id)?.let { db.products.delete(it) } } return remove(id) }El sombreado de nombres significa que está utilizando variables con el mismo nombre en diferentes ámbitos, lo que hace más probable que, por accidente, se refiera a la incorrecta. La solución es cambiarles el nombre para que sean diferentes. En su caso, es la variable id . Es a la vez el parámetro de la función y también se define después del primer let . Entonces, por ejemplo, podría hacer esto para eliminar la advertencia:
fun add( @Parameter id: Long? ): someClass { myTable?.content?.firstOrNull { it.add }?.id?.let { id2 -> db.products.readById(id2)?.let { db.products.delete(it) } } return remove(id) }fun add( @Parameter id: Long? ): someClass { myTable?.content?.firstOrNull { it.add }?.id ?.let { id -> // Here you have two variables named "id" (the other being the function parameter) db.products.readById(id)?.let { db.products.delete(it) } } return remove(id) }Simplemente cambie el nombre de uno de los parámetros y la advertencia desaparecerá.