Page MenuHomePhabricator

can't compile with clang
Closed, ResolvedPublic

Description

../src/lib/eolian_cxx/grammar/generator.hpp:16:29: fatal error: recursive template instantiation exceeded maximum depth of 256
struct is_eager_generator<T&> : is_eager_generator<T> {};
       ~~~~~~~~~~~~~~~~~~~~~^
../src/lib/eolian_cxx/grammar/generator.hpp:44:65: note: during template argument deduction for class template partial specialization 'is_eager_generator<type-parameter-0-0 &, void>' [with T = const
      efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::scope_tab_terminal,
      const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const char *>,
      efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const
      char *>, efl::eolian::grammar::scope_tab_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>]
template <typename G, typename Enable = typename std::enable_if<is_eager_generator<G>::value>::type>
                                                                ^
../src/lib/eolian_cxx/grammar/generator.hpp:45:3: note: in instantiation of default argument for 'as_generator<const
      efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::scope_tab_terminal,
      const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const char *>,
      efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const
      char *>, efl::eolian::grammar::scope_tab_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *> &>' required here
G as_generator(G&& g) { return g; }
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/lib/eolian_cxx/grammar/sequence.hpp:22:20: note: while substituting deduced template arguments into function template 'as_generator' [with G = const
      efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::scope_tab_terminal,
      const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const char *>,
      efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const
      char *>, efl::eolian::grammar::scope_tab_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *> &, Enable = (no value)]
   auto gen_left = as_generator(l);
                   ^
../src/lib/eolian_cxx/grammar/sequence.hpp:109:23: note: in instantiation of function template specialization
      'efl::eolian::grammar::generate_sequence<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::scope_tab_terminal,
      const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const char *>,
      efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const
      char *>, efl::eolian::grammar::scope_tab_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal, std::ostream_iterator<char,
      char, std::char_traits<char> >, efl::eolian::grammar::attributes::infinite_tuple<const std::__cxx11::basic_string<char> &>, efl::eolian::grammar::context_null>' requested here
      return grammar::generate_sequence(left, right, sink, attribute, context);
                      ^
../src/lib/eolian_cxx/grammar/attributes.hpp:160:15: note: in instantiation of function template specialization
      'efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::scope_tab_terminal,
      const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const char *>,
      efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>, efl::eolian::grammar::scope_tab_terminal>, const
      char *>, efl::eolian::grammar::scope_tab_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::scope_tab_terminal>,
      efl::eolian::grammar::string_generator_terminal>, const char *>, efl::eolian::grammar::string_generator_terminal>, const char *>,
      efl::eolian::grammar::scope_tab_terminal>::generate<std::ostream_iterator<char, char, std::char_traits<char> >, efl::eolian::grammar::attributes::infinite_tuple<const std::__cxx11::basic_string<char>
      &>, efl::eolian::grammar::context_null>' requested here
   return gen.generate(sink, attribute, context);
              ^
