blob: 5a645753ba34a8b6363fa56ef85dfedaa34f6ad9 [file] [log] [blame]
/*
* Copyright 2010-2018 JetBrains s.r.o. 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.") }
"""
}
}
}