Skip to content

Commit 45a3604

Browse files
committed
#776: Allow repeat-expr and repeat-until keys without a repeat key
kaitai-io/kaitai_struct#776
1 parent e2b605e commit 45a3604

20 files changed

+110
-46
lines changed

formats/repeat_repeat-expr_only.ksy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
meta:
2+
id: repeat_expr_only
3+
seq:
4+
- id: foo
5+
type: u1
6+
repeat-expr: 42

formats/repeat_repeat-until_only.ksy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
meta:
2+
id: repeat_until_only
3+
seq:
4+
- id: foo
5+
type: u1
6+
repeat-until: _ != 0
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# repeat_bad_repeat-expr-and-until.ksy: /seq/0/repeat: error: expected eos / expr / until, got 'bad'
2+
meta:
3+
id: repeat_bad_repeat_expr_and_until
4+
seq:
5+
- id: foo
6+
type: u1
7+
repeat: bad
8+
repeat-expr: 42
9+
repeat-until: 'true'
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# repeat_bad_repeat-expr.ksy: /seq/0/repeat: error: expected eos / expr / until, got 'bad'
2+
meta:
3+
id: repeat_bad_repeat_expr
4+
seq:
5+
- id: foo
6+
type: u1
7+
repeat: bad
8+
repeat-expr: 42
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# repeat_bad_repeat-until.ksy: /seq/0/repeat: error: expected eos / expr / until, got 'bad'
2+
meta:
3+
id: repeat_bad_repeat_until
4+
seq:
5+
- id: foo
6+
type: u1
7+
repeat: bad
8+
repeat-until: 'true'
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# repeat_eos_repeat-expr-and-until.ksy: /seq/0/repeat: error: either `repeat: eos`, or `repeat-expr`, or `repeat-until` must be specified
2+
meta:
3+
id: repeat_eos_repeat_expr_and_until
4+
seq:
5+
- id: foo
6+
type: u1
7+
repeat: eos
8+
repeat-expr: 42
9+
repeat-until: 'true'
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# repeat_eos_repeat-expr.ksy: /seq/0/repeat: error: `repeat-expr` requires either a `repeat: expr` or absence of a `repeat` key
2+
meta:
3+
id: repeat_eos_repeat_expr
4+
seq:
5+
- id: foo
6+
type: u1
7+
repeat: eos
8+
repeat-expr: 42
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# repeat_eos_repeat-until.ksy: /seq/0/repeat: error: `repeat-until` requires either a `repeat: until` or absence of a `repeat` key
2+
meta:
3+
id: repeat_eos_repeat_until
4+
seq:
5+
- id: foo
6+
type: u1
7+
repeat: eos
8+
repeat-until: 'true'

formats_err/repeat_expr.ksy

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# repeat_expr.ksy: /seq/0/repeat: error: `repeat: expr` requires a `repeat-expr` key
2+
meta:
3+
id: repeat_expr
4+
seq:
5+
- id: foo
6+
type: u1
7+
repeat: expr
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# repeat_expr_repeat-expr-and-until.ksy: /seq/0/repeat: error: either `repeat: eos`, or `repeat-expr`, or `repeat-until` must be specified
2+
meta:
3+
id: repeat_expr_repeat_expr_and_until
4+
seq:
5+
- id: foo
6+
type: u1
7+
repeat: expr
8+
repeat-expr: 42
9+
repeat-until: 'true'

0 commit comments

Comments
 (0)