From 9722b1399a555e697538aa9b0daec77127596dea Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Thu, 21 May 2020 10:23:50 +0200 Subject: [PATCH] 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. --- contrib/ChangeLog | 6 ++++++ contrib/gcc-changelog/git_commit.py | 5 ++++- contrib/gcc-changelog/test_email.py | 4 ++++ contrib/gcc-changelog/test_patches.txt | 27 ++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 83960ba1f94..d3251afb6e7 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,9 @@ +2020-05-21 Martin Liska + + * 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 * mklog.py: Support 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\ *)?(?P.* <.*>)') changelog_regex = re.compile(r'^([a-z0-9+-/]*)/ChangeLog:?') pr_regex = re.compile(r'\tPR (?P[a-z+-]+\/)?([0-9]+)$') +dr_regex = re.compile(r'\tDR ([0-9]+)$') star_prefix_regex = re.compile(r'\t\*(?P\ *)(?P.*)') 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 +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 @@ + ++