Выяснилось, что проблема с литералами множеств, когда результатом выражения диапазона является множество SET64 (или просто SET на 64-разрядной платформе). Где данная операция должна быть определено, я не знаю. В одном месте заменил на костыль.
А вот место, где предположительно чего-то не хватает, LisIntermedateBackend.Mod
Код: Выделить всё
PROCEDURE EvaluateBinaryExpression(x: SyntaxTree.BinaryExpression; VAR result: Operand);
- LisIntermediateBackend sfTypeSET - явно не хватает ещё как минимум одного типа - и ниже по течению. Хотя надо разобраться, может быть там битность сразу есть?
- Заполняется мусором глобальная переменная.
- Вряд ли правильно устроены операции над множествами (напр, сложение).