@@ -4630,6 +4630,7 @@ NONLopt [^\n]*
46304630 std::shared_ptr<Entry> original_root = yyextra->current_root; // save root this namespace is in
46314631 if (yyextra->current->section.isNamespace() && yyextra->current->type == "namespace")
46324632 {
4633+ //printf("namespace %s\n",qPrint(yyextra->current->name));
46334634 int split_point;
46344635 // save documentation values
46354636 QCString doc = yyextra->current->doc;
@@ -4659,6 +4660,11 @@ NONLopt [^\n]*
46594660 yyextra->current->program.str(std::string());
46604661 new_current->name = yyextra->current->name.mid(split_point + 2);
46614662 yyextra->current->name = yyextra->current->name.left(split_point);
4663+ if (yyextra->current->name.startsWith("inline ")) // C++20 style nested inline namespace syntax
4664+ {
4665+ yyextra->current->name = yyextra->current->name.mid(7);
4666+ yyextra->current->spec.setInline(true);
4667+ }
46624668 if (!yyextra->current_root->name.isEmpty()) yyextra->current->name.prepend(yyextra->current_root->name+"::");
46634669
46644670 yyextra->current_root->moveToSubEntryAndKeep(yyextra->current);
@@ -4678,6 +4684,11 @@ NONLopt [^\n]*
46784684 yyextra->current->rqli = rqli;
46794685 }
46804686 QCString &cn = yyextra->current->name;
4687+ if (cn.startsWith("inline ")) // C++20 style nested inline namespace syntax
4688+ {
4689+ cn = cn.mid(7);
4690+ yyextra->current->spec.setInline(true);
4691+ }
46814692 QCString rn = yyextra->current_root->name;
46824693 //printf("cn='%s' rn='%s' yyextra->isTypedef=%d\n",qPrint(cn),qPrint(rn),yyextra->isTypedef);
46834694 if (!cn.isEmpty() && !rn.isEmpty())
@@ -6478,6 +6489,19 @@ NONLopt [^\n]*
64786489 }
64796490 BEGIN( ClassVar );
64806491 }
6492+ <CompoundName>({ID}{BN}*"::"{BN}*)+("inline"{BN}+({ID}{BN}*"::"{BN}*)*)+{ID} { // C++20 style nested inline namespace syntax
6493+ if (yyextra->current->section.isNamespace())
6494+ {
6495+ yyextra->current->name = QCString(yytext).simplifyWhiteSpace();
6496+ storeClangId(yyscanner,yyextra->current->name.data());
6497+ lineCount(yyscanner);
6498+ BEGIN( ClassVar );
6499+ }
6500+ else
6501+ {
6502+ REJECT;
6503+ }
6504+ }
64816505<CompoundName>{CSSCOPENAME} { // C# style scope
64826506 yyextra->current->name = substitute(yytext,".","::");
64836507 lineCount(yyscanner);
0 commit comments