Set/array literals only accepted single elements; the common Pascal
notation with ranges failed to parse ('Closing square bracket
expected'):
if c in ['0'..'9'] then ...
if b in [1..5, 250..255] then ...
if f in [frBanana..frDate] then ...
ReadArray now expands constant '..' ranges into individual constant
elements while parsing. Rules match Delphi where applicable:
- both bounds must be compile-time ordinal constants of the same family
(char/char, integer/integer, or values of the identical enum type),
- ranges can be mixed freely with single elements,
- an inverted range ('z'..'a') contributes no elements,
- a range spanning 256 or more values is rejected (a set cannot hold
more), reported as a type mismatch.
Dynamic bounds stay unsupported (they would require runtime set
construction); the bounds must be constants, mirroring the previous
all-constant behaviour of set literals.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Set/array literals only accepted single elements; the common Pascal
notation with ranges failed to parse ('Closing square bracket
expected'):
if c in ['0'..'9'] then ...
if b in [1..5, 250..255] then ...
if f in [frBanana..frDate] then ...
ReadArray now expands constant '..' ranges into individual constant
elements while parsing. Rules match Delphi where applicable:
(char/char, integer/integer, or values of the identical enum type),
more), reported as a type mismatch.
Dynamic bounds stay unsupported (they would require runtime set
construction); the bounds must be constants, mirroring the previous
all-constant behaviour of set literals.
🤖 Generated with Claude Code