Skip to content

Commit 37f12d9

Browse files
authored
Merge pull request #3167 from masatake/c++-github-issue-3166
C++: fill end: properly even when the namespace is nested too deep
2 parents 778df8f + cd304e4 commit 37f12d9

File tree

4 files changed

+65
-2
lines changed

4 files changed

+65
-2
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
--sort=no
2+
--fields=+e
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
DEAMER_LANGUAGE_DATASTRUCTURE_DEFINITION_OBJECT_MAIN_THREAT_THREAT_ANALYZER_DEAMER_LEXICON_TYPE_H input.cxx /^#define DEAMER_LANGUAGE_DATASTRUCTURE_DEFINITION_OBJECT_MAIN_THREAT_THREAT_ANALYZER_DEAMER_LEXIC/;" d file: end:24
2+
deamer input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n file: end:42
3+
language input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer file: end:42
4+
type input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language file: end:42
5+
definition input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type file: end:42
6+
object input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type::definition file: end:42
7+
main input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type::definition::object file: end:42
8+
threat input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type::definition::object::main file: end:42
9+
deamer input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type::definition::object::main::threat file: end:42
10+
lexicon input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type::definition::object::main::threat::deamer file: end:42
11+
Type input.cxx /^ enum class Type$/;" g namespace:deamer::language::type::definition::object::main::threat::deamer::lexicon file: end:41
12+
Unknown input.cxx /^ Unknown = 0,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
13+
UnusedTerminal input.cxx /^ UnusedTerminal = 1,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
14+
DeletedTerminalReferencedInGrammar input.cxx /^ DeletedTerminalReferencedInGrammar = 2,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
15+
CrashTerminalReferencedInGrammar input.cxx /^ CrashTerminalReferencedInGrammar = 3,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
16+
TerminalIsBaseSetOfLaterTerminal input.cxx /^ TerminalIsBaseSetOfLaterTerminal = 4,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
17+
NonStandardNamingConvention input.cxx /^ NonStandardNamingConvention = 5,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Taken from theDeamerProject/Deamer/include/Deamer/Language/Type/Definition/Object/Main/Threat/Threat/Analyzer/Deamer/Lexicon/Type.h
2+
// of https://github.com/Deruago/theDeamerProject
3+
/*
4+
* This program is free software; you can redistribute it and/or
5+
* modify it under the terms of the GNU General Public License
6+
* as published by the Free Software Foundation; either version 3
7+
* of the License, or (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with this program; if not, write to the Free Software Foundation,
16+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17+
*/
18+
/*
19+
* Part of the DeamerProject.
20+
* For more information go to: https://github.com/Deruago/theDeamerProject
21+
*/
22+
23+
#ifndef DEAMER_LANGUAGE_DATASTRUCTURE_DEFINITION_OBJECT_MAIN_THREAT_THREAT_ANALYZER_DEAMER_LEXICON_TYPE_H
24+
#define DEAMER_LANGUAGE_DATASTRUCTURE_DEFINITION_OBJECT_MAIN_THREAT_THREAT_ANALYZER_DEAMER_LEXICON_TYPE_H
25+
26+
namespace deamer::language::type::definition::object::main::threat::deamer::lexicon
27+
{
28+
/*! \enum Type
29+
*
30+
* \brief All lexicon threats
31+
*/
32+
enum class Type
33+
{
34+
Unknown = 0,
35+
36+
UnusedTerminal = 1,
37+
DeletedTerminalReferencedInGrammar = 2,
38+
CrashTerminalReferencedInGrammar = 3,
39+
TerminalIsBaseSetOfLaterTerminal = 4,
40+
NonStandardNamingConvention = 5,
41+
};
42+
}
43+
44+
#endif // DEAMER_LANGUAGE_DATASTRUCTURE_DEFINITION_OBJECT_MAIN_THREAT_THREAT_ANALYZER_DEAMER_LEXICON_TYPE_H

parsers/cxx/cxx_parser_namespace.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include "read.h"
2424

2525

26-
#define MAX_NESTED_NAMESPACES 8
26+
#define MAX_NESTED_NAMESPACES 16
2727

2828

2929
bool cxxParserParseNamespace(void)
@@ -324,7 +324,7 @@ bool cxxParserParseNamespace(void)
324324
cxxScopePop();
325325
iScopeCount--;
326326

327-
if(aCorkQueueIndices[iScopeCount] > CORK_NIL)
327+
if(iScopeCount < MAX_NESTED_NAMESPACES && aCorkQueueIndices[iScopeCount] > CORK_NIL)
328328
cxxParserMarkEndLineForTagInCorkQueue(aCorkQueueIndices[iScopeCount]);
329329
}
330330

0 commit comments

Comments
 (0)