consteval not correctly evaluated
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- cpp
- Lĩnh vực
- developer-experience, tooling
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện hành vi hover với ví dụ C++ consteval trong issue, so sánh việc truy cập member trực tiếp với việc khởi tạo register_address. Theo dõi đường dẫn đánh giá hover của IntelliSense đối với kết quả của các hàm consteval và kiểm tra cách các giá trị được hiển thị. Được xem là hoàn tất khi hover trên demo::get_register("register_name").address luôn hiển thị 0x1000, với coverage cho trường hợp được báo cáo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Environment
- OS and Version: Linux, Ubuntu 24.04
- VS Code Version: 1.116.0
- C/C++ Extension Version: 1.31.5
- If using SSH remote, specify OS of remote machine: no
Bug Summary and Steps to Reproduce
Bug Summary:
The InteliSense output doesn't pars consteval correctly. Mose hover-over doesn't work for values of a struct returned by consteval.
Steps to reproduce:
#include <array>
#include <cstddef>
#include <cstdint>
#include <string_view>
namespace demo {
struct Register_t {
std::string_view name;
std::int64_t address;
};
inline constexpr auto registers = std::array{
Register_t{"register_name", 0x1000},
};
template <std::size_t N>
consteval const Register_t& find_register(std::string_view name, const std::array<Register_t, N>& regs) {
for (const auto& reg : regs) {
if (reg.name == name) {
return reg;
}
}
throw "Register not found";
}
consteval const Register_t& get_register(std::string_view name) { return find_register(name, registers); }
} // namespace demo
static constexpr std::int64_t register_address = demo::get_register("register_name").address;
static_assert(demo::get_register("register_name").address == 0x1000);
static_assert(register_address == 0x1000);
The mouse hover-over of demo::get_register("register_name").address just return int64_t demo::Register_t::address instead of the expected value 0x1000 as it is done through the assigned value in register_address
Expected behavior:
Mouse hover-over on demo::get_register("register_name").address shows also the value.
It seems that the behavior isn't that stable, means that some times the value is returned and sometimes not. e.g. in Version 1.29.3 the values are shown when it is used for template initialization.
Configuration and Logs
-
Other Extensions
ms-vscode.cmake-tools
ms-vscode.cpptools-themes
ms-vscode.cpptools-extension-pack
ms-vscode.cpp-devtools
Additional context
No response
- Ngôn ngữ chính
- TypeScript
- Star
- 6.2k
- Fork
- 1.7k
- Merge trung bình
- 14 giờ 46 phút
- Pull request đã merge (30 ngày)
- 61
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của microsoft/vscode-cpptools
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
microsoft/vscode-cpptools#14787 ·
-
[Bug] cpptools fails to start on Ubuntu ARM64 due to missing execute permissions on shared libraries Đang mởbug fixed Language Service regression
microsoft/vscode-cpptools#14779 · 1 người được giao ·
-
Language Service more info needed
microsoft/vscode-cpptools#14778 · 1 bình luận · 1 người được giao ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 64/100
microsoft/vscode-cpptools#14769 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
microsoft/vscode-cpptools#14768 · 1 bình luận ·
Tất cả issue của microsoft/vscode-cpptools
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
copse-dev/agent-pane#2953 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
[Bug]: Matrix progress drafts fail with "Matrix runtime not initialized" during tool activity Đang mởbug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Client support matrix inclusion Đang mởenhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
calcite-components needs triage refactor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Esri/calcite-design-system#15203 ·