Skip to content

Commit fb5e340

Browse files
committed
Add disambiguities
1 parent b74a86d commit fb5e340

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

src/disambiguities.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ Base.:*(l::Number, r::AbstractDimensions) = error("Please use an `UnionAbstractQ
2323
Base.:/(l::AbstractDimensions, r::Number) = error("Please use an `UnionAbstractQuantity` for division. You used division on types: $(typeof(l)) and $(typeof(r)).")
2424
Base.:/(l::Number, r::AbstractDimensions) = error("Please use an `UnionAbstractQuantity` for division. You used division on types: $(typeof(l)) and $(typeof(r)).")
2525

26+
SymbolicDimensionsSingleton{R}(::D) where {R,D<:AbstractDimensions} = error("SymbolicDimensionsSingleton must be constructed explicitly rather than converted to.")
27+
SymbolicDimensionsSingleton{R}(::Type{R2}) where {R,R2} = error("SymbolicDimensionsSingleton requires a dimension to be specified.")
28+
2629
# Promotion ambiguities
2730
function Base.promote_rule(::Type{F}, ::Type{Bool}) where {F<:FixedRational}
2831
return F

src/symbolic_dimensions.jl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ be used for constructing symbolic units and constants without needing to allocat
5353
"""
5454
struct SymbolicDimensionsSingleton{R} <: AbstractSymbolicDimensions{R}
5555
dim::INDEX_TYPE
56-
57-
SymbolicDimensionsSingleton(dim::INDEX_TYPE, ::Type{_R}) where {_R} = new{_R}(dim)
5856
end
5957

6058
# Access:
@@ -93,7 +91,7 @@ end
9391
function SymbolicDimensionsSingleton{R}(s::Symbol) where {R}
9492
i = get(ALL_MAPPING, s, INDEX_TYPE(0))
9593
iszero(i) && error("$s is not available as a symbol in `SymbolicDimensionsSingleton`. Symbols available: $(ALL_SYMBOLS).")
96-
return SymbolicDimensionsSingleton(i, R)
94+
return SymbolicDimensionsSingleton{R}(i)
9795
end
9896

9997
# Traits:
@@ -199,7 +197,7 @@ a function equivalent to `q -> uconvert(qout, q)`.
199197
uconvert(qout::UnionAbstractQuantity{<:Any,<:AbstractSymbolicDimensions}) = Base.Fix1(uconvert, qout)
200198

201199
Base.copy(d::SymbolicDimensions) = SymbolicDimensions(copy(nzdims(d)), copy(nzvals(d)))
202-
Base.copy(d::SymbolicDimensionsSingleton) = SymbolicDimensionsSingleton(getfield(d, :dim), eltype(d))
200+
Base.copy(d::SymbolicDimensionsSingleton) = constructorof(d)(getfield(d, :dim))
203201

204202
function Base.:(==)(l::AbstractSymbolicDimensions, r::AbstractSymbolicDimensions)
205203
nzdims_l = nzdims(l)

test/unittests.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,12 +824,15 @@ end
824824
@test promote_rule(typeof(π), typeof(x)) == promote_type(Rational{Int32}, typeof(π))
825825
end
826826

827-
@testset "Weakref" begin
827+
@testset "Unimplemented on purpose" begin
828828
x = 1.0u"m"
829829
s = "test"
830830
y = WeakRef(s)
831831
@test_throws ErrorException x == y
832832
@test_throws ErrorException y == x
833+
834+
@test_throws ErrorException DynamicQuantities.SymbolicDimensionsSingleton{Int}(Dimensions())
835+
@test_throws ErrorException DynamicQuantities.SymbolicDimensionsSingleton{Int}(UInt32)
833836
end
834837

835838
@testset "Arrays" begin

0 commit comments

Comments
 (0)