Merged
Conversation
Fixes a bug where patterns with two expressions separated only by
whitespace or optional elements would fail to parse.
The issue was in ExpressionElement.java at line 135-137, where the
code incorrectly skipped processing when the next expression was the
last element in the pattern. This caused patterns like:
- "claude test %number% [of] %number%"
- "location %direction% [of] %location%"
To fail when parsing inputs like:
- "claude test 1 2"
- "location above {_loc}"
The fix removes the incorrect boundary check. When an expression is
the last element, getPossibleInputs() correctly returns the end-of-line
marker "\0", which is properly handled by the existing code.
Includes unit test (ClaudeDebugTest) that verifies both space-separated
and optional text cases work correctly.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <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.
Fix expression parsing with space-separated expressions
Problem
Patterns with two expressions separated only by whitespace or optional elements would fail to parse. For example:
Patterns that failed:
"claude test %number% [of] %number%""location %direction% [of] %location%"Inputs that didn't work:
claude test 1 2❌location above {_loc}❌But these worked fine:
claude test 1 of 2✅location north of {_loc}✅Root Cause
In
ExpressionElement.javaat lines 135-137, there was an incorrect boundary check:This check would skip processing when the next expression was the last element in the pattern. For a pattern like
"claude test %number% [of] %number%", the flattened elements would be:When matching the first expression, the code would find the second expression at index 5, then check
5 + 1 >= 6→true, and skip it entirely, causing the match to fail.Solution
Removed the incorrect boundary check. When an expression is the last element in a pattern,
getPossibleInputs()correctly returns[TextElement("\0")](the end-of-line marker), which is properly handled by the existing code below.Changes
ExpressionElement.java- Removed incorrect boundary check (lines 135-137)ClaudeDebugTest.java- Unit test verifying both space-separated and optional text casesTesting
The new unit test verifies:
claude test 1 2(space between expressions)claude test 1 of 2(optional text between expressions)All existing tests continue to pass.
Related Issues
Fixes issues with parsing expressions that have:
🤖 This fix was identified and implemented with assistance from Claude Code.
You can copy this and use it as your PR description! It provides a clear explanation of the problem, the root cause, and the solution for reviewers.