11 #include <hilti/ast/ctor.h> 12 #include <hilti/ast/expression.h> 13 #include <hilti/ast/function.h> 14 #include <hilti/ast/node.h> 15 #include <hilti/ast/operator.h> 16 #include <hilti/base/logger.h> 17 #include <hilti/compiler/context.h> 30 std::set<context::ModuleIndex> importModules(
const Node& root, Unit* unit);
36 void printAST(
const Node& root, std::ostream& out,
bool compact =
false);
42 void printAST(
const Node& root, printer::Stream& stream);
45 std::string renderOperatorPrototype(
const expression::UnresolvedOperator& o);
48 std::string renderOperatorPrototype(
const expression::ResolvedOperator& o);
51 std::string renderOperatorInstance(
const expression::UnresolvedOperator& o);
54 std::string renderOperatorInstance(
const expression::ResolvedOperator& o);
57 void renderNode(
const Node& n, std::ostream& out,
bool include_scopes =
false);
58 void renderNode(
const Node& n, logging::DebugStream stream,
bool include_scopes =
false);
63 void clearErrors(Node* root);
66 void buildScopes(
const std::vector<std::pair<ID, NodeRef>>& modules, Unit* unit);
68 bool resolveIDs(Node* root, Unit* unit);
70 bool resolveOperators(Node* root, Unit* unit);
72 std::optional<Ctor> coerceCtor(Ctor c,
const Type& dst, bitmask<CoercionStyle> style);
74 std::optional<Type> coerceType(Type t,
const Type& dst, bitmask<CoercionStyle> style);
76 bool applyCoercions(Node* root, Unit* unit);
78 void validateAST(Node* root);