https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106285

David Malcolm <dmalcolm at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED

--- Comment #3 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
FWIW with the patches I've proposed for PR other/116253, the output for this
testcase becomes:

$ ./xgcc -B. -S -fdiagnostics-set-output=text:experimental-nesting=yes
-std=c++20 -fconcepts-diagnostics-depth=3
../../src/gcc/testsuite/g++.dg/template/nested-diagnostics-pr106285.C  
-I../x86_64-pc-linux-gnu/libstdc++-v3/include  
-I../../src/libstdc++-v3/include  
-I../x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu  
-I../../src/libstdc++-v3/libsupc++
../../src/gcc/testsuite/g++.dg/template/nested-diagnostics-pr106285.C:20:21:
error: no matching function for call to ‘C<int, int>::C(<brace-enclosed
initializer list>, <brace-enclosed initializer list>)’
   20 | C<int, int> c({}, {});
      |                     ^
  • we found 4 candidates
    • candidate 1: ‘template<class AA, class BB> C<A, B>::C(AA&, BB&,
__secret_tag) [with BB = AA; A = int; B = int]’
     
../../src/gcc/testsuite/g++.dg/template/nested-diagnostics-pr106285.C:16:5:
         16 |     C(AA&, BB&, __secret_tag)
            |     ^
      • candidate expects 3 arguments, 2 provided
    • candidate 2: ‘template<class AA, class BB> C<A, B>::C(AA, BB) [with BB =
AA; A = int; B = int]’
     
../../src/gcc/testsuite/g++.dg/template/nested-diagnostics-pr106285.C:8:5:
          8 |     C(AA, BB)
            |     ^
      • template argument deduction/substitution failed:
        •   couldn’t deduce template parameter ‘AA’
         
../../src/gcc/testsuite/g++.dg/template/nested-diagnostics-pr106285.C:20:21:
             20 | C<int, int> c({}, {});
                |                     ^
    • candidate 3: ‘constexpr C<A, B>::C(C<A, B>&&) [with A = int; B = int]’
     
../../src/gcc/testsuite/g++.dg/template/nested-diagnostics-pr106285.C:11:3:
         11 |   C(C&&) = default;
            |   ^
      • candidate expects 1 argument, 2 provided
    • candidate 4: ‘constexpr C<A, B>::C() [with A = int; B = int]’
     
../../src/gcc/testsuite/g++.dg/template/nested-diagnostics-pr106285.C:5:3:
          5 |   C() = default;
            |   ^
      • candidate expects 0 arguments, 2 provided

I was about to mark this as a duplicate of PR other/116253 as it shows the
structure, but there's one other idea here: the patches don't yet put the
"reason for failure" before the "location of decl" as suggested in comment #2. 
I'll experiment with doing that next.

Reply via email to