Skip to content

Alias via using within nested namespace results in incorrect symbol name. #11281

@cantonios

Description

@cantonios

Describe the bug

namespace Eigen {
namespace indexing {
using Eigen::placeholders::all;  // <--- Doxygen call this symbol Eigen::indexing::placeholders::all
}
}

When writing doxytags, the above symbol is recorded as:

<compound kind="namespace">
    <name>Eigen::indexing</name>
    <member kind="variable" static="yes">
        <name>placeholders::all</name>
    </member>
</compound>

Using the doxytags to link into the documentation then fails to find the symbol Eigen::indexing::all.

To Reproduce

doxytags.tar.gz

Expected behavior

The symbol should not include placeholders::.

Version
Compiled from master commit 163ed03

Potential Fix

I'm wondering if this should be

- int i=root->name.find("::");
+ int i=root->name.findRev("::");

This corrects the symbol names and allows all doxygen's tests to continue passing.


Updated example:
doxytags.tar.gz

$ doxygen supported.cfg 1> supported.log
$ doxygen unsupported.cfg 1> unsupported.log
unsupported/doc/unsupported.md:3: warning: unable to resolve reference to 'Eigen::indexing::all' for \ref command
unsupported/doc/unsupported.md:3: warning: unable to resolve reference to 'Eigen::indexing::all' for \ref command

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions