libminizinc icon indicating copy to clipboard operation
libminizinc copied to clipboard

Partial assignment of enum var results in type error

Open CervEdin opened this issue 1 year ago • 1 comments

enum E = {A,B};
array[1..2] of var E: X = [
  if i == 1 then B else _ endif
  | i in 1..2
];

result

MiniZinc:
type error: initialisation value for `X' has invalid type-inst: expected `array[_] of var E', actual `array[int] of var int'
Process finished with non-zero exit code 1.

Seen in 2.8.5 and edge

repro example

CervEdin avatar Jul 09 '24 14:07 CervEdin

this works

enum E = {A,B};
array[1..2] of var E: X;
constraint X == [
  if i == 1 then B else _ endif
  | i in 1..2
];

CervEdin avatar Jul 09 '24 15:07 CervEdin

Very nice. Also looks like it works for array2d and I'm guessing the other multi-dimensional array creating functions ♥

CervEdin avatar Sep 20 '24 16:09 CervEdin