Author: dsanders Date: Fri Aug 30 13:47:02 2019 New Revision: 370527 URL: http://llvm.org/viewvc/llvm-project?rev=370527&view=rev Log: Make add_new_check.py's insertion of registerCheck<> match the sort order
Summary: Following on from review comments in D65919 about the ordering of the registerCheck<> calls. Sort based on the check name which might be on the line after the registerCheck<> Reviewers: aaron.ballman Subscribers: cfe-commits, llvm-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D66505 Modified: clang-tools-extra/trunk/clang-tidy/add_new_check.py Modified: clang-tools-extra/trunk/clang-tidy/add_new_check.py URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/add_new_check.py?rev=370527&r1=370526&r2=370527&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/add_new_check.py (original) +++ clang-tools-extra/trunk/clang-tidy/add_new_check.py Fri Aug 30 13:47:02 2019 @@ -165,31 +165,50 @@ def adapt_module(module_path, module, ch header_added = False header_found = False check_added = False + check_fq_name = module + '-' + check_name check_decl = (' CheckFactories.registerCheck<' + check_name_camel + - '>(\n "' + module + '-' + check_name + '");\n') + '>(\n "' + check_fq_name + '");\n') - for line in lines: - if not header_added: - match = re.search('#include "(.*)"', line) - if match: - header_found = True - if match.group(1) > check_name_camel: + lines = iter(lines) + try: + while True: + line = lines.next() + if not header_added: + match = re.search('#include "(.*)"', line) + if match: + header_found = True + if match.group(1) > check_name_camel: + header_added = True + f.write('#include "' + check_name_camel + '.h"\n') + elif header_found: header_added = True f.write('#include "' + check_name_camel + '.h"\n') - elif header_found: - header_added = True - f.write('#include "' + check_name_camel + '.h"\n') - if not check_added: - if line.strip() == '}': - check_added = True - f.write(check_decl) - else: - match = re.search('registerCheck<(.*)>', line) - if match and match.group(1) > check_name_camel: + if not check_added: + if line.strip() == '}': check_added = True f.write(check_decl) - f.write(line) + else: + match = re.search('registerCheck<(.*)> *\( *(?:"([^"]*)")?', line) + prev_line = None + if match: + current_check_name = match.group(2) + if current_check_name is None: + # If we didn't find the check name on this line, look on the + # next one. + prev_line = line + line = lines.next() + match = re.search(' *"([^"]*)"', line) + if match: + current_check_name = match.group(1) + if current_check_name > check_fq_name: + check_added = True + f.write(check_decl) + if prev_line: + f.write(prev_line) + f.write(line) + except StopIteration: + pass # Adds a release notes entry. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits