diff --git a/ext/ExponentialUtilitiesStaticArraysExt.jl b/ext/ExponentialUtilitiesStaticArraysExt.jl index 109e616e..f552386c 100644 --- a/ext/ExponentialUtilitiesStaticArraysExt.jl +++ b/ext/ExponentialUtilitiesStaticArraysExt.jl @@ -2,7 +2,7 @@ module ExponentialUtilitiesStaticArraysExt export default_tolerance, theta, THETA32, THETA64 -using StaticArrays +using StaticArrays: StaticArrays, SMatrix, SVector import Base: @propagate_inbounds import LinearAlgebra: tr, I, opnorm, norm import ExponentialUtilities diff --git a/test/qa/Project.toml b/test/qa/Project.toml index d07cb06f..ebf799ee 100644 --- a/test/qa/Project.toml +++ b/test/qa/Project.toml @@ -6,6 +6,7 @@ JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] @@ -14,5 +15,6 @@ Aqua = "0.8" JET = "0.9, 0.10, 0.11" SafeTestsets = "0.1, 1" SciMLTesting = "2.4" +StaticArrays = "1.9.8" Test = "1" julia = "1.10" diff --git a/test/qa/qa.jl b/test/qa/qa.jl index f60d679c..b7b8f73a 100644 --- a/test/qa/qa.jl +++ b/test/qa/qa.jl @@ -1,6 +1,11 @@ using SciMLTesting, ExponentialUtilities, JET, Test, LinearAlgebra using AllocCheck: check_allocs +# ExplicitImports only sees a package extension once its trigger weakdep is +# loaded (`Base.get_extension` returns `nothing` otherwise), so loading +# StaticArrays here is what puts ExponentialUtilitiesStaticArraysExt under QA. +using StaticArrays + run_qa( ExponentialUtilities; ei_kwargs = (; @@ -8,10 +13,16 @@ run_qa( # LAPACK balancing wrapper `gebal_noalloc!` (which keeps the CPU matrix # exponential allocation-free), plus `Base.promote_op` used to infer the # exponential! workspace type at cache construction without allocating. + # `arithmetic_closure` (owned by StaticArrays) is the only spelling of + # "type you get from doing arithmetic on this eltype", which the + # StaticArrays extension needs to pick the working eltype for `expv` on + # an integer-valued `SMatrix`. It is documented -- its own docstring + # demonstrates `import StaticArrays.arithmetic_closure` -- but StaticArrays + # has not declared it `public`, and there is no public equivalent. all_qualified_accesses_are_public = (; ignore = ( - Symbol("@blasfunc"), :BlasInt, :chkfinite, :chklapackerror, - :chkstride1, :libblastrampoline, :promote_op, + Symbol("@blasfunc"), :BlasInt, :arithmetic_closure, :chkfinite, + :chklapackerror, :chkstride1, :libblastrampoline, :promote_op, ), ), # `chkstride1` (owned by LinearAlgebra) and `libblastrampoline` (owned by