0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.0.0092

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)
This commit is contained in:
Bram Moolenaar 2016-11-17 21:30:27 +01:00
parent 9f0e423c28
commit ca8b8d6956
4 changed files with 51 additions and 0 deletions

View File

@ -5762,6 +5762,7 @@ cin_is_cpp_namespace(char_u *s)
{
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])))
@ -5780,10 +5781,18 @@ cin_is_cpp_namespace(char_u *s)
}
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;

View File

@ -1932,6 +1932,26 @@ namespace test
{
111111111111111111;
}
namespace test::cpp17
{
111111111111111111;
}
namespace ::incorrectcpp17
{
111111111111111111;
}
namespace test::incorrectcpp17::
{
111111111111111111;
}
namespace test:incorrectcpp17
{
111111111111111111;
}
namespace test:::incorrectcpp17
{
111111111111111111;
}
namespace{
111111111111111111;
}

View File

@ -1730,6 +1730,26 @@ namespace test
{
111111111111111111;
}
namespace test::cpp17
{
111111111111111111;
}
namespace ::incorrectcpp17
{
111111111111111111;
}
namespace test::incorrectcpp17::
{
111111111111111111;
}
namespace test:incorrectcpp17
{
111111111111111111;
}
namespace test:::incorrectcpp17
{
111111111111111111;
}
namespace{
111111111111111111;
}

View File

@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
92,
/**/
91,
/**/