From decab135b8751368aeed5e0ba01181d64d3439aa Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Fri, 10 Jun 2022 19:25:57 +0200 Subject: [PATCH] Referencing other packages works!! --- ast.cpp | 2 +- compiler.h | 1 - lambdas.kl | 6 +++ main.obj | Bin 246317 -> 0 bytes order1.kl | 3 +- order2.kl | 1 + parsing.cpp | 2 +- typechecking.cpp | 121 ++++++++++++++++++++++++++++++++--------------- typechecking.h | 7 ++- 9 files changed, 101 insertions(+), 42 deletions(-) delete mode 100644 main.obj diff --git a/ast.cpp b/ast.cpp index d4a2972..a99954b 100644 --- a/ast.cpp +++ b/ast.cpp @@ -60,7 +60,7 @@ struct Ast{ }; struct Ast_Resolved_Type; -struct Ast_Expr:Ast{}; +struct Ast_Expr:Ast{ }; #define VALUE_FIELDS \ Ast_Resolved_Type *type; \ diff --git a/compiler.h b/compiler.h index bebf8f6..5fbc729 100644 --- a/compiler.h +++ b/compiler.h @@ -178,7 +178,6 @@ struct Parse_Ctx:Lexer{ Array packages; Ast_Scope *currently_parsed_scope; - Ast_Package *resolving_package; Array ordered_decls; S64 indent; diff --git a/lambdas.kl b/lambdas.kl index e480319..ef43d8e 100644 --- a/lambdas.kl +++ b/lambdas.kl @@ -1,5 +1,11 @@ package lambdas +Test :: struct + len: S64 + +test: Test +member := test.len + a_type :: S64 pointer_type :: *S64 // null_pointer: pointer_type = null diff --git a/main.obj b/main.obj deleted file mode 100644 index c654b323418cf0f3d995b1b6061b88cc9324b99c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246317 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%0A%qMCtqce=+%C8#9HZkgV7o`Y7x)oR+d^ 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
    J3No)2JKIuco5140);{C@9HlrL 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 T;@5OS{=P4oYxg-?7~B`%=+DoC diff --git a/order1.kl b/order1.kl index a8f2c5e..e173965 100644 --- a/order1.kl +++ b/order1.kl @@ -17,4 +17,5 @@ CONSTANT_VAL :: 10 global_thing: a_type = 10 -// arena: order2.Arena +arena: *order2.Arena +order1_arena: order2.Arena diff --git a/order2.kl b/order2.kl index 110c159..455091f 100644 --- a/order2.kl +++ b/order2.kl @@ -17,6 +17,7 @@ String16 :: struct len : S64 with_type: Arena = order2_arena +test_dot := with_type.len pointer := &with_type deref := *pointer diff --git a/parsing.cpp b/parsing.cpp index bfe70eb..943302e 100644 --- a/parsing.cpp +++ b/parsing.cpp @@ -594,7 +594,7 @@ parse_decl(B32 is_global){ } } else if(token_match(TK_Identifier, TK_Colon)){ - Ast_Expr *typespec = typespec = parse_expr(); + Ast_Expr *typespec = parse_expr(); Ast_Expr *expr = parse_assign_expr(); result = ast_var(tname, typespec, tname->intern_val, expr); } diff --git a/typechecking.cpp b/typechecking.cpp index d9b8cb3..5595a23 100644 --- a/typechecking.cpp +++ b/typechecking.cpp @@ -420,10 +420,15 @@ _search_for_decl(Ast_Scope *scope, Intern_String name){ return 0; } -FLAG32(Search_Flag) { - SEARCH_ONLY_CURRENT_SCOPE = bit_flag(1), - SEARCH_ALSO_FOR_PACKAGE = bit_flag(2), -}; +function Ast_Package * +search_for_package(Intern_String name){ + For(pctx->packages){ + if(name == it->name){ + return it; + } + } + return 0; +} function Ast_Decl * search_for_decl(Ast_Scope *scope, Intern_String name, Search_Flag flags = 0){ @@ -434,12 +439,7 @@ search_for_decl(Ast_Scope *scope, Intern_String name, Search_Flag flags = 0){ if(is_flag_set(flags, SEARCH_ONLY_CURRENT_SCOPE)) break; } if(!result && is_flag_set(flags, SEARCH_ALSO_FOR_PACKAGE)){ - For(pctx->packages){ - if(name == it->name){ - result = (Ast_Decl *)it; - break; - } - } + result = (Ast_Decl *)search_for_package(name); } return result; @@ -638,6 +638,50 @@ resolve_cast(Ast_Cast *node){ return expr; } +global Ast_Scope *field_access_scope; // @memes + +function Operand +resolve_field_access(Ast_Expr *node, Ast_Scope *context){ + Ast_Binary *current = 0; + Ast_Expr *next = 0; + if(node->kind == AST_BINARY){ + current = (Ast_Binary *)node; + next = current->right; + node = current->left; + } + + Ast_Scope *new_context = 0; + if(!context && node->kind == AST_IDENT){ + auto ident = (Ast_Atom *)node; + Ast_Package *package = search_for_package(ident->intern_val); + if(package) { + new_context = package; + } + } + + if(!new_context){ + field_access_scope = context; + Operand op = resolve_expr(node, AST_CANT_BE_NULL); + field_access_scope = 0; + + if(current) current->type = op.type; + if(is_pointer(op.type)) op.type = op.type->base; + type_complete(op.type); + + if(next && !is_struct(op.type)){ + compiler_error(node->pos, "Dot access"); + } + + if(!next) + return op; + + new_context = ((Ast_Decl *)op.type->ast)->scope; + } + + assert(next); + return resolve_field_access(next, new_context); +} + function Operand resolve_expr(Ast_Expr *ast, Resolve_Flag flags){ if(!ast && is_flag_set(flags, AST_CAN_BE_NULL)) return {}; @@ -646,6 +690,28 @@ resolve_expr(Ast_Expr *ast, Resolve_Flag flags){ switch(ast->kind){ + CASE(IDENT, Atom){ + Ast_Scope *scope = node->parent_scope; + Search_Flag flags = 0; + if(field_access_scope){ + set_flag(flags, SEARCH_ONLY_CURRENT_SCOPE); + scope = field_access_scope; + } + Ast_Decl *decl = resolve_name(scope, node->pos, node->intern_val, flags); + + node->resolved_decl = decl; + Operand result = operand(decl); + if(decl->kind != AST_VAR){ + if(decl->kind == AST_CONST){ + rewrite_into_const(node, Ast_Atom, decl->value); + } + result.is_const = 1; + } + + return result; + BREAK(); + } + CASE(VALUE, Atom){ return operand_const_rvalue(node->value); BREAK(); @@ -677,28 +743,6 @@ resolve_expr(Ast_Expr *ast, Resolve_Flag flags){ BREAK(); } - CASE(IDENT, Atom){ - Ast_Decl *decl = resolve_name(node->parent_scope, node->pos, node->intern_val); - - node->resolved_decl = decl; - Operand result = operand(decl); - if(decl->kind != AST_VAR){ - // @note - // There might be some problem with types getting rewritten - // I would like decls to be resolved to be of AST_TYPE ?? - // - // assert(decl->value.type != type_type); - // assert(!is_lambda(decl->value.type)); - if(decl->kind == AST_CONST){ - rewrite_into_const(node, Ast_Atom, decl->value); - } - result.is_const = 1; - } - - return result; - BREAK(); - } - CASE(BINARY, Binary){ if(token_is_assign(node->op)){ assert(is_flag_set(node->flags, AST_STMT)); @@ -708,8 +752,12 @@ resolve_expr(Ast_Expr *ast, Resolve_Flag flags){ right.value = convert_untyped_to_typed(node->pos, right.value, left.type); if(left.type != right.type) compiler_error(node->pos, "Can't assign value when left is %s and right is %s", docname(left.type), docname(right.type)); + node->type = right.type; return {}; } + else if(node->op == TK_Dot){ + return resolve_field_access(node, 0); + } else{ Operand left = resolve_expr(node->left, AST_CANT_BE_NULL); Operand right = resolve_expr(node->right, AST_CANT_BE_NULL); @@ -837,9 +885,8 @@ resolve_expr(Ast_Expr *ast, Resolve_Flag flags){ function void resolve_decl(Ast_Decl *ast){ - if(ast->state == DECL_RESOLVED){ - return; - } + if(ast->kind == AST_PACKAGE) return; + else if(ast->state == DECL_RESOLVED) return; else if(ast->state == DECL_RESOLVING){ compiler_error(ast->pos, "Cyclic dependency of %s", ast->name.str); return; @@ -947,8 +994,8 @@ resolve_decl(Ast_Decl *ast){ } function Ast_Decl * -resolve_name(Ast_Scope *scope, Token *pos, Intern_String name){ - Ast_Decl *decl = search_for_decl(scope, name); +resolve_name(Ast_Scope *scope, Token *pos, Intern_String name, Search_Flag search_flags){ + Ast_Decl *decl = search_for_decl(scope, name, search_flags); if(!decl) compiler_error(pos, "Unidentified name [%s]", name.str); resolve_decl(decl); return decl; diff --git a/typechecking.h b/typechecking.h index 800e793..d1b6e9f 100644 --- a/typechecking.h +++ b/typechecking.h @@ -11,9 +11,14 @@ FLAG32(Resolve_Flag){ RESOLVE_TYPESPEC_COMPLETE = bit_flag(2), }; +FLAG32(Search_Flag){ + SEARCH_ONLY_CURRENT_SCOPE = bit_flag(1), + SEARCH_ALSO_FOR_PACKAGE = bit_flag(2), +}; + function Operand resolve_expr(Ast_Expr *ast, Resolve_Flag flags); function void resolve_decl(Ast_Decl *ast); -function Ast_Decl *resolve_name(Ast_Scope *parent_scope, Token *pos, Intern_String name); +function Ast_Decl *resolve_name(Ast_Scope *parent_scope, Token *pos, Intern_String name, Search_Flag search_flags = 0); function Ast_Resolved_Type *resolve_typespec(Ast_Expr *ast, Resolve_Flag flags); //-----------------------------------------------------------------------------