65244b4bea
Change the copyright from "JetBrains s.r.o." to "JetBrains s.r.o. and Kotlin Project contributors" Update only 2 lines copyright.
40 lines
1.3 KiB
Kotlin
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.") }
|
|
"""
|
|
}
|
|
}
|
|
}
|