Skip to content

Commit d80b10e

Browse files
author
Daniel Kroening
authored
Merge pull request #1031 from pkesseli/cpplint/allow-anonymous-namespaces
Allow anonymous namespaces
2 parents 71e973c + 427194c commit d80b10e

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, [email protected]
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)