Yume
describe.cpp
Go to the documentation of this file.
1#include "ast.hpp"
2
3#include "qualifier.hpp"
4#include "util.hpp"
5#include <llvm/ADT/STLExtras.h>
6#include <sstream>
7#include <string>
8
9namespace yume::ast {
10
11auto AST::describe() const -> string { return string{"unknown "} + kind_name(); }
12auto QualType::describe() const -> string {
13 switch (qualifier) {
14 case Qualifier::Ptr: return "ptr";
15 case Qualifier::Mut: return "mut";
16 case Qualifier::Ref: return "ref";
17 case Qualifier::Type: return "meta";
18 case Qualifier::Opaque: return "opaque";
19 }
20}
21auto TemplatedType::describe() const -> string {
22 stringstream ss{};
23 ss << "{";
24 for (const auto& i : llvm::enumerate(type_args)) {
25 if (i.index() > 0)
26 ss << ",";
27 ss << i.value().ast()->describe();
28 }
29 ss << "}";
30 return ss.str();
31}
32auto FunctionType::describe() const -> string {
33 stringstream ss{};
34 ss << "->(";
35 for (const auto& i : llvm::enumerate(args)) {
36 if (i.index() > 0)
37 ss << ",";
38 ss << i.value()->describe();
39 }
40 ss << ")";
41 if (ret.has_value())
42 ss << ret->describe();
43 return ss.str();
44}
45} // namespace yume::ast
auto kind_name() const -> string
Human-readable string representation of the Kind of this node.
Definition: ast.hpp:274
virtual auto describe() const -> string
A short, string representation for debugging.
Definition: describe.cpp:11
auto has_value() const -> bool
Definition: ast.hpp:172
Definition: ast.cpp:8
@ Opaque
Opaque self types.
OptionalType ret
Definition: ast.hpp:382
vector< AnyType > args
Definition: ast.hpp:383
auto describe() const -> string override
A short, string representation for debugging.
Definition: describe.cpp:32
auto describe() const -> string override
A short, string representation for debugging.
Definition: describe.cpp:12
Qualifier qualifier
Definition: ast.hpp:344
auto describe() const -> string override
A short, string representation for debugging.
Definition: describe.cpp:21
vector< AnyTypeOrExpr > type_args
Definition: ast.hpp:470