bsl-language-server icon indicating copy to clipboard operation
bsl-language-server copied to clipboard

[FP] AllFunctionPathMustHaveReturn

Open EightM opened this issue 3 years ago • 9 comments

Диагностика

Версия

0.19.0-rc1

Описание ложного срабатывания диагностики

Агрится на код, хотя директивы препроцессора покрывают все ветки выполнения

Пример кода

Функция Тест()
    #Если Не ВебКлиент Тогда
    Массив = Новый Массив;

    Если Условие Тогда
        Возврат Массив;
    КонецЕсли;

    Возврат ПустойМассив;

    #Иначе

    ВызватьИсключение "Упс";

    #КонецЕсли

КонецФункции

Скриншоты

Дополнительная информация

EightM avatar Sep 01 '21 16:09 EightM

Не воспроизводится. @EightM что пишет, когда агрится?

EvilBeaver avatar Sep 01 '21 19:09 EvilBeaver

@EvilBeaver При запуске теста из bsl ls, где есть только одна функция выше

[Diagnostic [
  range = Range [
    start = Position [
      line = 0
      character = 8
    ]
    end = Position [
      line = 0
      character = 12
    ]
  ]
  severity = Warning
  code = Either [
    left = AllFunctionPathMustHaveReturn
    right = null
  ]
  codeDescription = DiagnosticCodeDescription [
    href = "https://1c-syntax.github.io/bsl-language-server/diagnostics/AllFunctionPathMustHaveReturn"
  ]
  source = "bsl-language-server"
  message = "Не все пути выполнения функции возвращают значение"
  tags = ArrayList ()
  relatedInformation = ArrayList (
    DiagnosticRelatedInformation [
      location = Location [
        uri = "file:///C:/fake-uri.bsl"
        range = Range [
          start = Position [
            line = 0
            character = 8
          ]
          end = Position [
            line = 0
            character = 12
          ]
        ]
      ]
      message = "Не все пути выполнения функции возвращают значение"
    ],
    DiagnosticRelatedInformation [
      location = Location [
        uri = "file:///C:/fake-uri.bsl"
        range = Range [
          start = Position [
            line = 2
            character = 4
          ]
          end = Position [
            line = 2
            character = 25
          ]
        ]
      ]
      message = "Не все пути выполнения функции возвращают значение"
    ]
  )
  data = null
]]

EightM avatar Sep 01 '21 19:09 EightM

Вот тест с этим кодом: https://github.com/EvilBeaver/bsl-language-server/commit/8ab5fe2bbc3ce8bf13ea5126e903fa9b2adbe2f0#diff-2a7f371587db01893f07f2f9bbd9ca8279642dcde008e7ea8c60f8ae13eb3f9cR105

Список диагностик пустой. Не очень понял, что значит "При запуске теста из bsl ls, где есть только одна функция выше"

EvilBeaver avatar Sep 01 '21 19:09 EvilBeaver

@EvilBeaver У тебя пропущена решетка в Если Не ВебКлиент Тогда\n

EightM avatar Sep 01 '21 19:09 EightM

Воспроизвелось, спасибо!

EvilBeaver avatar Sep 01 '21 19:09 EvilBeaver

@EightM можешь проверить на 0.19.0-rc.2?

nixel2007 avatar Sep 10 '21 13:09 nixel2007

@nixel2007 Проверил. Починилось

EightM avatar Sep 10 '21 14:09 EightM

благодарю

nixel2007 avatar Sep 10 '21 14:09 nixel2007

Давайте переоткроем. Это добавлено в тесты, но де-факто же не исправлено, просто поддержка препроцессора отключена. Перенсем в другой майлстоун

EvilBeaver avatar Sep 10 '21 17:09 EvilBeaver