Skip to content

Commit a655aee

Browse files
authored
Avoid self-recursion in RandomExtensions.make (#1420)
Self-recursion disables optimizations and can lead to `@inferred` reporting failures as a result, even when `@code_warntype` seemingly suggests that the code being called is type stable. As an example, without this patch the following reports failure using AbstractAlgebra, Test using AbstractAlgebra.RandomExtensions: RandomExtensions, make R = polynomial_ring(polynomial_ring(QQ,:x1)[1], :y)[1] @inferred make(R, 0:0, 1:10, -10:10)
1 parent f2f0895 commit a655aee

21 files changed

+26
-26
lines changed

docs/src/rand.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ function RandomExtensions.make(S::PolyRing, deg_range::AbstractUnitRange{Int}, v
6464
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
6565
Make(S, deg_range, vs[1]) # forward to default Make constructor
6666
else
67-
make(S, deg_range, make(R, vs...))
67+
Make(S, deg_range, make(R, vs...))
6868
end
6969
end
7070
```

src/AbsMSeries.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ function RandomExtensions.make(S::MSeriesRing,
156156
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
157157
Make(S, term_range, vs[1])
158158
else
159-
make(S, term_range, make(R, vs...))
159+
Make(S, term_range, make(R, vs...))
160160
end
161161
end
162162

src/Fraction.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -928,7 +928,7 @@ function RandomExtensions.make(S::FracField, vs...)
928928
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
929929
RandomExtensions.Make(S, vs[1]) # forward to default Make constructor
930930
else
931-
make(S, make(R, vs...))
931+
Make(S, make(R, vs...))
932932
end
933933
end
934934

src/FreeAssAlgebra.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ function RandomExtensions.make(S::AbstractAlgebra.FreeAssAlgebra,
224224
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
225225
Make(S, term_range, exp_bound, vs[1])
226226
else
227-
make(S, term_range, exp_bound, make(R, vs...))
227+
Make(S, term_range, exp_bound, make(R, vs...))
228228
end
229229
end
230230

src/LaurentMPoly.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ function RandomExtensions.make(S::AbstractAlgebra.LaurentMPolyRing,
103103
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
104104
Make(S, term_range, exp_bound, vs[1])
105105
else
106-
make(S, term_range, exp_bound, make(R, vs...))
106+
Make(S, term_range, exp_bound, make(R, vs...))
107107
end
108108
end
109109

src/MPoly.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1306,7 +1306,7 @@ function RandomExtensions.make(S::AbstractAlgebra.MPolyRing, term_range::Abstrac
13061306
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
13071307
Make(S, term_range, exp_bound, vs[1])
13081308
else
1309-
make(S, term_range, exp_bound, make(R, vs...))
1309+
Make(S, term_range, exp_bound, make(R, vs...))
13101310
end
13111311
end
13121312

src/Matrix.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6646,7 +6646,7 @@ function RandomExtensions.make(S::MatSpace, vs...)
66466646
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
66476647
Make(S, vs[1]) # forward to default Make constructor
66486648
else
6649-
make(S, make(R, vs...))
6649+
Make(S, make(R, vs...))
66506650
end
66516651
end
66526652

src/MatrixAlgebra.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ function RandomExtensions.make(S::MatAlgebra, vs...)
314314
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
315315
Make(S, vs[1]) # forward to default Make constructor
316316
else
317-
make(S, make(R, vs...))
317+
Make(S, make(R, vs...))
318318
end
319319
end
320320

src/Module.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ function RandomExtensions.make(M::FPModule, vs...)
286286
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
287287
Make(M, vs[1]) # forward to default Make constructor
288288
else
289-
make(M, make(R, vs...))
289+
Make(M, make(R, vs...))
290290
end
291291
end
292292

src/NCPoly.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ function RandomExtensions.make(S::NCPolyRing, deg_range::AbstractUnitRange{Int},
684684
if length(vs) == 1 && elem_type(R) == Random.gentype(vs[1])
685685
Make(S, deg_range, vs[1]) # forward to default Make constructor
686686
else
687-
make(S, deg_range, make(R, vs...))
687+
Make(S, deg_range, make(R, vs...))
688688
end
689689
end
690690

0 commit comments

Comments
 (0)