]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gcc-changelog: update error message location
authorMartin Liska <mliska@suse.cz>
Mon, 18 Oct 2021 08:44:11 +0000 (10:44 +0200)
committerMartin Liska <mliska@suse.cz>
Mon, 18 Oct 2021 09:07:14 +0000 (11:07 +0200)
contrib/ChangeLog:

* gcc-changelog/git_commit.py: Update location of
'bad parentheses wrapping'.
* gcc-changelog/test_email.py: Test it.

contrib/gcc-changelog/git_commit.py
contrib/gcc-changelog/test_email.py

index f26dc3b413573783b1c74accea5c5309f7287ef7..cf29f7619647e03f42de580cb63ffffb99182bf4 100755 (executable)
@@ -217,7 +217,7 @@ class ChangeLogEntry:
         self.lines = []
         self.files = []
         self.file_patterns = []
-        self.opened_parentheses = 0
+        self.parentheses_stack = []
 
     def parse_file_names(self):
         # Whether the content currently processed is between a star prefix the
@@ -551,7 +551,7 @@ class GitCommit:
                     m = star_prefix_regex.match(line)
                     if m:
                         if (len(m.group('spaces')) != 1 and
-                                last_entry.opened_parentheses == 0):
+                                not last_entry.parentheses_stack):
                             msg = 'one space should follow asterisk'
                             self.errors.append(Error(msg, line))
                         else:
@@ -576,13 +576,13 @@ class GitCommit:
     def process_parentheses(self, last_entry, line):
         for c in line:
             if c == '(':
-                last_entry.opened_parentheses += 1
+                last_entry.parentheses_stack.append(line)
             elif c == ')':
-                if last_entry.opened_parentheses == 0:
+                if not last_entry.parentheses_stack:
                     msg = 'bad wrapping of parenthesis'
                     self.errors.append(Error(msg, line))
                 else:
-                    last_entry.opened_parentheses -= 1
+                    del last_entry.parentheses_stack[-1]
 
     def parse_file_names(self):
         for entry in self.changelog_entries:
@@ -608,9 +608,9 @@ class GitCommit:
 
     def check_for_broken_parentheses(self):
         for entry in self.changelog_entries:
-            if entry.opened_parentheses != 0:
+            if entry.parentheses_stack:
                 msg = 'bad parentheses wrapping'
-                self.errors.append(Error(msg, entry.lines[0]))
+                self.errors.append(Error(msg, entry.parentheses_stack[-1]))
 
     def get_file_changelog_location(self, changelog_file):
         for file in self.info.modified_files:
index dae7c27c707944375e355c8fbc516d36595fc729..a4796dbbe94fbc0d51fd75d5e1fcc7e99ae3340f 100755 (executable)
@@ -415,6 +415,7 @@ class TestGccChangelog(unittest.TestCase):
     def test_multiline_bad_parentheses(self):
         email = self.from_patch_glob('0002-Wrong-macro-changelog.patch')
         assert email.errors[0].message == 'bad parentheses wrapping'
+        assert email.errors[0].line == '       * config/i386/i386.md (*fix_trunc<mode>_i387_1,'
 
     def test_changelog_removal(self):
         email = self.from_patch_glob('0001-ChangeLog-removal.patch')