Skip to content

Commit a3e76b1

Browse files
Make getproperty on Composite unthunk (#121)
* Make `getproperty` on `Composite` unthunk * Bump patch version
1 parent 112184d commit a3e76b1

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "ChainRulesCore"
22
uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
3-
version = "0.9.15"
3+
version = "0.9.16"
44

55
[deps]
66
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
@@ -11,7 +11,7 @@ BenchmarkTools = "0.5"
1111
FiniteDifferences = "0.10"
1212
MuladdMacro = "0.2.1"
1313
StaticArrays = "0.11, 0.12"
14-
julia = "^1.0"
14+
julia = "1"
1515

1616
[extras]
1717
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"

src/differentials/composite.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,15 @@ Base.convert(::Type{<:Tuple}, comp::Composite{<:Any, <:Tuple}) = backing(comp)
6868
Base.convert(::Type{<:Dict}, comp::Composite{<:Dict, <:Dict}) = backing(comp)
6969

7070
Base.getindex(comp::Composite, idx) = getindex(backing(comp), idx)
71-
Base.getproperty(comp::Composite, idx::Int) = getproperty(backing(comp), idx) # for Tuple
7271

72+
# for Tuple
73+
Base.getproperty(comp::Composite, idx::Int) = unthunk(getproperty(backing(comp), idx))
7374
function Base.getproperty(
7475
comp::Composite{P, <:NamedTuple{L}}, idx::Symbol
7576
) where {P, L}
7677
# Need to check L directly, or else this does not constant-fold
7778
idx L || return Zero()
78-
return getproperty(backing(comp), idx)
79+
return unthunk(getproperty(backing(comp), idx))
7980
end
8081

8182
Base.keys(comp::Composite) = keys(backing(comp))

test/differentials/composite.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ end
5353
@test keys(Composite{Tuple{Float64,}}(2.0)) == Base.OneTo(1)
5454
@test propertynames(Composite{Tuple{Float64,}}(2.0)) == (1,)
5555
@test getproperty(Composite{Tuple{Float64,}}(2.0), 1) == 2.0
56+
@test getproperty(Composite{Tuple{Float64,}}(@thunk 2.0^2), 1) == 4.0
57+
@test getproperty(Composite{Tuple{Float64,}}(a=(@thunk 2.0^2),), :a) == 4.0
5658

5759
@test length(Composite{Foo}(x=2.5)) == 1
5860
@test length(Composite{Tuple{Float64,}}(2.0)) == 1

0 commit comments

Comments
 (0)