doxygen: fix build with gcc@10: for version 1.8.15 (#23680)

This commit is contained in:
Andreas Baumbach 2021-05-18 20:21:54 +02:00 committed by GitHub
parent c22a5326d8
commit b41ee03475
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1,30 @@
From 788440279e0f0fdc7dce27ec266d7d5c11bcda1c Mon Sep 17 00:00:00 2001
From: Matthew Hatch <mrhatch97@gmail.com>
Date: Thu, 9 May 2019 01:05:43 -0700
Subject: [PATCH] Fixed C++17-namespace assignment bug
Added scope save and restore before and after namespace parsing
---
src/scanner.l | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/scanner.l b/src/scanner.l
index d3902b38d..5395e499c 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -3941,6 +3941,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
else
{
current->endBodyLine = yyLineNr;
+ Entry * original_root = current_root; // save root this namespace is in
if (current->section == Entry::NAMESPACE_SEC && current->type == "namespace")
{
int split_point;
@@ -4005,6 +4006,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
)
{ // namespaces and interfaces and java classes ends with a closing bracket without semicolon
current->reset();
+ current_root = original_root; // restore scope from before namespace descent
initEntry();
memspecEntry = 0;
BEGIN( FindMembers ) ;

View File

@ -78,6 +78,10 @@ def determine_variants(cls, exes, version_str):
# Also - https://github.com/doxygen/doxygen/pull/6588 # Also - https://github.com/doxygen/doxygen/pull/6588
patch('shared_ptr.patch', when='@1.8.14') patch('shared_ptr.patch', when='@1.8.14')
# Support C++17's nested namespaces a::b::c. For details about this patch, see
# https://github.com/doxygen/doxygen/pull/6977/commits/788440279e0f0fdc7dce27ec266d7d5c11bcda1c
patch('cpp17_namespaces.patch', when='@1.8.15')
# Workaround for gcc getting stuck in an infinite loop # Workaround for gcc getting stuck in an infinite loop
patch('gcc-partial-inlining-bug.patch', when='@1.8.20: %gcc@7') patch('gcc-partial-inlining-bug.patch', when='@1.8.20: %gcc@7')