Merge pull request #5863 from ZyX-I/more-clint-checks

More clint brace checks
This commit is contained in:
James McCoy 2017-01-10 11:43:14 -05:00 committed by GitHub
commit 6095c5df45

View File

@ -2564,8 +2564,7 @@ def CheckBraces(filename, clean_lines, linenum, error):
line = clean_lines.elided[linenum] # get rid of comments and strings
if not (filename.endswith('.c') or filename.endswith('.h')):
if Match(r'\s*{\s*$', line):
if Match(r'\s+{\s*$', line):
# We allow an open brace to start a line in the case where someone
# is using braces in a block to explicitly create a new scope, which
# is commonly used to control the lifetime of stack-allocated
@ -2581,6 +2580,28 @@ def CheckBraces(filename, clean_lines, linenum, error):
'{ should almost always be at the end'
' of the previous line')
# Brace must appear after function signature, but on the *next* line
if Match(r'^(?:\w+(?: ?\*+)? )+\w+\(', line):
pos = line.find('(')
(endline, end_linenum, endpos) = CloseExpression(
clean_lines, linenum, pos)
if endline.endswith('{'):
error(filename, end_linenum, 'readability/braces', 5,
'Brace starting function body must be placed on its own line')
else:
func_start_linenum = end_linenum + 1
while not clean_lines.lines[func_start_linenum] == '{':
if not Match(r'^(?:\s*\b(?:FUNC_ATTR|REAL_FATTR)_\w+\b(?:\(\d+(, \d+)*\))?)+$',
clean_lines.lines[func_start_linenum]):
if clean_lines.lines[func_start_linenum].endswith('{'):
error(filename, func_start_linenum,
'readability/braces', 5,
'Brace starting function body must be placed '
'after the function signature')
break
else:
func_start_linenum += 1
# An else clause should be on the same line as the preceding closing brace.
# If there is no preceding closing brace, there should be one.
if Match(r'\s*else\s*', line):