summaryrefslogtreecommitdiff
path: root/graphics/asymptote/name.cc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-12-28 03:01:00 +0000
committerNorbert Preining <norbert@preining.info>2021-12-28 03:01:00 +0000
commitecdf859b6ce481abfd530425dcf6f0f764bd0001 (patch)
tree13bc161dc046876ac6c92fce5f9f5034ba9aa573 /graphics/asymptote/name.cc
parent790995b7e79697514364450bf9c04f1b8d500838 (diff)
CTAN sync 202112280300
Diffstat (limited to 'graphics/asymptote/name.cc')
-rw-r--r--graphics/asymptote/name.cc19
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