Skip to content

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

Description

@alisher-nil

Версия
1.0.2

Описание ошибки диагностики
Исправления в последнем релизе сильно улучшили ситуацию.
Ховер больше не роняет сервер.
Подсказки держатся даже на достаточно нереалистичных чейнах:
Image
Очень замечательно.
Работает даже так:

Процедура ЧтоТоПроДеревья()
	Корень = КрасноЧернаяНода();
КонецПроцедуры

// Возвращаемое значение:
//  Структура:
//  * Красное - Булево -
//  * Значение - Число -
//  * Левое - см. КрасноЧернаяНода
//  * Правое - см. КрасноЧернаяНода
Функция КрасноЧернаяНода()
	//
КонецФункции
Image

Однако с ховером есть пара моментов:

  1. Даже на таком простом примере описание в ховере становится сложным. Не помогает ситуации то, что один и тот же тип вложенного значения неоднозначный: сначала структура с содержимым, а на втором цикле - уже именованный по конструктору тип. С другой стороны, если бы тип вложенного значения сразу свернулся бы в имя конструктора, то потерялась бы информация о его базовом типе, что тоже плохо. Это можно обсудить.

  2. Более однозначное: в месте завершения рекурсии, там где вложенный тип сворачивается в конструктор, тип определяется неверно:

Image

Пример кода

Процедура Пример()
	Контекст = Контейнер();
КонецПроцедуры

// Возвращаемое значение:
//  Структура:
//   * Содержимое - см. Коробка - Должна быть коробка
//   * НомерКонтейнера - Строка
Функция Контейнер()
	Возврат Неопределено; // Плейсхолдер
КонецФункции

// Параметры:
//  Родитель - см. Контейнер - Родительский контейнер
//
// Возвращаемое значение:
//  Структура:
//   * Описание - Строка - Описание содержимого
//   * Родитель - см. Контейнер - Контейнер-родитель
Функция Коробка(Родитель)
	Возврат Неопределено; // Плейсхолдер
КонецФункции

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions