diff options
author | Norbert Preining <norbert@preining.info> | 2021-12-28 03:01:00 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-12-28 03:01:00 +0000 |
commit | ecdf859b6ce481abfd530425dcf6f0f764bd0001 (patch) | |
tree | 13bc161dc046876ac6c92fce5f9f5034ba9aa573 /graphics/asymptote/name.cc | |
parent | 790995b7e79697514364450bf9c04f1b8d500838 (diff) |
CTAN sync 202112280300
Diffstat (limited to 'graphics/asymptote/name.cc')
-rw-r--r-- | graphics/asymptote/name.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/graphics/asymptote/name.cc b/graphics/asymptote/name.cc index d16e6e1e93..04e3552c68 100644 --- a/graphics/asymptote/name.cc +++ b/graphics/asymptote/name.cc @@ -145,6 +145,10 @@ void simpleName::prettyprint(ostream &out, Int indent) out << "simpleName '" << id << "'\n"; } +AsymptoteLsp::SymbolLit simpleName::getLit() const +{ + return AsymptoteLsp::SymbolLit(static_cast<std::string>(id)); +} record *qualifiedName::castToRecord(types::ty *t, bool tacit) { @@ -323,4 +327,19 @@ void qualifiedName::prettyprint(ostream &out, Int indent) qualifier->prettyprint(out, indent+1); } +AsymptoteLsp::SymbolLit qualifiedName::getLit() const +{ + std::vector<std::string> accessors; + name const* currentScope = this->qualifier; + + while (auto* qn = dynamic_cast<qualifiedName const*>(currentScope)) + { + accessors.push_back(static_cast<std::string>(qn->getName())); + currentScope = qn->qualifier; + } + accessors.push_back(static_cast<std::string>(currentScope->getName())); + + return AsymptoteLsp::SymbolLit(static_cast<std::string>(id), std::move(accessors)); +} + } // namespace absyntax |