Support constant ranges in set literals: ['0'..'9']#309
Open
TetzkatLipHoka wants to merge 1 commit into
Open
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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