Skip to content

Commit de437f4

Browse files
authored
Merge pull request #717 from conjure-cp/nik/matrix/fix-slice-parse-order
fix(parser/json): fix matrix indexes being parsed in the wrong order
2 parents 18716ff + 956cea9 commit de437f4

10 files changed

+68
-66
lines changed

conjure_oxide/tests/integration/basic/matrix/02-2d-slicing/input-expected-rule-trace-human.txt

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ find a: matrix indexed by [[int(1..3), int(1..2)]] of int(1..3)
44

55
such that
66

7-
allDiff(a[1,..]),
8-
allDiff(a[2,..]),
97
allDiff(a[..,1]),
108
allDiff(a[..,2]),
11-
allDiff(a[..,3]),
9+
allDiff(a[1,..]),
10+
allDiff(a[2,..]),
11+
allDiff(a[3,..]),
1212
(a[1, 1] = 1),
1313
(a[2, 2] = 1)
1414

@@ -20,11 +20,11 @@ find a: matrix indexed by [[int(1..3), int(1..2)]] of int(1..3)
2020

2121
such that
2222

23-
allDiff(a[1,..]),
24-
allDiff(a[2,..]),
2523
allDiff(a[..,1]),
2624
allDiff(a[..,2]),
27-
allDiff(a[..,3]),
25+
allDiff(a[1,..]),
26+
allDiff(a[2,..]),
27+
allDiff(a[3,..]),
2828
(a[1, 1] = 1),
2929
(a[2, 2] = 1)
3030

conjure_oxide/tests/integration/basic/matrix/02-2d-slicing/input.expected-parse.serialised.json

+10-10
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
]
3333
},
3434
[
35+
null,
3536
{
3637
"Atomic": [
3738
{
@@ -44,8 +45,7 @@
4445
}
4546
}
4647
]
47-
},
48-
null
48+
}
4949
]
5050
]
5151
}
@@ -77,6 +77,7 @@
7777
]
7878
},
7979
[
80+
null,
8081
{
8182
"Atomic": [
8283
{
@@ -89,8 +90,7 @@
8990
}
9091
}
9192
]
92-
},
93-
null
93+
}
9494
]
9595
]
9696
}
@@ -122,7 +122,6 @@
122122
]
123123
},
124124
[
125-
null,
126125
{
127126
"Atomic": [
128127
{
@@ -135,7 +134,8 @@
135134
}
136135
}
137136
]
138-
}
137+
},
138+
null
139139
]
140140
]
141141
}
@@ -167,7 +167,6 @@
167167
]
168168
},
169169
[
170-
null,
171170
{
172171
"Atomic": [
173172
{
@@ -180,7 +179,8 @@
180179
}
181180
}
182181
]
183-
}
182+
},
183+
null
184184
]
185185
]
186186
}
@@ -212,7 +212,6 @@
212212
]
213213
},
214214
[
215-
null,
216215
{
217216
"Atomic": [
218217
{
@@ -225,7 +224,8 @@
225224
}
226225
}
227226
]
228-
}
227+
},
228+
null
229229
]
230230
]
231231
}

conjure_oxide/tests/integration/basic/matrix/02-2d-slicing/input.expected-rewrite.serialised.json

+10-10
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
]
3333
},
3434
[
35+
null,
3536
{
3637
"Atomic": [
3738
{
@@ -44,8 +45,7 @@
4445
}
4546
}
4647
]
47-
},
48-
null
48+
}
4949
]
5050
]
5151
}
@@ -77,6 +77,7 @@
7777
]
7878
},
7979
[
80+
null,
8081
{
8182
"Atomic": [
8283
{
@@ -89,8 +90,7 @@
8990
}
9091
}
9192
]
92-
},
93-
null
93+
}
9494
]
9595
]
9696
}
@@ -122,7 +122,6 @@
122122
]
123123
},
124124
[
125-
null,
126125
{
127126
"Atomic": [
128127
{
@@ -135,7 +134,8 @@
135134
}
136135
}
137136
]
138-
}
137+
},
138+
null
139139
]
140140
]
141141
}
@@ -167,7 +167,6 @@
167167
]
168168
},
169169
[
170-
null,
171170
{
172171
"Atomic": [
173172
{
@@ -180,7 +179,8 @@
180179
}
181180
}
182181
]
183-
}
182+
},
183+
null
184184
]
185185
]
186186
}
@@ -212,7 +212,6 @@
212212
]
213213
},
214214
[
215-
null,
216215
{
217216
"Atomic": [
218217
{
@@ -225,7 +224,8 @@
225224
}
226225
}
227226
]
228-
}
227+
},
228+
null
229229
]
230230
]
231231
}

