[cfe-users] 3.8 indentation with -fdiagnostics-show-template-tree doesn't show tree

2016-05-24 Thread Larry Evans via cfe-users

I've downloaded:

~/dwnlds/llvm/3.8/prebuilt $ wget 
http://www.llvm.org/releases/3.8.0/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz.sig


untarred it, and compiled a simple program:

#include 

int main()
{
  std::vector vecf(2);
  std::vector vecd(2);
  vecf = vecd;
  return 0;
}

resulting in, as expected, an indented error message showing the tree:

  candidate function not viable: no known conversion from argument 
type to parameter type for 1st argument

  vector<
[double != float],
allocator<
  [double != float]>>
vector& operator=(vector&& __x)
^

However, when compiling a much more complex template program, there's no 
tree evident by the indentation:


/home/evansl/dwnlds/llvm/3.8/prebuilt/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++ 
-c -O0 -stdlib=libc++  -std=c++14 -ftemplate-backtrace-limit=0 
-fdiagnostics-show-template-tree -fno-elide-type 
-fmacro-backtrace-limit=0 
-I/home/evansl/prog_dev/boost/github/TBoost.Conversion 
-I/home/evansl/prog_dev/boost/sandbox/lje/non_variadic_templates 
-I/home/evansl/prog_dev/clang/libcxx/sandbox/libs/composite_storage/include 
-I../../../../../../boost/sandbox/lje/sandbox/lje 
-I/home/evansl/prog_dev/boost/releases/ro/boost_1_59_0  -DTYPE_AT_IMPL=0 
  -ftemplate-depth=100  texpressions.cpp -MMD -o 
/tmp/build/clangxx3_8_pkg/clang/libcxx/sandbox/libs/gram_stk/sandbox/texpressions.o 


In file included from texpressions.cpp:1:
./texpressions.hpp:1264:46: error: no member named 'size' in 
'texpressions::gram_defs

composite_storage::type_sequence::gram_def1::syms::varble0,
  def_ops::def_act, composite_storage::top (), 
var_ptr_bool::var_ptr_yes,


texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl0>>,

texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl1>>,

texpressions::gram_expr::op_symb  my_symbols::syms::literl0>> > > > > 
>::attr_expr  associativity::assoc_left>, 
texpressions::gram_defs

composite_storage::type_sequence::gram_def1::syms::varble0,
  def_ops::def_act, composite_storage::top (), 
var_ptr_bool::var_ptr_yes,


texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl0>>,

texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl1>>,

texpressions::gram_expr::op_symb::syms::literl0>> > > > >

>::attr_expr::op_symb  my_symbols::syms::literl0>>, 
texpressions::gram_defs

composite_storage::type_sequence::gram_def1::syms::varble0,
  def_ops::def_act, composite_storage::top (), 
var_ptr_bool::var_ptr_yes,


texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl0>>,

texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl1>>,

texpressions::gram_expr::op_symb  my_symbols::syms::literl0>> > > > > 
>::attr_expr  associativity::assoc_left>, 
texpressions::gram_defs

composite_storage::type_sequence::gram_def1::syms::varble0,
  def_ops::def_act, composite_storage::top (), 
var_ptr_bool::var_ptr_yes,


texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl0>>,

texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl1>>,

texpressions::gram_expr::op_symb::syms::literl0>> > > > >

>::attr_expr::op_symb  my_symbols::syms::literl1>>, 
texpressions::gram_defs

composite_storage::type_sequence::gram_def1::syms::varble0,
  def_ops::def_act, composite_storage::top (), 
var_ptr_bool::var_ptr_yes,


texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl0>>,

texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl1>>,

texpressions::gram_expr::op_symb::syms::literl0>> > > > >

>::attr_expr::op_symb::syms::literl0>> > >'
now_index=DefNow::now_t::size-num_rands;
 ^
./texpressions.hpp:1150:19: note: in instantiation of function template 
specialization

  'texpressions::gram_defs::gram_def1::syms::varble0,
  def_ops::def_act, composite_storage::top (), 
var_ptr_bool::var_ptr_yes,


texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl0>>,

texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl1>>,

texpressions::gram_expr::op_symb  my_symbols::syms::literl0>> > > > > 
>::read_fold_from
  iter_range::syms,

inp_out_type::syms>::out_type>, 
def_now_t,


texpressions::gram_expr::op_symb::syms::literl0>>,

