Baby steps struct polymorphs

This commit is contained in:
Krzosa Karol
2023-03-29 21:36:26 +02:00
parent 58a46b46e6
commit 21c8ceff03
6 changed files with 85 additions and 33 deletions

View File

@@ -348,19 +348,22 @@ enum Ast_Kind : uint32_t {
typedef uint32_t Ast_Flag;
enum {
AST_EXPR = 1ull << 1,
AST_STMT = 1ull << 2,
AST_STRICT = 1ull << 3,
AST_AGGREGATE = 1ull << 4,
AST_AGGREGATE_CHILD = 1ull << 5,
AST_ATOM = 1ull << 7,
AST_FOREIGN = 1ull << 8,
AST_DECL = 1ull << 9,
AST_GLOBAL = 1ull << 10,
AST_FLAG = 1ull << 11,
AST_VAR_IS_CONST = 1ull << 12,
AST_OPERATOR_OVERLOAD = 1ull << 13,
AST_IS_LVALUE = 1ull << 14,
AST_EXPR = 1 << 1,
AST_STMT = 1 << 2,
AST_STRICT = 1 << 3,
AST_AGGREGATE = 1 << 4,
AST_AGGREGATE_CHILD = 1 << 5,
AST_ATOM = 1 << 7,
AST_FOREIGN = 1 << 8,
AST_DECL = 1 << 9,
AST_GLOBAL = 1 << 10,
AST_FLAG = 1 << 11,
AST_VAR_IS_CONST = 1 << 12,
AST_OPERATOR_OVERLOAD = 1 << 13,
AST_IS_LVALUE = 1 << 14,
AST_IDENT_POLYMORPH = 1 << 15,
AST_TYPE_POLYMORPH = 1 << 16,
AST_POLYMORPH = AST_IDENT_POLYMORPH | AST_TYPE_POLYMORPH,
};
struct Ast {
@@ -599,6 +602,7 @@ struct Ast_Decl : Ast {
uint64_t operator_overload_arguments_hash;
Ast_Operator_Info *overload_op_info;
Array<Ast_Decl *> polymorph_parameters;
Ast_Scope *scope;
Ast_Expr *typespec;