util: Add verifier for opening braces of classes

Make sure that opening braces of classes are not declared
in the same line of the class name.

This does not work for multi-line classes.

Change-Id: I232df1a9ebd974b9f4f66e1d96d03b12513bd49f
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/39016
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
This commit is contained in:
Daniel R. Carvalho
2021-01-10 00:33:47 -03:00
committed by Daniel Carvalho
parent 469f0671d1
commit f96de41fcf

View File

@@ -456,6 +456,33 @@ class BoolCompare(LineVerifier):
"comparisons with false/False.\n")
return line
class ClassBraces(LineVerifier):
""" Check if the opening braces of classes are not on the same line of
the class name.
@todo Make this work for multi-line class declarations. e.g.,
class MultiLineClass
: public BaseClass {
"""
languages = set(('C', 'C++'))
test_name = 'class opening brace position'
opt_name = 'classbrace'
regex = re.compile(r'\A(\s*)(class\s+[A-Z].*\S)\s*\{')
def check_line(self, line, **kwargs):
return self.regex.search(line) == None
def fix_line(self, line, **kwargs):
match = self.regex.search(line)
if match:
# Group 1 is indentation, group 2 is class declaration
line = match.group(1) + match.group(2) + "\n" + \
match.group(1) + "{"
return line
def is_verifier(cls):
"""Determine if a class is a Verifier that can be instantiated"""