forked from aniani/vim
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:
parent
9f0e423c28
commit
ca8b8d6956
@ -5762,6 +5762,7 @@ cin_is_cpp_namespace(char_u *s)
|
|||||||
{
|
{
|
||||||
char_u *p;
|
char_u *p;
|
||||||
int has_name = FALSE;
|
int has_name = FALSE;
|
||||||
|
int has_name_start = FALSE;
|
||||||
|
|
||||||
s = cin_skipcomment(s);
|
s = cin_skipcomment(s);
|
||||||
if (STRNCMP(s, "namespace", 9) == 0 && (s[9] == NUL || !vim_iswordc(s[9])))
|
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))
|
else if (vim_iswordc(*p))
|
||||||
{
|
{
|
||||||
|
has_name_start = TRUE;
|
||||||
if (has_name)
|
if (has_name)
|
||||||
return FALSE; /* word character after skipping past name */
|
return FALSE; /* word character after skipping past name */
|
||||||
++p;
|
++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
|
else
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1932,6 +1932,26 @@ namespace test
|
|||||||
{
|
{
|
||||||
111111111111111111;
|
111111111111111111;
|
||||||
}
|
}
|
||||||
|
namespace test::cpp17
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
|
namespace ::incorrectcpp17
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
|
namespace test::incorrectcpp17::
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
|
namespace test:incorrectcpp17
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
|
namespace test:::incorrectcpp17
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
namespace{
|
namespace{
|
||||||
111111111111111111;
|
111111111111111111;
|
||||||
}
|
}
|
||||||
|
@ -1730,6 +1730,26 @@ namespace test
|
|||||||
{
|
{
|
||||||
111111111111111111;
|
111111111111111111;
|
||||||
}
|
}
|
||||||
|
namespace test::cpp17
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
|
namespace ::incorrectcpp17
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
|
namespace test::incorrectcpp17::
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
|
namespace test:incorrectcpp17
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
|
namespace test:::incorrectcpp17
|
||||||
|
{
|
||||||
|
111111111111111111;
|
||||||
|
}
|
||||||
namespace{
|
namespace{
|
||||||
111111111111111111;
|
111111111111111111;
|
||||||
}
|
}
|
||||||
|
@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
92,
|
||||||
/**/
|
/**/
|
||||||
91,
|
91,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user