Skip to content

glob: match explicitly-named dotfiles and resolve literal paths through symlinks - #32853

Merged
Jarred-Sumner merged 8 commits into
mainfrom
claude/farm/38875b1f/glob-explicit-dot-and-symlink-literal
Jun 28, 2026
Merged

glob: match explicitly-named dotfiles and resolve literal paths through symlinks#32853
Jarred-Sumner merged 8 commits into
mainfrom
claude/farm/38875b1f/glob-explicit-dot-and-symlink-literal

glob: peek past `**` in eval_impl so SymLink/Unknown entries reach ev…

3d20655
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed Jun 27, 2026 in 39m 16s

Code review found 1 important issue

Found 2 candidates, confirmed 1. See review comments for details.

Details

Severity Count
🔴 Important 1
🟡 Nit 0
🟣 Pre-existing 0
Severity File:Line Issue
🔴 Important src/glob/GlobWalker.rs:1834-1845 eval_literal_subset doesn't peek past ** — **/linkdir/... with followSymlinks:false skips literally-named symlinks

Annotations

Check failure on line 1845 in src/glob/GlobWalker.rs

See this annotation in the file changed.

@claude claude / Claude Code Review

eval_literal_subset doesn't peek past ** — **/linkdir/... with followSymlinks:false skips literally-named symlinks

`eval_literal_subset` only checks currently-active components for `SyntaxHint::Literal` and never peeks at the segment after `**` — so with `followSymlinks:false`, `**/linkdir/file.txt` returns `[]` even though `linkdir` is a literal segment, while `linkdir/file.txt` works. This is the same structural gap already fixed twice in this PR for `eval_dir` (0eb5ff1c) and `eval_impl` (3d206550); `eval_literal_subset` needs the same `**`-peek (when `comp[idx]` is `Double` and `comp[idx+1]` is `Literal`