Files
kotlin-fork/libraries/tools/kotlin-stdlib-gen/src/templates/Guards.kt
T
nikita.movshin 65244b4bea Update copyright.
Change the copyright from "JetBrains s.r.o." to
"JetBrains s.r.o. and Kotlin Project contributors"
Update only 2 lines copyright.
2019-04-23 20:09:22 +03:00

40 lines
1.3 KiB
Kotlin

/*
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package templates
import templates.Family.*
import templates.SequenceClass.*
object Guards : TemplateGroupBase() {
private val THIS = "\$this"
val f_requireNoNulls = fn("requireNoNulls()") {
include(Iterables, Sequences, InvariantArraysOfObjects, Lists)
} builder {
doc { "Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements." }
sequenceClassification(intermediate, stateless)
typeParam("T : Any")
toNullableT = true
returns("SELF")
body {
"""
for (element in this) {
if (element == null) {
throw IllegalArgumentException("null element found in $THIS.")
}
}
@Suppress("UNCHECKED_CAST")
return this as SELF
"""
}
body(Sequences) {
"""
return map { it ?: throw IllegalArgumentException("null element found in $THIS.") }
"""
}
}
}