Add guards for empty domains in variable bound propagators #260
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.
Variable bound propagators accessed
range_l[-1]andrange_l[0]without checking for empty domains, causing IndexError during constraint solving failures.Changes
variable_bound_bounds_max_propagator.py: Guardrange_l[-1]access, return-2^63on empty domain to force constraint failurevariable_bound_bounds_min_propagator.py: Guardrange_l[0]access, return2^63on empty domain to force constraint failuretest_constraint_rangelist_extended.py: 10 tests covering tuple syntax edge cases (empty domains, boundaries, mixed syntax, overlapping constraints)test_variable_bound_propagators.py: 7 tests covering propagator behavior with empty domains (chained, offset, circular constraints)Context
The propagators are called during constraint propagation via:
When constraint solving creates impossible conditions (e.g.,
a > 200 and a in rangelist((0,50))), domains can become empty before propagators run. The guards ensureSolveFailureis properly raised instead of crashing withIndexError.Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.