From 63111eaec5cb758d99d68a4e9ec827b79121544b Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 23 Aug 2015 15:19:41 -0700 Subject: [PATCH 08/10] Fix build with clang 3.7 Nullable is a language extension in clang 3.7 (indicating whether or not a pointer can be null). http://clang.llvm.org/docs/AttributeReference.html#nullable Using it as a class name breaks building with this compiler Upstream-Status: Backport This is backport of https://codereview.qt-project.org/#/c/121545/ /mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.4.2+gitAUTOINC+2cb17c1fb9-r0/git/src/tools/qlalr/lalr.cpp:241:1: error: declaration of anonymous struct must be a definition struct _Nullable: public std::unary_function ^ /mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.4.2+gitAUTOINC+2cb17c1fb9-r0/git/src/tools/qlalr/lalr.cpp:241:56: error: expected unqualified-id struct _Nullable: public std::unary_function ^ /mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.4.2+gitAUTOINC+2cb17c1fb9-r0/git/src/tools/qlalr/lalr.cpp:303:98: error: expected expression NameList::iterator nn = std::find_if (rule->rhs.begin (), rule->rhs.end (), std::not1 (_Nullable (this))); ^ /mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.4.2+gitAUTOINC+2cb17c1fb9-r0/git/src/tools/qlalr/lalr.cpp:638:107: error: expected expression NameList::iterator first_not_nullable = std::find_if (dot, rule->rhs.end (), std::not1 (_Nullable (this))); ^ 4 errors generated. Signed-off-by: Khem Raj --- src/tools/qlalr/lalr.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tools/qlalr/lalr.cpp b/src/tools/qlalr/lalr.cpp index 3d0d5de..3d780cd 100644 --- a/src/tools/qlalr/lalr.cpp +++ b/src/tools/qlalr/lalr.cpp @@ -238,11 +238,11 @@ void Grammar::buildExtendedGrammar () non_terminals.insert (accept_symbol); } -struct _Nullable: public std::unary_function +struct Nullable: public std::unary_function { Automaton *_M_automaton; - _Nullable (Automaton *aut): + Nullable (Automaton *aut): _M_automaton (aut) {} bool operator () (Name name) const @@ -300,7 +300,7 @@ void Automaton::buildNullables () for (RulePointer rule = _M_grammar->rules.begin (); rule != _M_grammar->rules.end (); ++rule) { - NameList::iterator nn = std::find_if (rule->rhs.begin (), rule->rhs.end (), std::not1 (_Nullable (this))); + NameList::iterator nn = std::find_if (rule->rhs.begin (), rule->rhs.end (), std::not1 (Nullable (this))); if (nn == rule->rhs.end ()) changed |= nullables.insert (rule->lhs).second; @@ -635,7 +635,7 @@ void Automaton::buildIncludesDigraph () if (! _M_grammar->isNonTerminal (*A)) continue; - NameList::iterator first_not_nullable = std::find_if (dot, rule->rhs.end (), std::not1 (_Nullable (this))); + NameList::iterator first_not_nullable = std::find_if (dot, rule->rhs.end (), std::not1 (Nullable (this))); if (first_not_nullable != rule->rhs.end ()) continue; -- 2.5.0