Вижуалкин Intellisense лажает
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.01.22 12:14
Оценка:
Здравствуйте!

MSVC2019 — подсвечивает красной волнистой чертой вызов функции и говорит, что но матчинг. Код же замечательно компилится и запускается.

  Код примерно такой:

namespace marty{
namespace clang{
namespace helpers
{

template< typename Context, typename Object > inline
::clang::FullSourceLoc getFullSourceLoc( Context *pContext, Object *pObject )
{
    return Context->getFullLoc(pObject->getBeginLoc());
}


template< typename Stream, typename StringType > inline
Stream& printError( Stream &stream, const ::clang::FullSourceLoc &sourceLoc, StringType msg )
{
    auto fileName = (sourceLoc.isValid() && sourceLoc.getFileEntry() ? sourceLoc.getFileEntry()->getName() : "<FILE>");
    auto line     = (sourceLoc.isValid() ? sourceLoc.getSpellingLineNumber()   : 0);
    auto pos      = (sourceLoc.isValid() ? sourceLoc.getSpellingColumnNumber() : 0);

    stream << fileName << ":" << line << ":" << pos << ": error: " << msg << "\n";

    return stream;
}


template< typename Stream, typename StringType > inline
Stream& printError( Stream &stream, StringType msg )
{
    stream << "error: " << msg << "\n";

    return stream;
}


} // namespace helpers
} // namespace clang
} // namespace marty



// ...

marty::clang::helpers::printError( llvm::errs(), errRecipientStr ); //!!! Вот тут среда показывает ошибку



Это можно как-то полечить?
Маньяк Робокряк колесит по городу
Re: Вижуалкин Intellisense лажает
От: Alexander G Украина  
Дата: 01.01.22 15:08
Оценка: 6 (1)
Здравствуйте, Marty, Вы писали:

M>Это можно как-то полечить?


Самостоятельно лечить -- вряд ли.

Можно попытаться изолировать и найти воркэраунд.
Можно зарепортить на https://developercommunity.visualstudio.com/ в надежде на скорейший фикс в течение ближайших лет.

Запуск 64-битной версии компилятора с недокументриованной опцией /BE и опцией /c приводит к компиляции фтронтендом EDG, который используется интеллисенсом; это позволяет ловить ошибки интеллисенса как ошибки компилятора.

#ifdef __EDG__ позволяет детектить компиляцию EDG (включая и intellisence и cl /BE /c)

#ifdef __INTELLISENSE__ позволяет ловить именно intellisense (т.е. не запуск cl /BE /c)
Русский военный корабль идёт ко дну!
Отредактировано 01.01.2022 15:08 Alexander G . Предыдущая версия .
Re[2]: Вижуалкин Intellisense лажает
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.01.22 15:37
Оценка:
Здравствуйте, Alexander G, Вы писали:

M>>Это можно как-то полечить?


AG>Самостоятельно лечить -- вряд ли.


AG>Можно попытаться изолировать и найти воркэраунд.

AG>Можно зарепортить на https://developercommunity.visualstudio.com/ в надежде на скорейший фикс в течение ближайших лет.

Спс, попробую не полениться и сделать минимальный пример. Хотя — у меня проект на гитхабе, открытый (и там есть вполне себе минимальный воспроизводимый пример) — прокатит такое?

Хотя, ремарка про "скорейший фикс в течение ближайших лет" — воодушевляет


AG>Запуск 64-битной версии компилятора с недокументриованной опцией /BE и опцией /c приводит к компиляции фтронтендом EDG, который используется интеллисенсом; это позволяет ловить ошибки интеллисенса как ошибки компилятора.


AG>#ifdef __EDG__ позволяет детектить компиляцию EDG (включая и intellisence и cl /BE /c)


AG>#ifdef __INTELLISENSE__ позволяет ловить именно intellisense (т.е. не запуск cl /BE /c)


Это конечно интересно, без сарказма, но чего-то я пока не понял, как бы это мне могло помочь. Только если попробовать посмотреть, что скажет EDG.
В x86 версии компилятора CL такой фичи нет? А как определить, какой из CL запускает среда? И как ей сказать, что надо принудительно запускать x64 версию CL?


ЗЫ А про EDG — и вправду интересно. Он ещё жив? Как я понимаю, это был в своё время очень платный и очень дорогой аналог llvm/clang в своё время. Не помню, чтобы у них был свой отдельный публично доступный компилятор (если не говорить о каких-то лохматых годах), но вроде его многие компиляторо-строители использовали. По идее, clang/clangd должны бы его хорошо начать теснить, на старых дрожжях держится?
Маньяк Робокряк колесит по городу
Re: Вижуалкин Intellisense лажает
От: ArtDenis Россия  
Дата: 01.01.22 15:54
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте!


M>MSVC2019 — подсвечивает красной волнистой чертой вызов функции и говорит, что но матчинг. Код же замечательно компилится и запускается.


Было очень-очень давно что-то похожее. Причину точную не помню, но что-то связанное настройками проекта (возможно что лишний пробел в пути или что-то в этом роде).

Ну и классика "Rescan Solution" не помогает?
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: Вижуалкин Intellisense лажает
От: Alexander G Украина  
Дата: 01.01.22 16:00
Оценка: 6 (1)
Здравствуйте, Marty, Вы писали:

