Skip to content

Commit

Permalink
Merge pull request #3167 from masatake/c++-github-issue-3166
Browse files Browse the repository at this point in the history
C++: fill end: properly even when the namespace is nested too deep
  • Loading branch information
masatake authored Sep 25, 2021
2 parents 778df8f + cd304e4 commit 37f12d9
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 2 deletions.
2 changes: 2 additions & 0 deletions Units/parser-cxx.r/bug-issue-3166.d/args.ctags
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
--sort=no
--fields=+e
17 changes: 17 additions & 0 deletions Units/parser-cxx.r/bug-issue-3166.d/expected.tags
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
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
deamer input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n file: end:42
language input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer file: end:42
type input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language file: end:42
definition input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type file: end:42
object input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type::definition file: end:42
main input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type::definition::object file: end:42
threat input.cxx /^namespace deamer::language::type::definition::object::main::threat::deamer::lexicon$/;" n namespace:deamer::language::type::definition::object::main file: end:42
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
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
Type input.cxx /^ enum class Type$/;" g namespace:deamer::language::type::definition::object::main::threat::deamer::lexicon file: end:41
Unknown input.cxx /^ Unknown = 0,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
UnusedTerminal input.cxx /^ UnusedTerminal = 1,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
DeletedTerminalReferencedInGrammar input.cxx /^ DeletedTerminalReferencedInGrammar = 2,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
CrashTerminalReferencedInGrammar input.cxx /^ CrashTerminalReferencedInGrammar = 3,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
TerminalIsBaseSetOfLaterTerminal input.cxx /^ TerminalIsBaseSetOfLaterTerminal = 4,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
NonStandardNamingConvention input.cxx /^ NonStandardNamingConvention = 5,$/;" e enum:deamer::language::type::definition::object::main::threat::deamer::lexicon::Type file:
44 changes: 44 additions & 0 deletions Units/parser-cxx.r/bug-issue-3166.d/input.cxx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Taken from theDeamerProject/Deamer/include/Deamer/Language/Type/Definition/Object/Main/Threat/Threat/Analyzer/Deamer/Lexicon/Type.h
// of https://github.com/Deruago/theDeamerProject
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/*
* Part of the DeamerProject.
* For more information go to: https://github.com/Deruago/theDeamerProject
*/

#ifndef DEAMER_LANGUAGE_DATASTRUCTURE_DEFINITION_OBJECT_MAIN_THREAT_THREAT_ANALYZER_DEAMER_LEXICON_TYPE_H
#define DEAMER_LANGUAGE_DATASTRUCTURE_DEFINITION_OBJECT_MAIN_THREAT_THREAT_ANALYZER_DEAMER_LEXICON_TYPE_H

namespace deamer::language::type::definition::object::main::threat::deamer::lexicon
{
/*! \enum Type
*
* \brief All lexicon threats
*/
enum class Type
{
Unknown = 0,

UnusedTerminal = 1,
DeletedTerminalReferencedInGrammar = 2,
CrashTerminalReferencedInGrammar = 3,
TerminalIsBaseSetOfLaterTerminal = 4,
NonStandardNamingConvention = 5,
};
}

#endif // DEAMER_LANGUAGE_DATASTRUCTURE_DEFINITION_OBJECT_MAIN_THREAT_THREAT_ANALYZER_DEAMER_LEXICON_TYPE_H
4 changes: 2 additions & 2 deletions parsers/cxx/cxx_parser_namespace.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#include "read.h"


#define MAX_NESTED_NAMESPACES 8
#define MAX_NESTED_NAMESPACES 16


bool cxxParserParseNamespace(void)
Expand Down Expand Up @@ -324,7 +324,7 @@ bool cxxParserParseNamespace(void)
cxxScopePop();
iScopeCount--;

if(aCorkQueueIndices[iScopeCount] > CORK_NIL)
if(iScopeCount < MAX_NESTED_NAMESPACES && aCorkQueueIndices[iScopeCount] > CORK_NIL)
cxxParserMarkEndLineForTagInCorkQueue(aCorkQueueIndices[iScopeCount]);
}

Expand Down

0 comments on commit 37f12d9

Please sign in to comment.