1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:37:37 +00:00

LibCpp: Add AST::Name

A Name node is basically an identifier with an optional scope,
e.g Core::File.
This commit is contained in:
Itamar 2021-03-29 16:52:35 +03:00 committed by Andreas Kling
parent 29b6915db9
commit 3295609aea
5 changed files with 105 additions and 44 deletions

View file

@ -91,7 +91,7 @@ void Type::dump(size_t indent) const
String qualifiers_string;
if (!m_qualifiers.is_empty())
qualifiers_string = String::formatted("[{}] ", String::join(" ", m_qualifiers));
outln("{}{}", qualifiers_string, m_name);
outln("{}{}", qualifiers_string, m_name.is_null() ? "" : m_name->full_name());
}
void Parameter::dump(size_t indent) const
@ -243,7 +243,7 @@ void FunctionCall::dump(size_t indent) const
{
ASTNode::dump(indent);
print_indent(indent);
outln("{}", m_name);
outln("{}", m_name->full_name());
for (const auto& arg : m_arguments) {
arg.dump(indent + 1);
}
@ -462,4 +462,22 @@ void TemplatizedType::dump(size_t indent) const
outln(">");
}
void Name::dump(size_t indent) const
{
ASTNode::dump(indent);
print_indent(indent);
outln("{}", full_name());
}
String Name::full_name() const
{
StringBuilder builder;
if (!m_scope.is_empty()) {
for (auto& scope : m_scope) {
builder.appendff("{}::", scope.m_name);
}
}
return String::formatted("{}{}", builder.to_string(), m_name.is_null() ? "" : m_name->m_name);
}
}