<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW " title="NEW --- - Use clang-format on types error messages" href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_bugs_show-5Fbug.cgi-3Fid-3D23782&d=AwMBaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=pF93YEPyB-J_PERP4DUZOJDzFVX5ZQ57vQk33wu0vio&m=ea3xwQooXUp8kD4wUPABHJqtbXwfUYQbqwm5Nrerxdw&s=twAXaMiCotCI5MpLy0Uy94xIY0Vd1KFzFA75r4RHQZ4&e=">23782</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Use clang-format on types error messages
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>3.6
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>C++
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>schnetter@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Here is a "typical" compiler error message I'm receiving from clang:

{{{
./fun/grid_impl.hpp:84:4: note: candidate template ignored: substitution
failure
      [with D = 2, F = fun::detail::tree_fmapStencilMulti_g<2,
      cxx::detail::funobj_impl<cell_t (*)(const cell_t &, long),
&cell_get_face>
      > &, G = unsigned long &, C = adt::maxarray<adt::dummy, 16>, T =
      adt::tree<adt::nested<std::__1::shared_ptr<adt::dummy>,
      adt::grid<adt::maxarray<adt::dummy, 16>, adt::dummy, 2>, adt::dummy,
      adt::detail::nested_default_policy<adt::dummy> >, cell_t>, Args =
      <cxx::detail::funobj_impl<cell_t (*)(const cell_t &, unsigned long, const
      cell_t &, const cell_t &, const cell_t &, const cell_t &), &cell_rhs>,
      cxx::detail::funobj_impl<cell_t (*)(const cell_t &, long),
&cell_get_face>
      &>, $6 = nullptr, CT = adt::grid<adt::maxarray<adt::dummy, 16>,
      adt::tree<adt::nested<std::__1::shared_ptr<adt::dummy>,
      adt::grid<adt::maxarray<adt::dummy, 16>, adt::dummy, 2>, adt::dummy,
      adt::detail::nested_default_policy<adt::dummy> >, cell_t>, 2>, BC =
      adt::grid<adt::maxarray<adt::dummy, 16>, adt::dummy, 1>]: no type named
      'type' in 'cxx::invoke_of<unsigned long &,
      adt::tree<adt::nested<std::__1::shared_ptr<adt::dummy>,
      adt::grid<adt::maxarray<adt::dummy, 16>, adt::dummy, 2>, adt::dummy,
      adt::detail::nested_default_policy<adt::dummy> >, cell_t>, long>'
}}}

To understand this tapeworm, I have to copy-paste it into an editor, look for
matching single quotes, and then manually format (indent) the text between the
quotes. Here is an idea: Couldn't one use clang-format to automated? The error
message would then look like

{{{
./fun/grid_impl.hpp:84:4: note: candidate template ignored: substitution
failure
      [with:

   D = 2, F = fun::detail::tree_fmapStencilMulti_g<
              2, cxx::detail::funobj_impl<cell_t (*)(const cell_t &, long),
                                          &cell_get_face>> &,
   G = unsigned long &, C = adt::maxarray<adt::dummy, 16>,
   T = adt::tree<
       adt::nested<std::__1::shared_ptr<adt::dummy>,
                   adt::grid<adt::maxarray<adt::dummy, 16>, adt::dummy, 2>,
                   adt::dummy, adt::detail::nested_default_policy<adt::dummy>>,
       cell_t>,
   Args = <cxx::detail::funobj_impl<cell_t (*)(const cell_t &, unsigned long,
                                               const cell_t &, const cell_t &,
                                               const cell_t &, const cell_t &),
                                    &cell_rhs>,
           cxx::detail::funobj_impl<cell_t (*)(const cell_t &, long),
                                    &cell_get_face> &>,
   $6 = nullptr,
   CT = adt::grid<
       adt::maxarray<adt::dummy, 16>,
       adt::tree<adt::nested<
                     std::__1::shared_ptr<adt::dummy>,
                     adt::grid<adt::maxarray<adt::dummy, 16>, adt::dummy, 2>,
                     adt::dummy,
adt::detail::nested_default_policy<adt::dummy>>,
                 cell_t>,
       2>,
   BC = adt::grid<adt::maxarray<adt::dummy, 16>, adt::dummy, 1>

]: no type named 'type' in

   cxx::invoke_of<
       unsigned long &,
       adt::tree<
           adt::nested<std::__1::shared_ptr<adt::dummy>,
                       adt::grid<adt::maxarray<adt::dummy, 16>, adt::dummy, 2>,
                       adt::dummy,
adt::detail::nested_default_policy<adt::dummy>>,
           cell_t>,
       long>
}}}

which is orders of magnitude more readable.

Alternatively, a simple hierarchical output would also be good...</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>