../src/lib/eolian_cxx/grammar/sequence.hpp:23:25: note: (skipping 247 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
   bool b = attributes::generate(gen_left, sink, attr, context);
                        ^
../src/lib/eolian_cxx/grammar/attributes.hpp:149:15: note: in instantiation of function template specialization
      'efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_definition_generator>::generate<std::ostream_iterator<char, char, std::char_traits<char> >,
      std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> >, efl::eolian::grammar::context_null>' requested here
   return gen.generate(sink, get<0>(attribute), context);
              ^
../src/lib/eolian_cxx/grammar/sequence.hpp:26:28: note: in instantiation of function template specialization
      'efl::eolian::grammar::attributes::generate<efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_definition_generator>, std::ostream_iterator<char, char, std::char_traits<char> >,
      efl::eolian::grammar::attributes::lazy_offset_tuple<6, const std::tuple<std::__cxx11::basic_string<char>, std::set<std::__cxx11::basic_string<char>, std::less<std::__cxx11::basic_string<char> >,
      std::allocator<std::__cxx11::basic_string<char> > > &, std::set<std::__cxx11::basic_string<char>, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::__cxx11::basic_string<char> > > &,
      std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &, std::vector<efl::eolian::grammar::attributes::klass_def,
      std::allocator<efl::eolian::grammar::attributes::klass_def> > &, std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &,
      std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &> >, efl::eolian::grammar::context_null>' requested here
        return attributes::generate(as_generator(r), sink
                           ^
../src/lib/eolian_cxx/grammar/sequence.hpp:109:23: note: in instantiation of function template specialization
      'efl::eolian::grammar::generate_sequence<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<const
      char *, efl::eolian::grammar::kleene_generator<efl::eolian::grammar::header_include_directive_generator> >, const char *>, const char *>,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::header_include_directive_generator> >, efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_declaration_generator> >,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_declaration_generator> >, const char *>,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::base_class_definition_generator> >, const char *>,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_definition_generator>, std::ostream_iterator<char, char, std::char_traits<char> >,
      efl::eolian::grammar::attributes::lazy_offset_tuple<1, const std::tuple<std::__cxx11::basic_string<char>, std::set<std::__cxx11::basic_string<char>, std::less<std::__cxx11::basic_string<char> >,
      std::allocator<std::__cxx11::basic_string<char> > > &, std::set<std::__cxx11::basic_string<char>, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::__cxx11::basic_string<char> > > &,
      std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &, std::vector<efl::eolian::grammar::attributes::klass_def,
      std::allocator<efl::eolian::grammar::attributes::klass_def> > &, std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &,
      std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &> >, efl::eolian::grammar::context_null>' requested here
      return grammar::generate_sequence(left, right, sink, attribute, context);
                      ^
../src/lib/eolian_cxx/grammar/header_guards.hpp:42:40: note: in instantiation of function template specialization
      'efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<const
      char *, efl::eolian::grammar::kleene_generator<efl::eolian::grammar::header_include_directive_generator> >, const char *>, const char *>,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::header_include_directive_generator> >, efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_declaration_generator> >,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_declaration_generator> >, const char *>,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::base_class_definition_generator> >, const char *>,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_definition_generator> >::generate<std::ostream_iterator<char, char, std::char_traits<char> >,
      efl::eolian::grammar::attributes::lazy_offset_tuple<1, const std::tuple<std::__cxx11::basic_string<char>, std::set<std::__cxx11::basic_string<char>, std::less<std::__cxx11::basic_string<char> >,
      std::allocator<std::__cxx11::basic_string<char> > > &, std::set<std::__cxx11::basic_string<char>, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::__cxx11::basic_string<char> > > &,
      std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &, std::vector<efl::eolian::grammar::attributes::klass_def,
      std::allocator<efl::eolian::grammar::attributes::klass_def> > &, std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &,
      std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &> >, efl::eolian::grammar::context_null>' requested here
      bool b = as_generator(generator).generate(sink, attributes::pop_front(attribute), context);
                                       ^
bin/eolian_cxx/eolian_cxx.cc:167:44: note: in instantiation of function template specialization
      'efl::eolian::grammar::header_guards_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<efl::eolian::grammar::sequence_generator<const
      char *, efl::eolian::grammar::kleene_generator<efl::eolian::grammar::header_include_directive_generator> >, const char *>, const char *>,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::header_include_directive_generator> >, efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_declaration_generator> >,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_declaration_generator> >, const char *>,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::base_class_definition_generator> >, const char *>,
      efl::eolian::grammar::kleene_generator<efl::eolian::grammar::class_definition_generator> > >::generate<std::ostream_iterator<char, char, std::char_traits<char> >,
      std::tuple<std::__cxx11::basic_string<char>, std::set<std::__cxx11::basic_string<char>, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::__cxx11::basic_string<char> > > &,
      std::set<std::__cxx11::basic_string<char>, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::__cxx11::basic_string<char> > > &,
      std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &, std::vector<efl::eolian::grammar::attributes::klass_def,
      std::allocator<efl::eolian::grammar::attributes::klass_def> > &, std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &,
      std::vector<efl::eolian::grammar::attributes::klass_def, std::allocator<efl::eolian::grammar::attributes::klass_def> > &>, efl::eolian::grammar::context_null>' requested here
        efl::eolian::grammar::class_header.generate(iterator, attributes, efl::eolian::grammar::context_null());
zmike reassigned this task from zmike to cedric.Nov 20 2017, 4:23 AM
zmike removed a project: enlightenment-git.
zmike edited subscribers, added: stefan_schmidt, felipealmeida, q66, zmike; removed: devilhorns, ManMower, stephenmhouston.
bu5hm4n triaged this task as High priority.Jun 10 2018, 11:23 AM
bu5hm4n moved this task from Backlog to primitives on the efl board.Jun 10 2018, 12:32 PM
bu5hm4n closed this task as Resolved.Jun 11 2018, 2:54 AM
bu5hm4n added a subscriber: bu5hm4n.

This works here now, reopen if still relevant :)