ITADN

Type piracy in multiple modules

#5601Opengiordano 创建于 2026-05-17
bug 🐞testing 🧪
G
giordanocommented
Today [I learned](https://github.com/NumericalEarth/Breeze.jl/pull/395#discussion_r3255465678) that Aqua doesn't check for type piracy recursively, so we have to actually walk through all submodules of Oceananigans to find them, and it turns out we have many ```julia using Test, Aqua, Oceananigans function walk_submodules!(result, visited, mod::Module) for name in sort(names(mod; all=true, imported=false)) isdefined(mod, name) || continue value = getproperty(mod, name) if value isa Module && parentmodule(value) === mod && !(value in visited) && value !== mod push!(visited, value) push!(result, value) walk_submodules!(result, visited, value) end end end function get_submodules(mod::Module) result = Module[] visited = Set{Module}() walk_submodules!(result, visited, mod) return result end @testset "Aqua" begin @testset "Type piracy for $(mod)" for mod in get_submodules(Oceananigans) Aqua.test_piracies(mod) end end ``` gives ``` Possible type-piracy detected: [1] *(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [2] *(Lop::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Union{Function, Number, Oceananigans.Fields.AbstractField}, b::Union{Function, Number, Oceananigans.Fields.AbstractField}, c::Union{Function, Number, Oceananigans.Fields.AbstractField}, d::Union{Function, Number, Oceananigans.Fields.AbstractField}...) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/multiary_operations.jl:71 [3] *(Lop::Tuple, a::Union{Function, Number, Oceananigans.Fields.AbstractField}, b::Union{Function, Number, Oceananigans.Fields.AbstractField}, c::Union{Function, Number, Oceananigans.Fields.AbstractField}, d::Union{Function, Number, Oceananigans.Fields.AbstractField}...) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/multiary_operations.jl:88 [4] *(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [5] *(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [6] +(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [7] +(Lop::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Union{Function, Number, Oceananigans.Fields.AbstractField}, b::Union{Function, Number, Oceananigans.Fields.AbstractField}, c::Union{Function, Number, Oceananigans.Fields.AbstractField}, d::Union{Function, Number, Oceananigans.Fields.AbstractField}...) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/multiary_operations.jl:71 [8] +(Lop::Tuple, a::Union{Function, Number, Oceananigans.Fields.AbstractField}, b::Union{Function, Number, Oceananigans.Fields.AbstractField}, c::Union{Function, Number, Oceananigans.Fields.AbstractField}, d::Union{Function, Number, Oceananigans.Fields.AbstractField}...) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/multiary_operations.jl:88 [9] +(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [10] +(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [11] -(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [12] -(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [13] -(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [14] /(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [15] /(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [16] /(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [17] <(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [18] <(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [19] <(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [20] <=(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [21] <=(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [22] <=(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [23] >(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [24] >(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [25] >(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [26] >=(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [27] >=(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [28] >=(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [29] ^(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [30] ^(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [31] ^(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [32] atan(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [33] atan(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [34] atan(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [35] atand(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [36] atand(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [37] atand(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 [38] mod(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118 [39] mod(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 [40] mod(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107 Type piracy for Oceananigans.AbstractOperations: Test Failed at /Users/mose/.julia/packages/Aqua/MCcFg/src/piracies.jl:245 Expression: isempty(v) Evaluated: isempty(Method[*(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118, *(Lop::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Union{Function, Number, Oceananigans.Fields.AbstractField}, b::Union{Function, Number, Oceananigans.Fields.AbstractField}, c::Union{Function, Number, Oceananigans.Fields.AbstractField}, d::Union{Function, Number, Oceananigans.Fields.AbstractField}...) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/multiary_operations.jl:71, *(Lop::Tuple, a::Union{Function, Number, Oceananigans.Fields.AbstractField}, b::Union{Function, Number, Oceananigans.Fields.AbstractField}, c::Union{Function, Number, Oceananigans.Fields.AbstractField}, d::Union{Function, Number, Oceananigans.Fields.AbstractField}...) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/multiary_operations.jl:88, *(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128, *(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107, +(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118, +(Lop::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Union{Function, Number, Oceananigans.Fields.AbstractField}, b::Union{Function, Number, Oceananigans.Fields.AbstractField}, c::Union{Function, Number, Oceananigans.Fields.AbstractField}, d::Union{Function, Number, Oceananigans.Fields.AbstractField}...) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/multiary_operations.jl:71, +(Lop::Tuple, a::Union{Function, Number, Oceananigans.Fields.AbstractField}, b::Union{Function, Number, Oceananigans.Fields.AbstractField}, c::Union{Function, Number, Oceananigans.Fields.AbstractField}, d::Union{Function, Number, Oceananigans.Fields.AbstractField}...) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/multiary_operations.jl:88, +(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107, +(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128 … ^(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107, atan(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118, atan(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128, atan(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107, atand(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118, atand(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128, atand(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107, mod(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a::Number, b::Number) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:118, mod(Lc::Tuple, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:128, mod(Lc::Tuple{Union{Nothing, Center, Face}, Union{Nothing, Center, Face}, Union{Nothing, Center, Face}}, a, b) @ Oceananigans.AbstractOperations ~/.julia/packages/Oceananigans/8cYE4/src/AbstractOperations/binary_operations.jl:107]) Stacktrace: [...] Possible type-piracy detected: [1] isless(::Nothing, ::Nothing) @ Oceananigans.BoundaryConditions ~/.julia/packages/Oceananigans/8cYE4/src/BoundaryConditions/boundary_condition_ordering.jl:108 Type piracy for Oceananigans.BoundaryConditions: Test Failed at /Users/mose/.julia/packages/Aqua/MCcFg/src/piracies.jl:245 Expression: isempty(v) Evaluated: isempty(Method[isless(::Nothing, ::Nothing) @ Oceananigans.BoundaryConditions ~/.julia/packages/Oceananigans/8cYE4/src/BoundaryConditions/boundary_condition_ordering.jl:108]) Stacktrace: [...] Possible type-piracy detected: [1] ρ′(i, j, k, grid, eos, θ, sᴬ) @ Oceananigans.BuoyancyFormulations ~/.julia/packages/Oceananigans/8cYE4/src/BuoyancyFormulations/nonlinear_equation_of_state.jl:30 Type piracy for Oceananigans.BuoyancyFormulations: Test Failed at /Users/mose/.julia/packages/Aqua/MCcFg/src/piracies.jl:245 Expression: isempty(v) Evaluated: isempty(Method[ρ′(i, j, k, grid, eos, θ, sᴬ) @ Oceananigans.BuoyancyFormulations ~/.julia/packages/Oceananigans/8cYE4/src/BuoyancyFormulations/nonlinear_equation_of_state.jl:30]) Stacktrace: [...] Possible type-piracy detected: [1] size(loc, topo, sz) @ Oceananigans.Grids ~/.julia/packages/Oceananigans/8cYE4/src/Grids/grid_utils.jl:89 [2] size(loc, topo, sz, indices) @ Oceananigans.Grids ~/.julia/packages/Oceananigans/8cYE4/src/Grids/grid_utils.jl:89 Type piracy for Oceananigans.Grids: Test Failed at /Users/mose/.julia/packages/Aqua/MCcFg/src/piracies.jl:245 Expression: isempty(v) Evaluated: isempty(Method[size(loc, topo, sz) @ Oceananigans.Grids ~/.julia/packages/Oceananigans/8cYE4/src/Grids/grid_utils.jl:89, size(loc, topo, sz, indices) @ Oceananigans.Grids ~/.julia/packages/Oceananigans/8cYE4/src/Grids/grid_utils.jl:89]) Stacktrace: [...] Possible type-piracy detected: [1] ρ(i, j, k, grid, eos, T, S, Z) @ Oceananigans.Models ~/.julia/packages/Oceananigans/8cYE4/src/Models/seawater_density.jl:10 Type piracy for Oceananigans.Models: Test Failed at /Users/mose/.julia/packages/Aqua/MCcFg/src/piracies.jl:245 Expression: isempty(v) Evaluated: isempty(Method[ρ(i, j, k, grid, eos, T, S, Z) @ Oceananigans.Models ~/.julia/packages/Oceananigans/8cYE4/src/Models/seawater_density.jl:10]) Stacktrace: [...] Test Summary: | Pass Fail Total Time Aqua | 31 5 36 1.7s Type piracy for Oceananigans.AbstractOperations | 1 1 1.2s Type piracy for Oceananigans.Advection | 1 1 0.0s Type piracy for Oceananigans.Architectures | 1 1 0.0s Type piracy for Oceananigans.Biogeochemistry | 1 1 0.0s Type piracy for Oceananigans.BoundaryConditions | 1 1 0.0s Type piracy for Oceananigans.BuoyancyFormulations | 1 1 0.0s Type piracy for Oceananigans.Coriolis | 1 1 0.0s Type piracy for Oceananigans.Diagnostics | 1 1 0.0s Type piracy for Oceananigans.DistributedComputations | 1 1 0.0s Type piracy for Oceananigans.Fields | 1 1 0.0s Type piracy for Oceananigans.Forcings | 1 1 0.0s Type piracy for Oceananigans.Grids | 1 1 0.0s Type piracy for Oceananigans.ImmersedBoundaries | 1 1 0.0s Type piracy for Oceananigans.Logger | 1 1 0.0s Type piracy for Oceananigans.Models | 1 1 0.0s Type piracy for Oceananigans.Models.BulkDragBoundaryConditions | 1 1 0.0s Type piracy for Oceananigans.Models.HydrostaticFreeSurfaceModels | 1 1 0.0s Type piracy for Oceananigans.Models.HydrostaticFreeSurfaceModels.SplitExplicitFreeSurfaces | 1 1 0.0s Type piracy for Oceananigans.Models.LagrangianParticleTracking | 1 1 0.0s Type piracy for Oceananigans.Models.NonhydrostaticModels | 1 1 0.0s Type piracy for Oceananigans.Models.ShallowWaterModels | 1 1 0.0s Type piracy for Oceananigans.Models.VarianceDissipationComputations | 1 1 0.0s Type piracy for Oceananigans.MultiRegion | 1 1 0.0s Type piracy for Oceananigans.Operators | 1 1 0.0s Type piracy for Oceananigans.OrthogonalSphericalShellGrids | 1 1 0.0s Type piracy for Oceananigans.OutputReaders | 1 1 0.0s Type piracy for Oceananigans.OutputWriters | 1 1 0.0s Type piracy for Oceananigans.Simulations | 1 1 0.0s Type piracy for Oceananigans.Solvers | 1 1 0.0s Type piracy for Oceananigans.StokesDrifts | 1 1 0.0s Type piracy for Oceananigans.TimeSteppers | 1 1 0.0s Type piracy for Oceananigans.TurbulenceClosures | 1 1 0.0s Type piracy for Oceananigans.TurbulenceClosures.Smagorinskys | 1 1 0.0s Type piracy for Oceananigans.TurbulenceClosures.TKEBasedVerticalDiffusivities | 1 1 0.0s Type piracy for Oceananigans.Units | 1 1 0.0s Type piracy for Oceananigans.Utils | 1 1 0.0s RNG of the outermost testset: Random.Xoshiro(0x398a2405fd4e0591, 0xb1923e0a18b7d4c5, 0xca2772ada9d00479, 0x2c75dbf8783f6893, 0x783f1f53e2417642) ERROR: Some tests did not pass: 31 passed, 5 failed, 0 errored, 0 broken. ``` Completely untyped signatures like https://github.com/CliMA/Oceananigans.jl/blob/f3574aa91ca66e82f9ade63ba51115923e857c24/src/Grids/grid_utils.jl#L89 are particularly bad. Now I need to go, when I have time I'll add a test at leat for enforcing no type piracy in the clean submodules, following the example in https://github.com/NumericalEarth/Breeze.jl/pull/713.
6 条评论