[cfe-users] 3.8 indentation with -fdiagnostics-show-template-tree doesn't show tree
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
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