texpressions::gram_exprassociativity::assoc_left>,


texpressions::gram_expr::op_symb::syms::literl1>>,

texpressions::gram_expr::op_symb  my_symbols::syms::literl0>> > >' 
requested here

  read_fold_from
  ^

As you can se

Re: [cfe-users] 3.8 indentation with -fdiagnostics-show-template-tree doesn't show tree

2016-05-24 Thread Richard Trieu via cfe-users
Hi Larry,

Right now, the template type diffing only works when there are two
templated types in the diagnostics message, and the templated types share
the same base.  It your first example, the two types are vector and
vector.

In the second error message, only one type is printed with the diagnostic
message.  This does not trigger the template type diffing.  The first
message is "no member named 'size' in <>" and the
second message is "in instantiation of function template specialization
<> requested here"

Richard

On Tue, May 24, 2016 at 9:39 AM, Larry Evans via cfe-users <
cfe-users@lists.llvm.org> wrote:

> I've downloaded:
>
> ~/dwnlds/llvm/3.8/prebuilt $ wget
> http://www.llvm.org/releases/3.8.0/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz.sig
>
> untarred it, and compiled a simple program:
>
> #include 
>
> int main()
> {
>   std::vector vecf(2);
>   std::vector vecd(2);
>   vecf = vecd;
>   return 0;
> }
>
> resulting in, as expected, an indented error message showing the tree:
>
>   candidate function not viable: no known conversion from argument
> type to parameter type for 1st argument
>   vector<
> [double != float],
> allocator<
>   [double != float]>>
> vector& operator=(vector&& __x)
> ^
>
> However, when compiling a much more complex template program, there's no
> tree evident by the indentation:
>
> /home/evansl/dwnlds/llvm/3.8/prebuilt/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++
> -c -O0 -stdlib=libc++  -std=c++14 -ftemplate-backtrace-limit=0
> -fdiagnostics-show-template-tree -fno-elide-type -fmacro-backtrace-limit=0
> -I/home/evansl/prog_dev/boost/github/TBoost.Conversion
> -I/home/evansl/prog_dev/boost/sandbox/lje/non_variadic_templates
> -I/home/evansl/prog_dev/clang/libcxx/sandbox/libs/composite_storage/include
> -I../../../../../../boost/sandbox/lje/sandbox/lje
> -I/home/evansl/prog_dev/boost/releases/ro/boost_1_59_0  -DTYPE_AT_IMPL=0
>  -ftemplate-depth=100  texpressions.cpp -MMD -o
> /tmp/build/clangxx3_8_pkg/clang/libcxx/sandbox/libs/gram_stk/sandbox/texpressions.o
>
> In file included from texpressions.cpp:1:
> ./texpressions.hpp:1264:46: error: no member named 'size' in
> 'texpressions::gram_defs
>
> composite_storage::type_sequence::gram_def1::syms::varble0,
>   def_ops::def_act, composite_storage::top (),
> var_ptr_bool::var_ptr_yes,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>>,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl1>>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>> > > > >
> >::attr_expr   associativity::assoc_left>,
> texpressions::gram_defs
>
> composite_storage::type_sequence::gram_def1::syms::varble0,
>   def_ops::def_act, composite_storage::top (),
> var_ptr_bool::var_ptr_yes,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>>,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl1>>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>> > > > >
>
> >::attr_expr::op_symb   my_symbols::syms::literl0>>,
> texpressions::gram_defs
>
> composite_storage::type_sequence::gram_def1::syms::varble0,
>   def_ops::def_act, composite_storage::top (),
> var_ptr_bool::var_ptr_yes,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>>,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl1>>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>> > > > >
> >::attr_expr   associativity::assoc_left>,
> texpressions::gram_defs
>
> composite_storage::type_sequence::gram_def1::syms::varble0,
>   def_ops::def_act, composite_storage::top (),
> var_ptr_bool::var_ptr_yes,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>>,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl1>>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>> > > > >
>
> >::attr_expr::op_symb   my_symbols::syms::literl1>>,
> texpressions::gram_defs
>
> composite_storage::type_sequence::gram_def1::syms::varble0,
>   def_ops::def_act, composite_storage::top (),
> var_ptr_bool::var_ptr_yes,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>>,
>
> texpressions::gram_expr associativity::assoc_left>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl1>>,
>
>
> texpressions::gram_expr::op_symb   my_symbols::syms::literl0>> > > > >
>
> >::attr_expr::o