From a54c36ff5e36e6f2095fea90a229f70d84ae739d Mon Sep 17 00:00:00 2001 From: Jukka Aho Date: Mon, 11 May 2026 02:23:03 +0300 Subject: [PATCH] chore(assemblers): add shared redundant-kernel depwarn helper Introduce _depwarn_redundant_kernel_arg! and a session Ref so legacy overloads that ignore a volume kernel emit a single Base.depwarn toward kernel-column-only APIs. --- src/assemblers/redundant_kernel_depwarn.jl | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/assemblers/redundant_kernel_depwarn.jl diff --git a/src/assemblers/redundant_kernel_depwarn.jl b/src/assemblers/redundant_kernel_depwarn.jl new file mode 100644 index 0000000..a8b1501 --- /dev/null +++ b/src/assemblers/redundant_kernel_depwarn.jl @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2015-2026 Jukka Aho +# SPDX-License-Identifier: MIT + +# One `Base.depwarn` per session for overloads that take a redundant volume `kernel` +# (ignored in favour of `cache.kernel_column` on the DOF-based path, or unused in +# symmetric Neumann `apply_load!` signatures). +const _REDUNDANT_KERNEL_ARG_DEPWARN = Ref(false) + +@noinline function _depwarn_redundant_kernel_arg!(caller::Symbol) + if !_REDUNDANT_KERNEL_ARG_DEPWARN[] + _REDUNDANT_KERNEL_ARG_DEPWARN[] = true + Base.depwarn( + "overload with a redundant `kernel` argument is deprecated (it is not read; " * + "DOF-based volume assembly reads kernels from `cache.kernel_column`). " * + "Prefer `(cache, asm, mesh; …)`, `(y, cache, asm, mesh, x; …)`, and the same " * + "pattern for matrix-free operators, preconditioners, eigensolve helpers, " * + "partitioned matvec / MPI drivers, and `compute_block_diagonal!` / " * + "`BlockJacobiPreconditioner` entry points without a separate volume kernel.", + caller, + ) + end + return nothing +end