1c-syntax / bsl-language-server

Реализация Language Server Protocol для языка 1C (BSL)
https://1c-syntax.github.io/bsl-language-server
Other
302 stars 105 forks source link

[FP] AllFunctionPathMustHaveReturn #1778

Open EightM opened 3 years ago

EightM commented 3 years ago

Диагностика

Версия

0.19.0-rc1

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

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

Пример кода

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

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

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

    #Иначе

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

    #КонецЕсли

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

Скриншоты

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

EvilBeaver commented 3 years ago

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

EightM commented 3 years ago

@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
]]
EvilBeaver commented 3 years ago

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

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

EightM commented 3 years ago

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

EvilBeaver commented 3 years ago

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

nixel2007 commented 3 years ago

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

EightM commented 3 years ago

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

nixel2007 commented 3 years ago

благодарю

EvilBeaver commented 3 years ago

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