Skip to content

fix(hover): корректный конструктор на обрыве рекурсивной см.-цепочки#4207

Merged
nixel2007 merged 1 commit into
developfrom
claude/github-issue-4204-v19sfb
Jun 25, 2026
Merged

fix(hover): корректный конструктор на обрыве рекурсивной см.-цепочки#4207
nixel2007 merged 1 commit into
developfrom
claude/github-issue-4204-v19sfb

Conversation

@nixel2007

Copy link
Copy Markdown
Member

Closes #4204 (пункт 2)

Продолжение #4196. В hover рекурсивных типов в точке завершения рекурсии вложенный
тип сворачивается в См. Функция, но имя функции определялось неверно.

Причина

При обрыве цикла метка бралась из ленивых см.-источников уже разрешённого типа
поля
(на уровень глубже), а не из собственной ссылки поля. Для

// Структура:
//  * Содержимое - см. Коробка - ...
Функция Контейнер() ... КонецФункции

// Структура:
//  * Описание - Строка
//  * Родитель - см. Контейнер - ...
Функция Коробка(Родитель) ... КонецФункции

тип поля Содержимое — это структура Коробка, у которой поле
Родитель - см. Контейнер. Поэтому на обрыве выводилось См. Контейнер вместо
правильного См. Коробка.

Фикс

Источник для метки и для обнаружения цикла теперь берётся из собственной
ленивой ссылки поля (owner.lazyFields[имя]). Для эагерных полей-коллекций
(Массив из см. Узел) остаётся источник ленивого элемента.

  • Содержимое - см. Коробка → на обрыве См. Коробка
  • дерево Потомки - Массив из см. ДеревоУзелСм. ДеревоУзел ✓ (без регрессии)

Тесты

ReporterScenariosSeeRefTest ужесточён: проверяется именно См. Коробка /
See Коробка и отсутствие См. Контейнер (прежний regex допускал оба имени и
баг не ловил). Затронутые hover/инференс тесты зелёные.

Пункт 1 из #4204 (неоднозначность представления вложенного типа: структура vs
имя конструктора) — это обсуждаемый вопрос отображения, в этот PR не входит.

🤖 Generated with Claude Code


Generated by Claude Code

…ля (#4204 п.2)

В точке завершения рекурсии метка `См. Функция` бралась из источников уже
разрешённого типа поля (на уровень глубже), из-за чего `Содержимое - см. Коробка`
сворачивалось в `См. Контейнер` вместо `См. Коробка`.

Теперь источник берётся из собственной ленивой ссылки поля
(owner.lazyFields[имя]); для эагерных полей-коллекций (`Массив из см. Узел`)
остаётся источник ленивого элемента. Это же значение используется и для
обнаружения цикла.

Тесты ужесточены: проверяется именно `См. Коробка`/`See Коробка` и отсутствие
`См. Контейнер`.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QcYuuctkrfWkmGqXaUmx5S
@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1e9c3eed-51f6-4d20-a83b-cb3343b9a1b7

📥 Commits

Reviewing files that changed from the base of the PR and between e1a14e9 and 65e1223.

📒 Files selected for processing (2)
  • src/main/java/com/github/_1c_syntax/bsl/languageserver/hover/VariableSymbolMarkupContentBuilder.java
  • src/test/java/com/github/_1c_syntax/bsl/languageserver/types/ReporterScenariosSeeRefTest.java
 ___________________________________________________________________
< That's not a helper function. That's a co-dependent relationship. >
 -------------------------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/github-issue-4204-v19sfb

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nixel2007
nixel2007 enabled auto-merge June 25, 2026 19:09
@sonarqubecloud

Copy link
Copy Markdown

@nixel2007
nixel2007 disabled auto-merge June 25, 2026 19:28
@nixel2007
nixel2007 merged commit 287be25 into develop Jun 25, 2026
39 checks passed
@nixel2007
nixel2007 deleted the claude/github-issue-4204-v19sfb branch June 25, 2026 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Ошибка в определении последнего типа в ховере рекурсивных типов

2 participants