| /* |
| * 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.") } |
| """ |
| } |
| } |
| } |