Skip to content

Improve performance of setproperties/getproperties for structs with unions #212

Improve performance of setproperties/getproperties for structs with unions

Improve performance of setproperties/getproperties for structs with unions #212

Triggered via pull request August 18, 2024 20:25
Status Failure
Total duration 3m 6s
Artifacts
This run and associated checks have been archived and are scheduled for deletion. Learn more about checks retention

Documenter.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

9 errors, 2 warnings, and 1 notice
Documentation: docs/src/index.md#L65
doctest failure in src/index.md:65-72 ```jldoctest tips add3 = setproperties(add2; value=3) add3(1) # output 4 ``` Subexpression: add3 = setproperties(add2; value=3) add3(1) Evaluated output: ERROR: ArgumentError: Failed to assign fields (:value,) to object with fields (:outputby, :value). Stacktrace: [1] macro expansion @ ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [inlined] [2] check_patch_fields_exist(obj::Add{Returning, Int64}, patch::@NamedTuple{value::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [3] setproperties_object(obj::Add{Returning, Int64}, patch::@NamedTuple{value::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:207 [4] setproperties(obj::Add{Returning, Int64}, patch::@NamedTuple{value::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:136 [5] setproperties(obj::Add{Returning, Int64}; kw::@kwargs{value::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:132 [6] top-level scope @ none:1 Expected output: 4 diff = Warning: Diff output requires color. 4ERROR: ArgumentError: Failed to assign fields (:value,) to object with fields (:outputby, :value). Stacktrace: [1] macro expansion @ ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [inlined] [2] check_patch_fields_exist(obj::Add{Returning, Int64}, patch::@NamedTuple{value::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [3] setproperties_object(obj::Add{Returning, Int64}, patch::@NamedTuple{value::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:207 [4] setproperties(obj::Add{Returning, Int64}, patch::@NamedTuple{value::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:136 [5] setproperties(obj::Add{Returning, Int64}; kw::@kwargs{value::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:132 [6] top-level scope @ none:1
Documentation: docs/src/index.md#L78
doctest failure in src/index.md:78-86 ```jldoctest tips add3! = setproperties(add3; outputby=Mutating()) add3!([0], 1) # output 1-element Vector{Int64}: 4 ``` Subexpression: add3! = setproperties(add3; outputby=Mutating()) add3!([0], 1) Evaluated output: ERROR: UndefVarError: `add3` not defined Stacktrace: [1] top-level scope @ none:1 Expected output: 1-element Vector{Int64}: 4 diff = Warning: Diff output requires color. 1-element Vector{Int64}: 4ERROR: UndefVarError: `add3` not defined Stacktrace: [1] top-level scope @ none:1
Documentation: docs/src/index.md#L91
doctest failure in src/index.md:91-99 ```jldoctest tips using Setfield: @set add3′ = @set add3!.outputby = Returning() add3′ === add3 # output true ``` Subexpression: using Setfield: @set add3′ = @set add3!.outputby = Returning() add3′ === add3 Evaluated output: ERROR: UndefVarError: `add3!` not defined Stacktrace: [1] top-level scope @ ~/.julia/packages/Setfield/AS2xF/src/sugar.jl:196 Expected output: true diff = Warning: Diff output requires color. trueERROR: UndefVarError: `add3!` not defined Stacktrace: [1] top-level scope @ ~/.julia/packages/Setfield/AS2xF/src/sugar.jl:196
Documentation: docs/src/index.md#L108
doctest failure in src/index.md:108-123 ```jldoctest tips OutputBy(x) = typeof(x) OutputBy(::Type{<:Add{O}}) where O = O() using Setfield: Setfield, @lens Setfield.set(add::Add, ::typeof(@lens OutputBy(_)), o::OutputBy) = @set add.outputby = o obj = (add=add3!,) obj′ = @set OutputBy(obj.add) = Returning() obj′ === (add=add3,) # output true ``` Subexpression: OutputBy(x) = typeof(x) OutputBy(::Type{<:Add{O}}) where O = O() using Setfield: Setfield, @lens Setfield.set(add::Add, ::typeof(@lens OutputBy(_)), o::OutputBy) = @set add.outputby = o obj = (add=add3!,) obj′ = @set OutputBy(obj.add) = Returning() obj′ === (add=add3,) Evaluated output: ERROR: UndefVarError: `add3!` not defined Stacktrace: [1] top-level scope @ none:1 Expected output: true diff = Warning: Diff output requires color. trueERROR: UndefVarError: `add3!` not defined Stacktrace: [1] top-level scope @ none:1
Documentation: docs/src/index.md#L125
doctest failure in src/index.md:125-136 ```jldoctest tips Setfield.set(::Type{Add{O0, T}}, ::typeof(@lens OutputBy(_)), ::O1) where {O0, T, O1 <: OutputBy} = Add{O1, T} T1 = typeof(add3!) T2 = @set OutputBy(T1) = Returning() T2 <: Add{Returning} # output true ``` Subexpression: Setfield.set(::Type{Add{O0, T}}, ::typeof(@lens OutputBy(_)), ::O1) where {O0, T, O1 <: OutputBy} = Add{O1, T} T1 = typeof(add3!) T2 = @set OutputBy(T1) = Returning() T2 <: Add{Returning} Evaluated output: ERROR: UndefVarError: `add3!` not defined Stacktrace: [1] top-level scope @ none:1 Expected output: true diff = Warning: Diff output requires color. trueERROR: UndefVarError: `add3!` not defined Stacktrace: [1] top-level scope @ none:1
Documentation: src/ConstructionBase.jl#L1
doctest failure in ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl ```jldoctest julia> using ConstructionBase julia> struct S a b c end julia> s = S(1,2,3) S(1, 2, 3) julia> setproperties(s, (a=10,c=4)) S(10, 2, 4) julia> setproperties((a=1,c=2,b=3), (a=10,c=4)) (a = 10, c = 4, b = 3) ``` Subexpression: setproperties(s, (a=10,c=4)) Evaluated output: ERROR: ArgumentError: Failed to assign fields (:a, :c) to object with fields (:a, :b, :c). Stacktrace: [1] macro expansion @ ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [inlined] [2] check_patch_fields_exist(obj::S, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [3] setproperties_object(obj::S, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:207 [4] setproperties(obj::S, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:136 [5] top-level scope @ none:1 Expected output: S(10, 2, 4) diff = Warning: Diff output requires color. S(10, 2, 4)ERROR: ArgumentError: Failed to assign fields (:a, :c) to object with fields (:a, :b, :c). Stacktrace: [1] macro expansion @ ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [inlined] [2] check_patch_fields_exist(obj::S, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [3] setproperties_object(obj::S, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:207 [4] setproperties(obj::S, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:136 [5] top-level scope @ none:1
Documentation: src/ConstructionBase.jl#L1
doctest failure in ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl ```jldoctest julia> using ConstructionBase julia> struct S a b c end julia> s = S(1,2,3) S(1, 2, 3) julia> setproperties(s, (a=10,c=4)) S(10, 2, 4) julia> setproperties((a=1,c=2,b=3), (a=10,c=4)) (a = 10, c = 4, b = 3) ``` Subexpression: setproperties((a=1,c=2,b=3), (a=10,c=4)) Evaluated output: ERROR: ArgumentError: Failed to assign fields (:a, :c) to object with fields (:a, :c, :b). Stacktrace: [1] macro expansion @ ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [inlined] [2] check_patch_fields_exist(obj::@NamedTuple{a::Int64, c::Int64, b::Int64}, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [3] setproperties_object(obj::@NamedTuple{a::Int64, c::Int64, b::Int64}, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:207 [4] setproperties(obj::@NamedTuple{a::Int64, c::Int64, b::Int64}, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:136 [5] top-level scope @ none:1 Expected output: (a = 10, c = 4, b = 3) diff = Warning: Diff output requires color. (a = 10, c = 4, b = 3)ERROR: ArgumentError: Failed to assign fields (:a, :c) to object with fields (:a, :c, :b). Stacktrace: [1] macro expansion @ ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [inlined] [2] check_patch_fields_exist(obj::@NamedTuple{a::Int64, c::Int64, b::Int64}, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [3] setproperties_object(obj::@NamedTuple{a::Int64, c::Int64, b::Int64}, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:207 [4] setproperties(obj::@NamedTuple{a::Int64, c::Int64, b::Int64}, patch::@NamedTuple{a::Int64, c::Int64}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:136 [5] top-level scope @ none:1
Documentation: src/ConstructionBase.jl#L1
doctest failure in ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl ```jldoctest julia> using ConstructionBase julia> struct S a b c end julia> o = S(10, 2, 4) S(10, 2, 4) julia> setproperties(o, a="A", c="cc") S("A", 2, "cc") ``` Subexpression: setproperties(o, a="A", c="cc") Evaluated output: ERROR: ArgumentError: Failed to assign fields (:a, :c) to object with fields (:a, :b, :c). Stacktrace: [1] macro expansion @ ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [inlined] [2] check_patch_fields_exist(obj::S, patch::@NamedTuple{a::String, c::String}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [3] setproperties_object(obj::S, patch::@NamedTuple{a::String, c::String}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:207 [4] setproperties(obj::S, patch::@NamedTuple{a::String, c::String}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:136 [5] setproperties(obj::S; kw::@kwargs{a::String, c::String}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:132 [6] top-level scope @ none:1 Expected output: S("A", 2, "cc") diff = Warning: Diff output requires color. S("A", 2, "cc")ERROR: ArgumentError: Failed to assign fields (:a, :c) to object with fields (:a, :b, :c). Stacktrace: [1] macro expansion @ ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [inlined] [2] check_patch_fields_exist(obj::S, patch::@NamedTuple{a::String, c::String}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:140 [3] setproperties_object(obj::S, patch::@NamedTuple{a::String, c::String}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:207 [4] setproperties(obj::S, patch::@NamedTuple{a::String, c::String}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:136 [5] setproperties(obj::S; kw::@kwargs{a::String, c::String}) @ ConstructionBase ~/work/ConstructionBase.jl/ConstructionBase.jl/src/ConstructionBase.jl:132 [6] top-level scope @ none:1
Documentation
Process completed with exit code 1.
Documentation
The following actions uses node12 which is deprecated and will be forced to run on node16: actions/checkout@v2. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
Documentation
The following actions use a deprecated Node.js version and will be forced to run on node20: actions/checkout@v2. For more info: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
[julia-buildpkg] Caching of the julia depot was not detected
Consider using `julia-actions/cache` to speed up runs https://github.com/julia-actions/cache. To ignore, set input `ignore-no-cache: true`