conjure_oxide/tests/integration/basic/matrix/03-domain-letting/input-expected-rule-trace-human.txt

+12-12
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,29 @@ find a: MATRIX
55

66
such that
77

8-
allDiff(a[1,..]),
9-
allDiff(a[2,..]),
108
allDiff(a[..,1]),
119
allDiff(a[..,2]),
12-
allDiff(a[..,3]),
10+
allDiff(a[1,..]),
11+
allDiff(a[2,..]),
12+
allDiff(a[3,..]),
1313
(a[1, 1] = 1),
1414
(a[2, 2] = 1)
1515

1616
--
1717

18-
allDiff(a[1,..]),
19-
allDiff(a[2,..]),
2018
allDiff(a[..,1]),
2119
allDiff(a[..,2]),
22-
allDiff(a[..,3]),
20+
allDiff(a[1,..]),
21+
allDiff(a[2,..]),
22+
allDiff(a[3,..]),
2323
(a[1, 1] = 1),
2424
(a[2, 2] = 1),
2525
~~> substitute_domain_lettings ([("Base", 5000)])
26-
allDiff(a[1,..]),
27-
allDiff(a[2,..]),
2826
allDiff(a[..,1]),
2927
allDiff(a[..,2]),
30-
allDiff(a[..,3]),
28+
allDiff(a[1,..]),
29+
allDiff(a[2,..]),
30+
allDiff(a[3,..]),
3131
(a[1, 1] = 1),
3232
(a[2, 2] = 1)
3333

@@ -40,11 +40,11 @@ find a: matrix indexed by [[int(1..3), int(1..2)]] of int(1..3)
4040

4141
such that
4242

43-
allDiff(a[1,..]),
44-
allDiff(a[2,..]),
4543
allDiff(a[..,1]),
4644
allDiff(a[..,2]),
47-
allDiff(a[..,3]),
45+
allDiff(a[1,..]),
46+
allDiff(a[2,..]),
47+
allDiff(a[3,..]),
4848
(a[1, 1] = 1),
4949
(a[2, 2] = 1)
5050

conjure_oxide/tests/integration/basic/matrix/03-domain-letting/input.expected-parse.serialised.json

+10-10
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
]
3333
},
3434
[
35+
null,
3536
{
3637
"Atomic": [
3738
{
@@ -44,8 +45,7 @@
4445
}
4546
}
4647
]
47-
},
48-
null
48+
}
4949
]
5050
]
5151
}
@@ -77,6 +77,7 @@
7777
]
7878
},
7979
[
80+
null,
8081
{
8182
"Atomic": [
8283
{
@@ -89,8 +90,7 @@
8990
}
9091
}
9192
]
92-
},
93-
null
93+
}
9494
]
9595
]
9696
}
@@ -122,7 +122,6 @@
122122
]
123123
},
124124
[
125-
null,
126125
{
127126
"Atomic": [
128127
{
@@ -135,7 +134,8 @@
135134
}
136135
}
137136
]
138-
}
137+
},
138+
null
139139
]
140140
]
141141
}
@@ -167,7 +167,6 @@
167167
]
168168
},
169169
[
170-
null,
171170
{
172171
"Atomic": [
173172
{
@@ -180,7 +179,8 @@
180179
}
181180
}
182181
]
183-
}
182+
},
183+
null
184184
]
185185
]
186186
}
@@ -212,7 +212,6 @@
212212
]
213213
},
214214
[
215-
null,
216215
{
217216
"Atomic": [
218217
{
@@ -225,7 +224,8 @@
225224
}
226225
}
227226
]
228-
}
227+
},
228+
null
229229
]
230230
]
231231
}

0 commit comments

Comments
 (0)