From 0d189e733439a5de1af3be530587b6cd5567504f Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Sat, 23 Apr 2016 14:22:24 +0200 Subject: [PATCH 1/3] Add unit test for using literals namespaces --- cpplint_unittest.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cpplint_unittest.py b/cpplint_unittest.py index 9f54a30..11bfa02 100755 --- a/cpplint_unittest.py +++ b/cpplint_unittest.py @@ -2927,6 +2927,10 @@ def DoTest(self, lines): DoTest(self, ['', '', '', 'using namespace foo;']) DoTest(self, ['// hello', 'using namespace foo;']) + def testUsingLiteralsNamespaces(self): + self.TestLint('using namespace std::literals;', '') + self.TestLint('using namespace std::literals::chrono_literals;', '') + def testNewlineAtEOF(self): def DoTest(self, data, is_missing_eof): error_collector = ErrorCollector(self.assertTrue) From c4d3e98088edc6c2e0d166481bc712a9c919d2b2 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Sat, 23 Apr 2016 14:23:46 +0200 Subject: [PATCH 2/3] Allow using literals namespaces --- cpplint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpplint.py b/cpplint.py index 3306d73..55c08a1 100755 --- a/cpplint.py +++ b/cpplint.py @@ -5045,7 +5045,7 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension, 'Did you mean "memset(%s, 0, %s)"?' % (match.group(1), match.group(2))) - if Search(r'\busing namespace\b', line): + if Search(r'\busing namespace\b', line) and not Search(r'\bliterals\b', line): error(filename, linenum, 'build/namespaces', 5, 'Do not use namespace using-directives. ' 'Use using-declarations instead.') From 354929a295b0ce326ae31d791bbad9fcaf6cb4d2 Mon Sep 17 00:00:00 2001 From: Thibault Kruse Date: Mon, 9 May 2016 15:14:59 +0900 Subject: [PATCH 3/3] Allow using literals namespaces --- cpplint.py | 14 ++++++++++---- cpplint_unittest.py | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/cpplint.py b/cpplint.py index 55c08a1..765e1d9 100755 --- a/cpplint.py +++ b/cpplint.py @@ -246,6 +246,7 @@ 'build/include_alpha', 'build/include_order', 'build/include_what_you_use', + 'build/namespaces_literals', 'build/namespaces', 'build/printf_format', 'build/storage_class', @@ -5045,10 +5046,15 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension, 'Did you mean "memset(%s, 0, %s)"?' % (match.group(1), match.group(2))) - if Search(r'\busing namespace\b', line) and not Search(r'\bliterals\b', line): - error(filename, linenum, 'build/namespaces', 5, - 'Do not use namespace using-directives. ' - 'Use using-declarations instead.') + if Search(r'\busing namespace\b', line): + if Search(r'\bliterals\b', line): + error(filename, linenum, 'build/namespaces_literals', 5, + 'Do not use namespace using-directives. ' + 'Use using-declarations instead.') + else: + error(filename, linenum, 'build/namespaces', 5, + 'Do not use namespace using-directives. ' + 'Use using-declarations instead.') # Detect variable-length arrays. match = Match(r'\s*(.+::)?(\w+) [a-z]\w*\[(.+)];', line) diff --git a/cpplint_unittest.py b/cpplint_unittest.py index 11bfa02..228360d 100755 --- a/cpplint_unittest.py +++ b/cpplint_unittest.py @@ -2928,8 +2928,8 @@ def DoTest(self, lines): DoTest(self, ['// hello', 'using namespace foo;']) def testUsingLiteralsNamespaces(self): - self.TestLint('using namespace std::literals;', '') - self.TestLint('using namespace std::literals::chrono_literals;', '') + self.TestLint('using namespace std::literals;', 'Do not use namespace using-directives. Use using-declarations instead. [build/namespaces_literals] [5]') + self.TestLint('using namespace std::literals::chrono_literals;', 'Do not use namespace using-directives. Use using-declarations instead. [build/namespaces_literals] [5]') def testNewlineAtEOF(self): def DoTest(self, data, is_missing_eof):