microsoft / microsoft/vscode-cpptools
Concepts with Lambdas gives an incorrect error message
オープン
まだ誰も着手していません。
bug
Language Service
Visual Studio
- 主要言語
- TypeScript
- スター
- 6.2k
- フォーク
- 1.7k
- 平均マージ
- 14時間 46分
- マージ済み PR(30日)
- 61
説明
Environment
- OS and Version: Windows 10, 21H1 (Build: 19043.1826)
- VS Code Version: 1.84.0
- C/C++ Extension Version: 1.17.5
Bug Summary and Steps to Reproduce
When using concepts that call static methods with lambdas the language server crashes.
This does not happen when no lambdas are used.
Reproduction Code
#include <concepts>
struct fullfills_my_concept
{
template <typename Function>
static auto test(const Function& func)
{
return 10;
}
};
template <typename T>
concept MyConcept = requires {
{
T::test([]() { return 20; })
} -> std::same_as<int>;
};
template <MyConcept T = fullfills_my_concept>
struct reprod
{
reprod() { }
};
int main()
{
reprod test{};
return 0;
}
Configuration and Logs
{
"configurations": [
{
"name": "Win32",
"cStandard": "c23",
"cppStandard": "c++20",
"intelliSenseMode": "windows-msvc-x64",
"configurationProvider": "ms-vscode.cmake-tools"
}
],
"version": 4
}
-------- Diagnostics - 11/4/2023, 4:11:35 AM
Version: 1.17.5
Current Configuration:
{
"name": "Win32",
"includePath": [
"c:/Users/<redacted>/Desktop/issue/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0",
"compilerPath": "cl.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-msvc-x64",
"compilerPathInCppPropertiesJson": "cl.exe",
"intelliSenseModeIsExplicit": false,
"cStandardIsExplicit": false,
"cppStandardIsExplicit": false,
"mergeConfigurations": false,
"compilerPathIsExplicit": false,
"configurationProvider": "ms-vscode.cmake-tools",
"browse": {
"path": [
"c:/Users/<redacted>/Desktop/issue/**",
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true
}
}
Custom browse configuration:
{
"browsePath": [
"c:/users/<redacted>/desktop/issue/build/cmakefiles/6855ef14fe638dc4888b0263f0c102ac",
"c:/users/<redacted>/desktop/issue"
],
"compilerPath": "c:/program files/microsoft visual studio/2022/community/vc/tools/msvc/14.37.32822/bin/hostx64/x64/cl.exe",
"compilerArgs": [],
"compilerFragments": [
"/DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -std:c++20 -MDd"
]
}
Custom configurations:
[ C:\Users\<redacted>\Desktop\issue\main.cpp ]
{
"includePath": [],
"defines": [],
"compilerPath": "c:/program files/microsoft visual studio/2022/community/vc/tools/msvc/14.37.32822/bin/hostx64/x64/cl.exe",
"compilerArgs": [],
"compilerFragments": [
"/DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -std:c++20 -MDd"
]
}
cpptools version (native): 1.17.5.0
Translation Unit Mappings:
[ C:\Users\<redacted>\Desktop\issue\main.cpp ]:
C:\Users\<redacted>\Desktop\issue\main.cpp
Translation Unit Configurations:
[ C:\Users\<redacted>\Desktop\issue\main.cpp ]:
Process ID: 7152
Memory Usage: 65 MB
Compiler Path: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx64\x64\cl.exe
Includes:
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt
Defines:
WIN32
_WINDOWS
Standard Version: ms_c++20
IntelliSense Mode: windows-msvc-x64
Total Memory Usage: 65 MB
------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 6354
IntelliSense process crash detected.
loggingLevel has changed to: Debug
LSP: cpptools/activeDocumentChange: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp
LSP: cpptools/textEditorSelectionChange
LSP: cpptools/getCodeActions: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4327)
LSP: cpptools/textEditorSelectionChange
LSP: cpptools/getInlayHints: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4328)
LSP: cpptools/getCodeActions: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4329)
LSP: cpptools/getFoldingRanges: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4330)
LSP: cpptools/textEditorSelectionChange
LSP: textDocument/willSaveWaitUntil: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4331)
willSaveWaitUntil: 0ms
LSP: textDocument/didSave: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp
tag parsing file: C:\Users\<redacted>\Desktop\issue\main.cpp
LSP: cpptools/fileChanged: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp
idle loop: reparsing the active document
Checking for syntax errors: C:\Users\<redacted>\Desktop\issue\main.cpp
Queueing IntelliSense update for files in translation unit of: C:\Users\<redacted>\Desktop\issue\main.cpp
Error squiggle count: 2
Update IntelliSense time (sec): 0.272
LSP: cpptools/getSemanticTokens: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4332)
LSP: cpptools/getFoldingRanges: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4333)
LSP: cpptools/textEditorSelectionChange
LSP: cpptools/getCodeActions: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4334)
LSP: textDocument/willSaveWaitUntil: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4335)
willSaveWaitUntil: 0ms
LSP: textDocument/didSave: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp
tag parsing file: C:\Users\<redacted>\Desktop\issue\main.cpp
LSP: cpptools/fileChanged: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp
idle loop: reparsing the active document
Checking for syntax errors: C:\Users\<redacted>\Desktop\issue\main.cpp
Queueing IntelliSense update for files in translation unit of: C:\Users\<redacted>\Desktop\issue\main.cpp
Error squiggle count: 2
Update IntelliSense time (sec): 0.276
LSP: textDocument/hover: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4336)
LSP: cpptools/getSemanticTokens: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4337)
LSP: cpptools/getCodeActions: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4338)
LSP: cpptools/getCodeActions: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4339)
LSP: cpptools/getFoldingRanges: file:///c%3A/Users/<redacted>/Desktop/issue/main.cpp (id: 4340)
Other Extensions
None used.
Additional context
No response
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
提供された main.cpp を C++20 構成で使用してクラッシュを再現することから始め、lambdas を使用しないバージョンと比較してください。IntelliSense のクラッシュと診断出力を確認して、影響を受けている language-server のパスを特定してください。concepts に lambdas が含まれていても IntelliSense がクラッシュせず、正しい結果を報告すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- cpp
- 領域
- devtools
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100