From 3431c7b6910c190b8f88fa20b0fbc4497e49e3a6 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Thu, 27 Jun 2024 13:12:02 +0530 Subject: [PATCH 1/3] LAPACK: Avoid repr call in chkvalidparam --- stdlib/LinearAlgebra/src/lapack.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/LinearAlgebra/src/lapack.jl b/stdlib/LinearAlgebra/src/lapack.jl index b2ddaa451b011..ac173fcc807b2 100644 --- a/stdlib/LinearAlgebra/src/lapack.jl +++ b/stdlib/LinearAlgebra/src/lapack.jl @@ -60,10 +60,10 @@ end macro chkvalidparam(position::Int, param, validvalues) :(chkvalidparam($position, $(string(param)), $(esc(param)), $validvalues)) end -function chkvalidparam(position::Int, var::String, val, validvals) +function chkvalidparam(position::Int, var::String, val::AbstractChar, validvals) if val ∉ validvals throw(ArgumentError( - lazy"argument #$position: $var must be one of $validvals, but $(repr(val)) was passed")) + lazy"argument #$position: $var must be one of $validvals, but '$val' was passed")) end return val end From 4a4e7da2f0e042515cfac5de440a8cbe0040d74a Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Thu, 27 Jun 2024 17:11:13 +0530 Subject: [PATCH 2/3] Don't restrict to AbstractChar --- stdlib/LinearAlgebra/src/lapack.jl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/stdlib/LinearAlgebra/src/lapack.jl b/stdlib/LinearAlgebra/src/lapack.jl index ac173fcc807b2..c437464d24590 100644 --- a/stdlib/LinearAlgebra/src/lapack.jl +++ b/stdlib/LinearAlgebra/src/lapack.jl @@ -60,10 +60,13 @@ end macro chkvalidparam(position::Int, param, validvalues) :(chkvalidparam($position, $(string(param)), $(esc(param)), $validvalues)) end -function chkvalidparam(position::Int, var::String, val::AbstractChar, validvals) +function chkvalidparam(position::Int, var::String, val, validvals) + # mimic repr for chars without explicitly calling it + _repr(c::AbstractChar) = "'$c'" + _repr(c) = c if val ∉ validvals throw(ArgumentError( - lazy"argument #$position: $var must be one of $validvals, but '$val' was passed")) + lazy"argument #$position: $var must be one of $validvals, but $(_repr(val)) was passed")) end return val end From 1767c7b163f346ea7710039a48eb49b90c38ba21 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Thu, 27 Jun 2024 17:12:20 +0530 Subject: [PATCH 3/3] update comment --- stdlib/LinearAlgebra/src/lapack.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stdlib/LinearAlgebra/src/lapack.jl b/stdlib/LinearAlgebra/src/lapack.jl index c437464d24590..c21b6ef92c4e5 100644 --- a/stdlib/LinearAlgebra/src/lapack.jl +++ b/stdlib/LinearAlgebra/src/lapack.jl @@ -61,7 +61,8 @@ macro chkvalidparam(position::Int, param, validvalues) :(chkvalidparam($position, $(string(param)), $(esc(param)), $validvalues)) end function chkvalidparam(position::Int, var::String, val, validvals) - # mimic repr for chars without explicitly calling it + # mimic `repr` for chars without explicitly calling it + # This is because `repr` introduces dynamic dispatch _repr(c::AbstractChar) = "'$c'" _repr(c) = c if val ∉ validvals