M>Спс, попробую не полениться и сделать минимальный пример. Хотя — у меня проект на гитхабе, открытый (и там есть вполне себе минимальный воспроизводимый пример) — прокатит такое?


Да, такое инвестигейтят тоже. Но, разумеется, чем изолированнее, тем лучше.

M>Хотя, ремарка про "скорейший фикс в течение ближайших лет" — воодушевляет


Это же всего лишь интеллисенс, поэтому вряд ли получит приоритет.

M>Это конечно интересно, без сарказма, но чего-то я пока не понял, как бы это мне могло помочь. Только если попробовать посмотреть, что скажет EDG.


Упрощает эксперименты, как мне кажется. Хотя бы позволяет скопировать полный текст ошибки по-нормальному.

Позволяет сделать хороший комманд лайновый репро, настолько изолированный, чтобы даже исключал IDE как таковую.
Пример https://developercommunity.visualstudio.com/t/1564433.


M>В x86 версии компилятора CL такой фичи нет? А как определить, какой из CL запускает среда? И как ей сказать, что надо принудительно запускать x64 версию CL?


Среда запускает x64 версию для x86 кода, насколько я понимаю. Опция /BE для 32-битного тулсета не работает.
Можно запускать нативную компиляцию x64 в x64 (тулсет в Hostx64\x64) или кросс компиляцию x64 в x86 (тулсет в Hostx64\x86)

M>ЗЫ А про EDG — и вправду интересно. Он ещё жив? Как я понимаю, это был в своё время очень платный и очень дорогой аналог llvm/clang в своё время. Не помню, чтобы у них был свой отдельный публично доступный компилятор (если не говорить о каких-то лохматых годах), но вроде его многие компиляторо-строители использовали. По идее, clang/clangd должны бы его хорошо начать теснить, на старых дрожжях держится?


Я не знаю про актуальное использование EDG как полного копилятора, но есть инфа, что EDG используется как фронт-энд:
* в Intellisense MSVC
* в CUDA NVCC
* в одном из интеловских компиляторов (том, который "старый")

Это мне известно по контрибьюшину в MSVC STL.
Собственно cl /BE /c — часть тестовых матриц MSVC STL, отвечающая за компилируемость интеллисенсом.
(Скрипт, запускающий тест, при этом, пропускает cl /BE /c на x86, оставляет только на x64)
Русский военный корабль идёт ко дну!
Отредактировано 01.01.2022 16:09 Alexander G . Предыдущая версия . Еще …
Отредактировано 01.01.2022 16:00 Alexander G . Предыдущая версия .
Re[2]: Вижуалкин Intellisense лажает
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.01.22 16:32
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Было очень-очень давно что-то похожее. Причину точную не помню, но что-то связанное настройками проекта (возможно что лишний пробел в пути или что-то в этом роде).


AD>Ну и классика "Rescan Solution" не помогает?


А где эту классику искать? А то я первый раз о ней слышу
Маньяк Робокряк колесит по городу
Re[3]: Вижуалкин Intellisense лажает
От: ArtDenis Россия  
Дата: 01.01.22 17:25
Оценка: 4 (1)
Здравствуйте, Marty, Вы писали:

M>А где эту классику искать? А то я первый раз о ней слышу


В контекстном меню проекта конечно
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[4]: Вижуалкин Intellisense лажает
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.01.22 17:35
Оценка:
Здравствуйте, ArtDenis, Вы писали:

M>>А где эту классику искать? А то я первый раз о ней слышу


AD>В контекстном меню проекта конечно


Да, есть, действительно. И да, вроде помогло
Маньяк Робокряк колесит по городу
Re[5]: Вижуалкин Intellisense лажает
От: ArtDenis Россия  
Дата: 01.01.22 18:14
Оценка:
Здравствуйте, Marty, Вы писали:

M>Да, есть, действительно. И да, вроде помогло


Ну значит скорее всего просто что-то менялось не средствами IDE, а интеллисенс об этом не знал
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[6]: Вижуалкин Intellisense лажает
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.01.22 18:55
Оценка:
Здравствуйте, ArtDenis, Вы писали:

M>>Да, есть, действительно. И да, вроде помогло


AD>Ну значит скорее всего просто что-то менялось не средствами IDE, а интеллисенс об этом не знал


Да, менялось. Я код в фаре пишу, в студии иногда разглядываю и отлаживаю. В студии стоит опция — "перезагружать изменённые извне файлы", и она перегружает их без запроса. Странно, что Intellisense это не прочухивает

Баг, как ни крути
Маньяк Робокряк колесит по городу
Re[7]: Вижуалкин Intellisense лажает
От: Alexander G Украина  
Дата: 01.01.22 19:06
Оценка:
Здравствуйте, Marty, Вы писали:

M>Баг, как ни крути


Но не воспроизведёшь, и воркэраунд простой, так что придётся забить.
Русский военный корабль идёт ко дну!
Re[8]: Вижуалкин Intellisense лажает
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.01.22 19:21
Оценка:
Здравствуйте, Alexander G, Вы писали:

M>>Баг, как ни крути


AG>Но не воспроизведёшь, и воркэраунд простой, так что придётся забить.


Похоже на то. Ну, хоть обход найден, и то — хорошо
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.