fix: group dotted identifiers split by interleaved comments (issue712)

Identifiers may carry comments between their tokens (e.g. name -- c\n . -- c\n obj). _group only skipped whitespace when locating the tokens around a joining token, so an interleaved comment defeated the prev/next checks and the identifier was never formed.

Add an opt-in skip_comments flag to _group and enable it for group_period and group_as; the comments stay inside the resulting group. Also skip comments in get_parent_name and avoid a redundant separating space in StripCommentsFilter for the newly reachable interleaved-comment identifiers.
This commit is contained in:
dualfroz committed 2026-09-04 22:24:36 +02:00
1 parent 46e6a17daf
commit f0a09a4a1b
4 files changed
+58 -9

No files matched your search

+3 -1
View File
@@ -387,7 +387,9 @@ class TokenList(Token):
A parent object is identified by the first occurring dot.
"""
dot_idx, _ = self.token_next_by(m=(T.Punctuation, '.'))
_, prev_ = self.token_prev(dot_idx)
# skip_cm so a comment between the parent name and the dot (issue712)
# does not get mistaken for the parent name.
_, prev_ = self.token_prev(dot_idx, skip_cm=True)
return remove_quotes(prev_.value) if prev_ is not None else None
def _get_first_name(self, idx=None, reverse=False, keywords=False,