From 28efa2486b68725fab18f5226e7d630e4c965601 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 14 Jul 2020 10:07:42 -0500 Subject: [PATCH] Small bugfixes --- include/onyxtypes.h | 2 ++ onyx | Bin 233104 -> 233304 bytes progs/basic.onyx | 2 +- src/onyxchecker.c | 18 +++++++----------- src/onyxmsgs.c | 4 +++- src/onyxparser.c | 15 +++++++++------ src/onyxsymres.c | 3 +-- src/onyxtypes.c | 4 ++++ src/onyxwasm.c | 4 +++- 9 files changed, 30 insertions(+), 22 deletions(-) diff --git a/include/onyxtypes.h b/include/onyxtypes.h index 3f9a1094..e6fccbb7 100644 --- a/include/onyxtypes.h +++ b/include/onyxtypes.h @@ -87,4 +87,6 @@ b32 types_are_compatible(Type* t1, Type* t2); Type* type_build_from_ast(bh_allocator alloc, struct AstType* type_node); const char* type_get_name(Type* type); +b32 type_is_pointer(Type* type); + #endif // #ifndef ONYX_TYPES diff --git a/onyx b/onyx index 34f7c89e5d0ca9c8614a0ececba1f62a7cbf5ed7..5fd9c1d9896ce7f1df5d904d5112793d6b75bcfb 100755 GIT binary patch delta 68747 zcmce<2YggT_cwm$Zgz9`hTViT(hCVB5FoVBOX#78-g{N5((8iM5JK?+7X%TdOB168 zQ7Hm~qJSufhzO#R2nvb_SaSd0GjsQ5@$q?nf1mgLz5Dr0&Ua?coH z+UQ=9Dz9C*vf@?ex0RSgpKrC&EZupnIgd!!wASo1XQ;o3g=!V#U7;06W`7qw`sa`} zi8D8ZxA`?No31PAA=xLoVeXNZwO^(k!^#sI7d?w;R&I;MSve;QEBs*?UVO%nbZv1BaqZ8V zW!O$FETaM2t98!EVoBQij0`zFPCK7bksa0k%t&BgYjL%j$THIg)rybs#PYJIxUAgl zAkb4;IoXP~xYj85g4?Jh=h)#&P^oaL#%kB>STvD>J_Isnc?6#KCIG%m0b!(i=CTr6h z4;@s;PUi!!~KzO{%fk+A~cmu}a#$CYkI{ z?QWCsQlDNoi~|rW6*+8LaMLPmpVp*lIlosRRZDM@z=mnLP0O*4+Ww|Va&&3!V$)9S zj+WZ&IqjQf5v{_|@z8k_dS+8@x1~ARsa_?-RNh2W*_#Bt?$d-WQB%Lqo4i9yXqtfa zlHNQ#45GTdf>KpUBrrxayACN5F*uOdbwFg0Sd2cc6e?U%+uXc7+W0~9WY$8v)4WFb z%Wlqo7i@)xoMs=tr`2guF)@wCHmAkIta-B@N)ugJO7^EQ)#|o*ILV2~!>6=)Eta@; z1e8pm4O&#osqKG$Xc!BQ1TMf{h0Ydp;iee1YejD(@nnlD_-o}I{gu~qt!UG~=7not zwXBeIycAdRT2^j9gchd`xlKi{d{0H2DYu$yw_3(V&HpQ3pvkvE8{Ddf`^Xo>ee7_3 z)Ki$RZEjVw-p`qkO#1{$rF5DW9~FVmRQ#Jlj!|vx5`o@|eWO)rUxU4<4Q^kB&D2)5uNIz4OgSy6k4{-qL$pin>#;3bNQbWV=H1{@ z_!ji#Z=9L-P_(=oBxgt53gof8u<#+)Zp@j7XfJlC$l|pRJ7h!`eN95BK+_1`#29lX zo%>pg=~!3({gKwAN4f)Sn+FPC4h8(*}tUi6()COA*TMWb^I)*~oSAf13+z^o zRo61QwU-a=)IMGtu4VTLkiR^mUEdt5XEtPt_F=c?td>@~`}2`?{*a`D=_D{O*xJf(NeUPke(<=5D7Ci+i2U`oKpMT>_p~Q6fl%fBWg%%&`;bd;@RFB%(CkJqC zP7%rZ7!Sjbh@YE52T1S2oWqiI%O9=Xjg0q?b<4{6HY;Zq&DV$Y(3dB=Im|3I?^@7; zBNMgj)k3ryJ&!~l@6QFF0C}?^sUl3PVdu0`y}HS7yr&K6RagDJA7}cbpV=4BeW2a# z8!Ok{s$K4tEO-0h+1}$ZX`kv{mL1Vn_1+?XzF7%>NA?tW$2LakcARPEP(!{ygE5eNHJo6~=~Tt-A{AyQGx z8cpW(e3K}TMo~03GlAkv>pZZweEVH3 zcVHwd)V2<+&!%YC2PVtqKhpdMRm20Q`k?mmuSd1HgA&;%TJOOLY@~L4P)&AIdo-wW z@DCqyao8X;6%yB2Fvf7kFSQwi8-<@K2Nto(T5LOxXlDnPi>Q5?N~4qcPGaRgsg)Yi zC2HzjOowh_IxM{d#=M5lgA^WlTbnjys=R)kwt8ri7CtnDy`fbcT0t&*SnD%5Ub%6K zw|kP7H?RzQq^%lSUk-Xt`*>)Wy!?<>I5abCK+?bJQ&(#^Y$ zVV8r3p=}%+>~TvYj^nbxg@?RPV& zX-SgOLg<=ak`!hp#grtKHItkrN$L6Tk2xs2{31lJ7X64lOglIJNj0yGnKDId{#0Kz z#TzZH<&Cc&^C#cPn+QFyeB7?bq+R_r0ag=)(uRAmdaBNGOMMEpy3cdh!w3i7Eyt>475c=*hjm@01w z(2h>%ACmsnUqy}4q9?`3KL%=bCyi2X1e+Z*LEAg2y}HyJjnV9r>$2Kfsl75errkcm+jjC^Ds{5ODHyj>Q6jgQsVm>ZdRav* z^GaBdDHRoSE7;32lUN375mRCvg9tX%>I1eQ7^U@}65GBa!3R66YMdnF>BnRQ63eG0 zEU;swqK=QT`~sV=aQ_bN)RY+i&j~Nvq1~Di<2X!sl;)Zm>)1*#ORG9Hw*3-<&1MePW=80uyiS52_u#>kFlI3ma1CTv{=V$1YO#wX|ev#5&V9ewtQMl zyE%kUZnNr%Bq2>76Ecigwv@0$5lj4IENzKpuJ!=+R43S9i<%zmh$L8FYX~S4jL-&7 zk8NLg8SwsAtHyW|H=gVmzS5{=9}&y>5|#vFY5y3@tHiQztM%Pp zOZW*ba7L_W1i_XiQj$r^QT!>Xr~|Pim9XH6AQf$Vj3t9uB*EguY{p|sx;48*L?Y#1 z+rpbe`6-m&ANlRg3850hkrD>7)NeH^5%BZp$lp|wUxD)DO7bsL{v7S$jAYhJi=COq zdTXs`)(?FEHatQvff42s-=FqqYiFj(Uwy8fn3Q-67s<#_M-WhvHRxG76nU6 zBt50MXC-U3W+k&~TAx|9*aPj^S=B-kF8y_*ctg85t9D57XMar}ttHH^9{H;nn`_uG z>j=%cLSHd$)a(}O7g(C~pe@SL4$f{_H`g1jYn8&@XXxMz3!pNV__xjHAb&hEa4_`+ZKb zBXIsQ@N0>4!>Uc<&3VkI3C3BqXvDv!e~0~`sH3LMZ5l1Xg~vO`#@Xluffmz2^_F&b zZc^o!KK*NZUvZcvcJnFVQ(_~P@J#rZ5(CW=w+2&FF-WPPUc*bm8B8Q+BAGw%&@0&q zx9Xayq|Kx>xDR_>fEfZK9i5Vqf=aMbtAiBof8H=Yyrr(V<-g*V-wN%kXX?w7{?y`T zMrpO?1+nc~t9i9qf##VP9h&~B@9=OtFGkxtZ;Sl!yw-Jod-q4@OS<~#dF`t?;c3s^ z!h!M0zZi=@{eZ-7e@XmByE{KL{L~#}rTryqRDRTgRtyth@WMJQL0iADqx|rkc6(tj zwj;mgqEK0$HBsxEGl?Z?=X1)*qgQE_X{}P-t?Z2pwW&*A&KO^Tr25JI#6e-+ZJeiPJsJzd~v!bv{- zWqf!71dbyfgC=^OJ>d-MFS;ipyyBZa_zNF=)(0Q+!36^I9@-^vMXKNhfzt_V0@ozG zNZ>kzX8?PkMFWbA6B$hi4-vQ};T{6hh!wRJIGb=|fjbedA#i8HDFSyP94&BH!hr(! zAZ!!353r}`0U2C*_WqP{OW?tTzY=&j;ZFp9g78U!M-zTa;4y^v2|SkYW`V~M)&(9< zIM*lL!?DNC3r`RkqljsQ5ANfGJNn>eKDf3IPV>R>J~+e&`wRRe)%ClFjJ!PiNQ&GM zn78@H-tL3f`{3n1c%HyRJyh`&5#ilFO5lN%K0shTG+hMlOX;ly z?oGJ9z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 HRrtREFpX@H delta 68442 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 diff --git a/progs/basic.onyx b/progs/basic.onyx index 2ce18950..5b4ad454 100644 --- a/progs/basic.onyx +++ b/progs/basic.onyx @@ -1,7 +1,7 @@ use "progs/intrinsics" pointer_test :: proc { - p : ^i32 = 0 as ^i32; + p := 0 as ^i32; } print :: foreign "host" "print" proc (val: i32) --- diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 5b14f880..531ebd32 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -23,10 +23,6 @@ static void check_assignment(OnyxSemPassState* state, AstAssign* assign) { return; } - if (assign->lval->type == NULL) { - assign->lval->type = type_build_from_ast(state->node_allocator, assign->lval->type_node); - } - if ((assign->lval->flags & Ast_Flag_Const) != 0 && assign->lval->type != NULL) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_ASSIGN_CONST, @@ -43,6 +39,10 @@ static void check_assignment(OnyxSemPassState* state, AstAssign* assign) { return; } + if (assign->lval->type == NULL) { + assign->lval->type = type_build_from_ast(state->node_allocator, assign->lval->type_node); + } + check_expression(state, assign->expr); if (assign->lval->type == NULL) { @@ -216,7 +216,7 @@ static void check_call(OnyxSemPassState* state, AstCall* call) { if (!types_are_compatible(formal_param->base.type, actual_param->base.type)) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_FUNCTION_PARAM_TYPE_MISMATCH, - actual_param->value->token->pos, + actual_param->base.token->pos, callee->base.token->text, callee->base.token->length, type_get_name(formal_param->base.type), arg_pos, @@ -266,10 +266,8 @@ static void check_binaryop(OnyxSemPassState* state, AstBinaryOp* binop) { return; } - if (binop->left->type->kind == Type_Kind_Pointer - || binop->right->type->kind == Type_Kind_Pointer - || (binop->left->type->Basic.flags & Basic_Flag_Pointer) - || (binop->right->type->Basic.flags & Basic_Flag_Pointer)) { + if (type_is_pointer(binop->left->type) + || type_is_pointer(binop->right->type)) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_LITERAL, binop->base.token->pos, @@ -309,8 +307,6 @@ static void check_expression(OnyxSemPassState* state, AstTyped* expr) { if (((AstUnaryOp *) expr)->operation != Unary_Op_Cast) { expr->type = ((AstUnaryOp *) expr)->expr->type; - } else { - expr->type = type_build_from_ast(state->node_allocator, expr->type_node); } break; diff --git a/src/onyxmsgs.c b/src/onyxmsgs.c index 949adcf1..5b1d8c57 100644 --- a/src/onyxmsgs.c +++ b/src/onyxmsgs.c @@ -2,6 +2,8 @@ #include "onyxmsgs.h" #include "onyxutils.h" +#define MAX_MSGS 5 + static const char* msg_formats[] = { "%s", "expected token '%s', got '%s'", @@ -63,7 +65,7 @@ static void print_detailed_message(OnyxMessage* msg, bh_file_contents* fc) { void onyx_message_print(OnyxMessages* msgs) { OnyxMessage* msg = msgs->first; - i32 msg_count = 1000; + i32 msg_count = MAX_MSGS; while (msg && msg_count-- > 0) { if (msg->pos.filename) { diff --git a/src/onyxparser.c b/src/onyxparser.c index 16598750..6744d477 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -169,6 +169,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { AstArgument* curr = NULL; while (parser->curr_token->type != ')') { curr = make_node(AstArgument, Ast_Kind_Argument); + curr->base.token = parser->curr_token; curr->value = parse_expression(parser); if (curr != NULL && curr->base.kind != Ast_Kind_Error) { @@ -203,7 +204,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { case Token_Type_Literal_True: { AstNumLit* bool_node = make_node(AstNumLit, Ast_Kind_Literal); - bool_node->base.type_node = (AstType *) &basic_type_i8; + bool_node->base.type_node = (AstType *) &basic_type_bool; bool_node->base.token = expect(parser, Token_Type_Literal_True); bool_node->value.i = 1; retval = (AstTyped *) bool_node; @@ -213,7 +214,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { case Token_Type_Literal_False: { AstNumLit* bool_node = make_node(AstNumLit, Ast_Kind_Literal); - bool_node->base.type_node = (AstType *) &basic_type_i8; + bool_node->base.type_node = (AstType *) &basic_type_bool; bool_node->base.token = expect(parser, Token_Type_Literal_False); bool_node->value.i = 0; retval = (AstTyped *) bool_node; @@ -465,12 +466,12 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { else if (parser->curr_token->type == Token_Type_Fslash_Equal) bin_op = Binary_Op_Divide; else if (parser->curr_token->type == Token_Type_Percent_Equal) bin_op = Binary_Op_Modulus; - parser_next_token(parser); - - AstTyped* expr = parse_expression(parser); - AstBinaryOp* bin_op_node = make_node(AstBinaryOp, Ast_Kind_Binary_Op); bin_op_node->operation = bin_op; + bin_op_node->base.token = parser->curr_token; + + parser_next_token(parser); + AstTyped* expr = parse_expression(parser); AstNode* bin_op_left = make_node(AstNode, Ast_Kind_Symbol); bin_op_left->token = symbol; @@ -478,6 +479,7 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { bin_op_node->right = expr; AstAssign* assign_node = make_node(AstAssign, Ast_Kind_Assignment); + assign_node->base.token = bin_op_node->base.token; // TODO: Maybe I don't need to make another lval node? AstNode* lval = make_node(AstNode, Ast_Kind_Symbol); @@ -624,6 +626,7 @@ static AstType* parse_type(OnyxParser* parser) { if (parser->curr_token->type == '^') { parser_next_token(parser); AstPointerType* new = make_node(AstPointerType, Ast_Kind_Pointer_Type); + new->base.flags |= Basic_Flag_Pointer; *next_insertion = (AstType *) new; next_insertion = &new->elem; } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index fa72c348..ee1c7155 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -324,14 +324,13 @@ void onyx_resolve_symbols(OnyxSemPassState* state, OnyxProgram* program) { if (!symbol_unique_introduce(state, (*foreign)->import)) return; } + // NOTE: Then, resolve all symbols in all functions bh_arr_each(AstForeign *, foreign, program->foreigns) { if ((*foreign)->import->kind == Ast_Kind_Function) { symres_function(state, (AstFunction *) (*foreign)->import); } } - - // NOTE: Then, resolve all symbols in all functions bh_arr_each(AstFunction *, function, program->functions) symres_function(state, *function); } diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 1960b767..908ae1cc 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -84,3 +84,7 @@ const char* type_get_name(Type* type) { default: return "unknown"; } } + +b32 type_is_pointer(Type* type) { + return type->kind == Type_Kind_Pointer || (type->Basic.flags & Basic_Flag_Pointer) != 0; +} diff --git a/src/onyxwasm.c b/src/onyxwasm.c index bac645d3..7c817808 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -252,6 +252,7 @@ static void compile_function_body(OnyxWasmModule* mod, bh_arr(WasmInstruction)* static void compile_block(OnyxWasmModule* mod, bh_arr(WasmInstruction)* pcode, AstBlock* block) { bh_arr(WasmInstruction) code = *pcode; + bh_arr_push(mod->structured_jump_target, 1); WID(WI_BLOCK_START, 0x40); forll (AstNode, stmt, block->body, next) { @@ -259,6 +260,7 @@ static void compile_block(OnyxWasmModule* mod, bh_arr(WasmInstruction)* pcode, A } WI(WI_BLOCK_END); + bh_arr_pop(mod->structured_jump_target); *pcode = code; } @@ -424,7 +426,7 @@ static const WasmInstructionType binop_map[][4] = { /* REM */ { WI_I32_REM_S, WI_I64_REM_S, WI_NOP, WI_NOP }, /* EQ */ { WI_I32_EQ, WI_I64_EQ, WI_F32_EQ, WI_F64_EQ }, - /* NEQ */ { WI_NOP, WI_NOP, WI_F32_NE , WI_F64_NE }, + /* NEQ */ { WI_I32_NE, WI_I64_NE, WI_F32_NE , WI_F64_NE }, /* LT */ { WI_I32_LT_S, WI_I64_LT_S, WI_F32_LT, WI_F64_LT }, /* LTE */ { WI_I32_LE_S, WI_I64_LE_S, WI_F32_LE, WI_F64_LE }, /* GT */ { WI_I32_GT_S, WI_I64_GT_S, WI_F32_GT, WI_F64_GT }, -- 2.25.1