Case insensitive object matching#62
Conversation
Greptile SummaryIntroduces a new Tcl variable
Confidence Score: 4/5Safe to merge; the feature is well-contained, covered by a new regression test, and follows existing conventions throughout the codebase. The glob-pattern path correctly reads the case-insensitive flag at call time in util/PatternMatch.cc — the interaction between eager regexp compilation and the lazy Important Files Changed
Sequence DiagramsequenceDiagram
participant TCL as Tcl Script
participant Trace as trace_case_insensitive_matching
participant SWIG as Search.i (SWIG)
participant Sta as Sta / Variables
participant PM as PatternMatch
participant FO as FilterObjects
TCL->>Trace: set sta_case_insensitive_matching 1
Trace->>SWIG: set_case_insensitive_matching(true)
SWIG->>Sta: setCaseInsensitiveMatching(true)
Sta->>Sta: "variables_->case_insensitive_matching_ = true"
TCL->>SWIG: "get_cells -quiet U*"
SWIG->>PM: "PatternMatch(U*, false, false, interp)"
Note over PM: is_regexp_=false, no compileRegexp()
SWIG->>PM: hasWildcards()
PM->>Sta: caseInsensitiveMatching() → true
PM-->>SWIG: true (forces linear scan)
loop each candidate cell
SWIG->>PM: match(cell_name)
PM->>Sta: caseInsensitiveMatching() → true
PM->>PM: "patternMatchNoCase(U*, name, true)"
PM-->>SWIG: matched?
end
SWIG-->>TCL: matching cells
TCL->>SWIG: "get_cells -filter full_name==R1"
SWIG->>FO: "filterObjects(full_name, ==, R1, all, sta)"
FO->>Sta: caseInsensitiveMatching() → true
FO->>FO: "eq = stringEqual(prop, R1) [case-insensitive]"
FO-->>SWIG: filtered set
SWIG-->>TCL: matching cells
|
No description provided.