mirror of
https://github.com/typst/typst
synced 2025-05-14 04:56:26 +08:00
Replace infinite repeat layout panic with error (#235)
When a page has auto width and there were no other constraints on the repetition width, this would previously panic. Now, there is an explicit check with a new error and test case.
This commit is contained in:
parent
2f8802a412
commit
8b1852cffb
@ -9,6 +9,9 @@ use super::AlignElem;
|
|||||||
/// Space may be inserted between the instances of the body parameter, so be
|
/// Space may be inserted between the instances of the body parameter, so be
|
||||||
/// sure to include negative space if you need the instances to overlap.
|
/// sure to include negative space if you need the instances to overlap.
|
||||||
///
|
///
|
||||||
|
/// Errors if there no bounds on the available space, as it would create
|
||||||
|
/// infinite content.
|
||||||
|
///
|
||||||
/// ## Example
|
/// ## Example
|
||||||
/// ```example
|
/// ```example
|
||||||
/// Sign on the dotted line:
|
/// Sign on the dotted line:
|
||||||
@ -48,6 +51,11 @@ impl Layout for RepeatElem {
|
|||||||
let apart = remaining / (count - 1.0);
|
let apart = remaining / (count - 1.0);
|
||||||
|
|
||||||
let size = Size::new(regions.size.x, piece.height());
|
let size = Size::new(regions.size.x, piece.height());
|
||||||
|
|
||||||
|
if !size.is_finite() {
|
||||||
|
bail!(self.span(), "repeat with no size restrictions");
|
||||||
|
}
|
||||||
|
|
||||||
let mut frame = Frame::new(size);
|
let mut frame = Frame::new(size);
|
||||||
if piece.has_baseline() {
|
if piece.has_baseline() {
|
||||||
frame.set_baseline(piece.baseline());
|
frame.set_baseline(piece.baseline());
|
||||||
|
@ -37,3 +37,8 @@ A#box(width: 1fr, repeat(rect(width: 6em, height: 0.7em)))B
|
|||||||
|
|
||||||
#set text(dir: rtl)
|
#set text(dir: rtl)
|
||||||
ريجين#box(width: 1fr, repeat(rect(width: 4em, height: 0.7em)))سون
|
ريجين#box(width: 1fr, repeat(rect(width: 4em, height: 0.7em)))سون
|
||||||
|
|
||||||
|
---
|
||||||
|
// Error: 2:2-2:13 repeat with no size restrictions
|
||||||
|
#set page(width: auto)
|
||||||
|
#repeat(".")
|
Loading…
x
Reference in New Issue
Block a user