Changing typespecs to be normal expressions
This commit is contained in:
21
new_ast.cpp
21
new_ast.cpp
@@ -91,6 +91,8 @@ enum Ast_Kind{
|
||||
AST_COMPOUND_ITEM,
|
||||
AST_COMPOUND,
|
||||
|
||||
AST_POINTER,
|
||||
AST_ARRAY,
|
||||
AST_INIT,
|
||||
AST_IF,
|
||||
AST_IF_NODE,
|
||||
@@ -190,16 +192,20 @@ struct Ast_If: Ast{
|
||||
|
||||
struct Ast_Lambda_Arg: Ast_Expr{
|
||||
Intern_String name;
|
||||
Ast_Typespec *typespec;
|
||||
Ast_Expr *typespec;
|
||||
};
|
||||
|
||||
struct Ast_Lambda : Ast_Expr {
|
||||
Array<Ast_Lambda_Arg *> args;
|
||||
Ast_Typespec *ret;
|
||||
Ast_Expr *ret;
|
||||
Ast_Block *block;
|
||||
};
|
||||
|
||||
struct Ast_Resolved_Type;
|
||||
struct Ast_Array: Ast_Expr{
|
||||
Ast_Expr *base;
|
||||
Ast_Expr *expr;
|
||||
};
|
||||
|
||||
struct Ast_Typespec:Ast{
|
||||
union{
|
||||
Ast_Typespec *base;
|
||||
@@ -331,7 +337,7 @@ ast_expr_lambda_empty(Token *pos){
|
||||
}
|
||||
|
||||
function Ast_Lambda_Arg *
|
||||
ast_expr_lambda_arg(Token *pos, Intern_String name, Ast_Typespec *typespec){
|
||||
ast_expr_lambda_arg(Token *pos, Intern_String name, Ast_Expr *typespec){
|
||||
AST_NEW(Lambda_Arg, LAMBDA_ARG, pos);
|
||||
result->name = name;
|
||||
result->typespec = typespec;
|
||||
@@ -370,6 +376,13 @@ ast_init(Token *pos, Token_Kind op, Ast_Atom *ident, Ast_Expr *expr){
|
||||
return result;
|
||||
}
|
||||
|
||||
function Ast_Array *
|
||||
ast_array(Token *pos, Ast_Expr *base){
|
||||
AST_NEW(Array, ARRAY, pos);
|
||||
result->base = base;
|
||||
return result;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Typespecs
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user