Open
Description
🆘 Modules (including Header Units)
There are an unknown number of blocking issues for EDG consuming header units and named modules. Currently, EDG coverage is disabled in the header units test, and hasn't been added to the named modules test:
Click to expand env.lst files:
STL/tests/std/tests/P1502R1_standard_library_header_units/env.lst
Lines 18 to 22 in a26f4ad
STL/tests/std/tests/modules_20_matrix.lst
Lines 18 to 20 in a26f4ad
Help wanted: EDG is looking into the issues with header units, but we can accelerate this work by investigating, reducing, and reporting individual issues.
✅ Reported Upstream
- VSO-1161828 DevCom-10156297 EDGcpfe/23297 EDG: wrong precedence for
<=>
- VSO-1327220 EDGcpfe/24321 EDG doesn't detect narrowing conversions from a user-defined type to a pointer type to bool
- VSO-1898880 EDGcpfe/26641 EDG fails to handle variable template specializations that differ only in the requires-clause
- VSO-1898890 EDGcpfe/26576 EDG produces an error for conversion from array to const reference to pointer
- VSO-1898912 EDGcpfe/26535 EDG does not consider
single_view<trivially_copy_assignable_type>
to be trivially copy-assignable - VSO-1898913 EDGcpfe/26534 Befriending an abbreviated function template makes EDG ignore subsequent members
- VSO-1898915 EDGcpfe/23896 EDG produces a hard error for
can_three_way<bool, int>
- VSO-1898929 EDGcpfe/25761 EDG rejects requires-clause in a definition within a function template
- VSO-1898937 EDGcpfe/23985 EDG's
__is_convertible_to
depends on whether the private members can be accessed in the current context- Duplicate: VSO-1898941 EDGcpfe/23985 EDG's
default_initializable<const T>
has wrong value - Duplicate: VSO-1898945 EDGcpfe/23985 EDG's
default_initializable<AggregatesExplicitDefault>
has wrong value
- Duplicate: VSO-1898941 EDGcpfe/23985 EDG's
- VSO-1898939 EDGcpfe/26746 EDG's
__is_constructible
has wrong value - VSO-1898947 EDGcpfe/26747 EDG's
std::nullptr_t
has relational operators, but it should not - VSO-1898962 EDGcpfe/26750 EDG
constexpr
dynamic allocations can't handle an array ofstd::string
in debug mode - VSO-1900279 EDGcpfe/26763 EDG: Conditional
explicit
specifier is checked too early in constrained constructor - VSO-1900281 EDGcpfe/26539 EDG: Variable template is instantiated too early
- VSO-1900290 EDGcpfe/25760 EDG thinks a member does not exist in conditional
noexcept
with friendship - VSO-1900293 EDGcpfe/26577 EDG rejects constrained alias template in a pack expansion, when the pack is empty
- VSO-1900294 EDGcpfe/26749 EDG: Constrained default constructor causes problems
- Accepted by MSVC in VS 2022 17.8 Preview 5, but rejected by Clang 16.0.5. Clang is probably wrong, see LLVM-60293.
- VSO-1901430 EDGcpfe/26547 EDG rejects
as_const_view
with error: atomic constraint depends on itself - VSO-1949414 EDGcpfe/27053 EDG incorrectly diagnoses expired storage in constant expression
- VSO-1949451 EDGcpfe/27058 EDG concepts rejects
std::expected
trying to propagate triviality of assignment operations - VSO-1951821 EDGcpfe/27063 EDG instantiates the wrong overload of
promise_type::operator new
forgenerator
machinery - VSO-1953956 DevCom-10581519 EDGcpfe/27133 EDG incorrectly thinks a pointer to the base class and a pointer to the derived class can be subtracted under some conditions
- VSO-1956558 EDGcpfe/27056 EDG incorrectly rejects default construction of union with nontrivial member
- VSO-2254146 DevCom-10747012 EDGcpfe/27684 EDG doesn't handle
std::is_empty
(__is_empty
) properly for potentially-overlapping member subobjects- Blocked by MS ABI work.
- VSO-2430558 DevCom-10880933 EDGcpfe/??? EDG can't handle some generic lambdas in requires-expressions
- VSO-2459167 DevCom-10896316 EDGcpfe/??? EDG hasn't implemented CWG-2256
🎉 Fixed
- Fixed in 17.9:
- VSO-1868335 DevCom-10436970 EDGcpfe/26720 Intellisense doesn't recognize a dependent type in a parameter declaration of a requires expression
- VSO-1898889 EDGcpfe/26402 EDG thinks that dereferencing a function pointer produces a function (should be a reference to function)
- VSO-1900278 EDG: Constraint expression cannot be satisfied if it calls a member function of the current class
- VSO-1900292 EDG fails to handle a requires-clause that involves a local type alias
- VSO-1900296 EDG thinks that conditional-expression has function type when it should have reference-to-function type
- VSO-1900276 EDGcpfe/26748 EDG: Default member initializer is instantiated too eagerly when there's a
noexcept
defaulted default constructor - VSO-1898908 EDGcpfe/26758 EDG ICE when a range-based
for
loop over lvalueiota_view
is evaluated in a constant expression
- Fixed in 17.10:
- VSO-1900291 EDG ICE involving pointer arithmetic
- VSO-1951794 EDGcpfe/27055 EDG produces a wrong value for a requires-clause that involves a local type alias
- Fixed in 17.11:
- VSO-1948896 EDGcpfe/27054 Catastrophic Edge error involving
constexpr std::string
in aunion
⚠️ This was fixed (VS-PR-539546), but the workaround inP0896R4_views_join
still can't be removed, we need to reduce and report again
- VSO-2016422 EDG hasn't (completely?) implemented CWG-2518 making
static_assert(false)
usable - VSO-2064546 EDG ICE when deriving from
std::num_get
- VSO-1948896 EDGcpfe/27054 Catastrophic Edge error involving
- Fixed in 17.12:
- VSO-2228189 DevCom-10732572 EDG's implementation of WG21-P0960R3 in C++20 mode is incomplete
- VSO-2208356 error: no operator "|" matches these operands
- Fixed in 17.13:
- VSO-1898933 EDGcpfe/26745 EDG rejects parenthesized aggregate initialization in a mem-initializer
- VSO-2086901 DevCom-10678753 EDGcpfe/27599 EDG doesn't properly handle conditionally existing member variable templates in requires-clauses
- VSO-2188364 EDG assertion failed in
conversion_for_direct_reference_binding_possible
- VSO-2254804 EDG ICE in
cpfe.dll!make_coroutine_result_expression
with C++23<generator>
test - VSO-2283373 EDGcpfe/27658 EDG: Failure to compare pointers to array elements in a constant expression
- Fixed in 17.14p1:
- VSO-892705 EDGcpfe/21420 EDG reports
__is_convertible_to(int[], int*) == false
- VSO-1584921 DevCom-10107834 EDGcpfe/25528 EDG,
decltype
can't deduce type
- VSO-892705 EDGcpfe/21420 EDG reports