Skip to content

Commit 427194c

Browse files
committed
Allow anonymous namespaces
Only give warnings for namespaces with actual names, in accordance with ad41375. This enables the use of anonymous namespaces without warnings. Fixes: #932
1 parent 32b68ce commit 427194c

File tree

3 files changed

+61
-3
lines changed

3 files changed

+61
-3
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Author: Pascal Kesseli, pascal.kesseli@diffblue.com
2+
3+
namespace asdf {}
4+
5+
namespace
6+
asdf
7+
{}
8+
9+
namespace
10+
asdf
11+
{}
12+
13+
namespace
14+
15+
16+
asdf
17+
{}
18+
19+
namespace xyz = my::nested::namespaces;
20+
21+
22+
23+
namespace {}
24+
25+
namespace
26+
{ }
27+
28+
namespace
29+
{
30+
}
31+
32+
namespace
33+
{
34+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CORE
2+
main.cpp
3+
4+
main\.cpp:3: Do not use namespaces \[readability/namespace\] \[4\]
5+
main\.cpp:5: Do not use namespaces \[readability/namespace\] \[4\]
6+
main\.cpp:9: Do not use namespaces \[readability/namespace\] \[4\]
7+
main\.cpp:13: Do not use namespaces \[readability/namespace\] \[4\]
8+
main\.cpp:19: Do not use namespaces \[readability/namespace\] \[4\]
9+
^EXIT=1$
10+
^SIGNAL=0$
11+
--

scripts/cpplint.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6216,9 +6216,22 @@ def CheckItemIndentationInNamespace(filename, raw_lines_no_comments, linenum,
62166216

62176217
def CheckNamespaceOrUsing(filename, clean_lines, linenum, error):
62186218
line = clean_lines.elided[linenum]
6219-
if Match(r'^namespace(\s|$)', line):
6220-
error(filename, linenum, 'readability/namespace', 4,
6221-
'Do not use namespaces')
6219+
if Match(r'^\s*namespace(\s+.*)?$', line):
6220+
num_lines=len(clean_lines.elided)
6221+
current_linenum=linenum
6222+
while current_linenum<num_lines:
6223+
current_line=clean_lines.elided[current_linenum]
6224+
if current_linenum==linenum:
6225+
is_named=Match(r'^\s*namespace\s+[^\s{]+.*$', current_line)
6226+
else:
6227+
is_named=Match(r'^\s*[^\s{]+.*$', current_line)
6228+
if is_named:
6229+
error(filename, linenum, 'readability/namespace', 4,
6230+
'Do not use namespaces')
6231+
break
6232+
if '{' in current_line:
6233+
break
6234+
current_linenum+=1
62226235
if Match(r'^using\s', line):
62236236
error(filename, linenum, 'readability/namespace', 4,
62246237
'Do not use using')

0 commit comments

Comments
 (0)