diff --git a/src/libs/3rdparty/cplusplus/Keywords.cpp b/src/libs/3rdparty/cplusplus/Keywords.cpp index 832639f4b0ed530515c7ffb9529ba2a522e9dae0..003566c414e24a0d367ec55e00e93ed0b55e9f15 100644 --- a/src/libs/3rdparty/cplusplus/Keywords.cpp +++ b/src/libs/3rdparty/cplusplus/Keywords.cpp @@ -945,7 +945,7 @@ static inline int classify8(const char *s, bool q, bool x) { return T_IDENTIFIER; } -static inline int classify9(const char *s, bool q, bool) { +static inline int classify9(const char *s, bool q, bool x) { if (s[0] == '_') { if (s[1] == '_') { if (s[2] == 'c') { @@ -965,6 +965,25 @@ static inline int classify9(const char *s, bool q, bool) { } } } + else if (x && s[0] == 'c') { + if (s[1] == 'o') { + if (s[2] == 'n') { + if (s[3] == 's') { + if (s[4] == 't') { + if (s[5] == 'e') { + if (s[6] == 'x') { + if (s[7] == 'p') { + if (s[8] == 'r') { + return T_CONSTEXPR; + } + } + } + } + } + } + } + } + } else if (s[0] == 'n') { if (s[1] == 'a') { if (s[2] == 'm') { diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index d0e9dc7c60e126fc242dfb1fbc607b66dcd78b0f..f89596cf08df12aed708796a81b48ca54ce666dc 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -3413,6 +3413,10 @@ bool Parser::lookAtStorageClassSpecifier() const case T_MUTABLE: case T_TYPEDEF: return true; + case T_CONSTEXPR: + if (_cxx0xEnabled) + return true; + // fall-through default: return false; } diff --git a/src/libs/3rdparty/cplusplus/Token.h b/src/libs/3rdparty/cplusplus/Token.h index a55b88572646dfda1bc2cbc1e6b409cb61136c47..88de833e318a19d78c05f28be0199e272dac7fa2 100644 --- a/src/libs/3rdparty/cplusplus/Token.h +++ b/src/libs/3rdparty/cplusplus/Token.h @@ -111,6 +111,7 @@ enum Kind { T_CLASS, T_CONST, T_CONST_CAST, + T_CONSTEXPR, T_CONTINUE, T_DEFAULT, T_DELETE,