Skip to content

Commit

Permalink
Spell stuff out for JET so it stops complaining
Browse files Browse the repository at this point in the history
  • Loading branch information
adrhill committed Jun 26, 2024
1 parent 225a350 commit ec8a9c3
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 25 deletions.
3 changes: 0 additions & 3 deletions src/SparseConnectivityTracer.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ include("settypes/duplicatevector.jl")
include("settypes/recursiveset.jl")
include("settypes/sortedvector.jl")

abstract type AbstractPattern end
abstract type AbstractTracer{P<:AbstractPattern} <: Real end

include("patterns.jl")
include("tracers.jl")
include("exceptions.jl")
Expand Down
20 changes: 1 addition & 19 deletions src/patterns.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,7 @@ AbstractPattern
└── IndexSetHessianPattern
```
"""
AbstractPattern

"""
myempty(P)
Constructor for an empty pattern of type `P` representing a new number (usually an empty pattern).
"""
myempty(::P) where {P<:AbstractPattern} = myempty(P)
myempty(::T) where {P,T<:AbstractTracer{P}} = T(myempty(P), true)
myempty(::Type{T}) where {P,T<:AbstractTracer{P}} = T(myempty(P), true)

"""
seed(P, i)
Constructor for a pattern of type `P` that only contains the given index `i`.
"""
seed(::P, i) where {P<:AbstractPattern} = seed(P, i)
seed(::T, i) where {P<:AbstractPattern,T<:AbstractTracer{P}} = T(seed(P, i))
seed(::Type{T}, i) where {P<:AbstractPattern,T<:AbstractTracer{P}} = T(seed(P, i))
abstract type AbstractPattern end

#==========================#
# Utilities on AbstractSet #
Expand Down
35 changes: 32 additions & 3 deletions src/tracers.jl
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
abstract type AbstractTracer{P<:AbstractPattern} <: Real end

#====================#
# ConnectivityTracer #
#====================#
Expand Down Expand Up @@ -182,14 +184,41 @@ end
# Utilities #
#===========#

"""
myempty(T)
myempty(tracer)
myempty(pattern)
Constructor for an empty tracer or pattern of type `T` representing a new number (usually an empty pattern).
"""
myempty(::T) where {T<:AbstractTracer} = myempty(T)

# myempty(::Type{T}) where {P,T<:AbstractTracer{P}} = T(myempty(P), true) # JET complains about this
myempty(::Type{T}) where {P,T<:ConnectivityTracer{P}} = T(myempty(P), true)
myempty(::Type{T}) where {P,T<:GradientTracer{P}} = T(myempty(P), true)
myempty(::Type{T}) where {P,T<:HessianTracer{P}} = T(myempty(P), true)

"""
seed(T, i)
seed(tracer, i)
seed(pattern, i)
Constructor for a tracer or pattern of type `T` that only contains the given index `i`.
"""
seed(::T, i) where {T<:AbstractTracer} = seed(T, i)

# seed(::Type{T}, i) where {P,T<:AbstractTracer{P}} = T(seed(P, i)) # JET complains about this
seed(::Type{T}, i) where {P,T<:ConnectivityTracer{P}} = T(seed(P, i))
seed(::Type{T}, i) where {P,T<:GradientTracer{P}} = T(seed(P, i))
seed(::Type{T}, i) where {P,T<:HessianTracer{P}} = T(seed(P, i))

"""
create_tracer(T, index) where {T<:AbstractTracer}
Convenience constructor for [`ConnectivityTracer`](@ref), [`GradientTracer`](@ref) and [`HessianTracer`](@ref) from input indices.
"""
function create_tracer(
::Type{T}, ::Real, index::Integer
) where {P<:AbstractPattern,T<:AbstractTracer{P}}
function create_tracer(::Type{T}, ::Real, index::Integer) where {P,T<:AbstractTracer{P}}
return T(seed(P, index))
end

Expand Down

0 comments on commit ec8a9c3

Please sign in to comment.