summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2020-05-21 10:23:50 +0200
committerMartin Liska <mliska@suse.cz>2020-05-21 10:23:50 +0200
commit9722b1399a555e697538aa9b0daec77127596dea (patch)
treec99c777e55c3885712855cbff6bb2d742c0edd4b /contrib
parente7c7cdc5f427281c675b7a42a1554dfdaa03e185 (diff)
Support DR entries for gcc-changelog.
* gcc-changelog/git_commit.py: Support DR entries/ * gcc-changelog/test_email.py: New test for it. * gcc-changelog/test_patches.txt: New patch for it.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ChangeLog6
-rwxr-xr-xcontrib/gcc-changelog/git_commit.py5
-rwxr-xr-xcontrib/gcc-changelog/test_email.py4
-rw-r--r--contrib/gcc-changelog/test_patches.txt27
4 files changed, 41 insertions, 1 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 83960ba1f94..d3251afb6e7 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,5 +1,11 @@
2020-05-21 Martin Liska <mliska@suse.cz>
+ * gcc-changelog/git_commit.py: Support DR entries/
+ * gcc-changelog/test_email.py: New test for it.
+ * gcc-changelog/test_patches.txt: New patch for it.
+
+2020-05-21 Martin Liska <mliska@suse.cz>
+
* mklog.py: Support DR parsing.
* test_mklog.py: New test for DR parsing.
diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
index 8c347d1c421..e22d3a2d6f0 100755
--- a/contrib/gcc-changelog/git_commit.py
+++ b/contrib/gcc-changelog/git_commit.py
@@ -145,6 +145,7 @@ author_line_regex = \
additional_author_regex = re.compile(r'^\t(?P<spaces>\ *)?(?P<name>.* <.*>)')
changelog_regex = re.compile(r'^([a-z0-9+-/]*)/ChangeLog:?')
pr_regex = re.compile(r'\tPR (?P<component>[a-z+-]+\/)?([0-9]+)$')
+dr_regex = re.compile(r'\tDR ([0-9]+)$')
star_prefix_regex = re.compile(r'\t\*(?P<spaces>\ *)(?P<content>.*)')
LINE_LIMIT = 100
@@ -297,7 +298,7 @@ class GitCommit:
continue
if (changelog_regex.match(b) or self.find_changelog_location(b)
or star_prefix_regex.match(b) or pr_regex.match(b)
- or author_line_regex.match(b)):
+ or dr_regex.match(b) or author_line_regex.match(b)):
self.changes = body[i:]
return
self.errors.append(Error('cannot find a ChangeLog location in '
@@ -350,6 +351,8 @@ class GitCommit:
continue
else:
pr_line = line.lstrip()
+ elif dr_regex.match(line):
+ pr_line = line.lstrip()
lowered_line = line.lower()
if lowered_line.startswith(CO_AUTHORED_BY_PREFIX):
diff --git a/contrib/gcc-changelog/test_email.py b/contrib/gcc-changelog/test_email.py
index ce69c64c79e..d522e6ef7e3 100755
--- a/contrib/gcc-changelog/test_email.py
+++ b/contrib/gcc-changelog/test_email.py
@@ -272,3 +272,7 @@ class TestGccChangelog(unittest.TestCase):
email = self.from_patch_glob('0001-Fortran-ProcPtr-function.patch')
assert not email.errors
assert len(email.changelog_entries[0].author_lines) == 1
+
+ def test_dr_entry(self):
+ email = self.from_patch_glob('0001-c-C-20-DR-2237.patch')
+ assert email.changelog_entries[0].prs == ['DR 2237']
diff --git a/contrib/gcc-changelog/test_patches.txt b/contrib/gcc-changelog/test_patches.txt
index d80cfc3a0c8..3445c3d9f11 100644
--- a/contrib/gcc-changelog/test_patches.txt
+++ b/contrib/gcc-changelog/test_patches.txt
@@ -2541,3 +2541,30 @@ index 00000000000..ecb0a43929f
--
2.26.2
+=== 0001-c-C-20-DR-2237.patch ===
+From 4b38d56dbac6742b038551a36ec80200313123a1 Mon Sep 17 00:00:00 2001
+From: Marek Polacek <polacek@redhat.com>
+Date: Sat, 4 Apr 2020 18:09:53 -0400
+Subject: [PATCH] c++: C++20 DR 2237, disallow simple-template-id in cdtor.
+
+This patch implements DR 2237 which says that a simple-template-id is
+no longer valid as the declarator-id of a constructor or destructor;
+see [diff.cpp17.class]#2. It is not explicitly stated but out-of-line
+destructors with a simple-template-id are also meant to be ill-formed
+now. (Out-of-line constructors like that are invalid since DR1435 I
+think.) This change only applies to C++20; it is not a DR against C++17.
+
+I'm not crazy about the diagnostic in constructors but ISTM that
+cp_parser_constructor_declarator_p shouldn't print errors.
+
+ DR 2237
+ * parser.c (cp_parser_unqualified_id): Reject simple-template-id as
+ the declarator-id of a destructor.
+---
+diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
+index a6a5d975af3..a8082d39aca 100644
+--- a/gcc/cp/parser.c
++++ b/gcc/cp/parser.c
+@@ -1 +1,2 @@
+
++