Decompose GetCursorName into focused private helpers - #717
Merged
tannergooding merged 1 commit intoJul 13, 2026
Merged
Conversation
Extract the tag-prefix stripping, anonymous-qualifier stripping, and anonymous-name resolution logic out of GetCursorName and into StripCursorNameTagPrefix, StripCursorNameAnonymousQualifier, and ResolveAnonymousCursorName. This makes the top-level flow readable while preserving exact behavior; the redundant name = nameString assignments in the resolved branches are dropped since name is only consumed by the trailing nameString ??= name.ToString() fallback, which only runs in the unchanged error path. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.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.
Decomposes the long
GetCursorName(NamedDecl)method inPInvokeGenerator.Naming.csinto focused private helpers to improve readability, without changing behavior.Extracted three self-contained sub-computations, each with a small parameter surface:
StripCursorNameTagPrefix-- strips theenum/struct/unionprefix.StripCursorNameAnonymousQualifier-- handles the::(anonymous qualifier.ResolveAnonymousCursorName-- resolves the whitespace/(-prefixed anonymous name (TypeDecl/ParmVarDecl/FieldDecl/error branches).nameStringis threaded viaref(scoped refon the two static span-returning strip helpers to satisfy ref-safety), andnameis passed by value. The redundantname = nameStringassignments in the resolved branches are dropped sincenameis only consumed by the trailingnameString ??= name.ToString()fallback, which only runs on the unchanged error path -- so generated output is byte-identical.Build is 0 warnings / 0 errors and all 3708 golden-file generator tests pass.
Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com