3#include "ast/ASTProperties.h"
6#include <unordered_map>
16namespace sammine_lang::AST {
18enum class VarState { Unconsumed, Consumed };
26 std::unordered_map<std::string, VarInfo> children;
29using LinearVarMap = std::unordered_map<std::string, VarInfo>;
32 std::vector<LinearVarMap> scope_stack;
42 VarInfo *find_linear(
const std::string &name);
45 LinearVarMap snapshot()
const;
46 void restore(
const LinearVarMap &snap);
49 void check_branch_consistency(
const LinearVarMap &before,
50 const std::vector<LinearVarMap> &branches,
72 void register_inner_linear(
VarInfo &parent,
const Type &t,
74 void check_children_consumed(
const VarInfo &info);
75 VarInfo *find_child(
const std::string &var_name,
76 const std::string &field_name);
Defined the AST Node classes (ProgramAST, StructDefAST, FuncDefAST) and a visitor interface for trave...
Holds classes and functionalities for dealing with Error handling, source locations caching & indexin...
Definition ASTProperties.h:40
An AST to simulate a { } code block.
Definition Ast.h:317
Definition LinearTypeChecker.h:31
A variable definition: "var x = expression;" or "let (a, b) = expr;".
Definition Ast.h:420
Definition Utilities.h:70
Definition Utilities.h:130
Definition LinearTypeChecker.h:20