Skip to content

Commit edfd3ef

Browse files
committed
Better error message for missing unit
1 parent c6a982d commit edfd3ef

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

src/symbolic_dimensions.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ end
4242
static_fieldnames(::Type{<:SymbolicDimensions}) = ALL_SYMBOLS
4343
function Base.getproperty(d::SymbolicDimensions{R}, s::Symbol) where {R}
4444
nzdims = getfield(d, :nzdims)
45-
i = ALL_MAPPING[s]
45+
i = get(ALL_MAPPING, s, INDEX_TYPE(0))
46+
iszero(i) && error("$s is not available as a symbol in SymbolicDimensions. Symbols available: $(ALL_SYMBOLS).")
4647
ii = searchsortedfirst(nzdims, i)
4748
if ii <= length(nzdims) && nzdims[ii] == i
4849
return getfield(d, :nzvals)[ii]

test/unittests.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,11 @@ end
580580

581581
# Test conversion
582582
@test typeof(SymbolicDimensions{Rational{Int}}(dimension(us"km/s"))) == SymbolicDimensions{Rational{Int}}
583+
584+
# Helpful error if symbol not found:
585+
sym5 = dimension(us"km/s")
586+
VERSION >= v"1.8" &&
587+
@test_throws "rad is not available as a symbol" sym5.rad
583588
end
584589

585590
@testset "Test ambiguities" begin

0 commit comments

Comments
 (0)