Problem: C indenting does not support nested namespaces that C++ 17 has.
Solution: Add check that passes double colon inside a name. (Pauli, closes
#1214)
{
char_u *p;
int has_name = FALSE;
+ int has_name_start = FALSE;
s = cin_skipcomment(s);
if (STRNCMP(s, "namespace", 9) == 0 && (s[9] == NUL || !vim_iswordc(s[9])))
}
else if (vim_iswordc(*p))
{
+ has_name_start = TRUE;
if (has_name)
return FALSE; /* word character after skipping past name */
++p;
}
+ else if (p[0] == ':' && p[1] == ':' && vim_iswordc(p[2]))
+ {
+ if (!has_name_start || has_name)
+ return FALSE;
+ /* C++ 17 nested namespace */
+ p += 3;
+ }
else
{
return FALSE;
{
111111111111111111;
}
+namespace test::cpp17
+{
+ 111111111111111111;
+}
+namespace ::incorrectcpp17
+{
+ 111111111111111111;
+}
+namespace test::incorrectcpp17::
+{
+ 111111111111111111;
+}
+namespace test:incorrectcpp17
+{
+ 111111111111111111;
+}
+namespace test:::incorrectcpp17
+{
+ 111111111111111111;
+}
namespace{
111111111111111111;
}
{
111111111111111111;
}
+namespace test::cpp17
+{
+111111111111111111;
+}
+namespace ::incorrectcpp17
+{
+ 111111111111111111;
+}
+namespace test::incorrectcpp17::
+{
+ 111111111111111111;
+}
+namespace test:incorrectcpp17
+{
+ 111111111111111111;
+}
+namespace test:::incorrectcpp17
+{
+ 111111111111111111;
+}
namespace{
111111111111111111;
}
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 92,
/**/
91,
/**/