mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 13:58:40 +00:00
fix zero expression child nodes, commonly produced via partially typed expressions
This commit is contained in:
+11
-9
@@ -618,7 +618,7 @@ eval_parse_type_from_text_tokens(Arena *arena, EVAL_ParseCtx *ctx, String8 text,
|
|||||||
if(str8_match(token_string, str8_lit("*"), 0))
|
if(str8_match(token_string, str8_lit("*"), 0))
|
||||||
{
|
{
|
||||||
token_it += 1;
|
token_it += 1;
|
||||||
parse.expr = eval_expr(arena, EVAL_ExprKind_Ptr, token_string.str, parse.expr, 0, 0);
|
parse.expr = eval_expr(arena, EVAL_ExprKind_Ptr, token_string.str, parse.expr, &eval_expr_nil, &eval_expr_nil);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -797,8 +797,8 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8
|
|||||||
it = nested_parse.last_token;
|
it = nested_parse.last_token;
|
||||||
|
|
||||||
// rjf: build cast-to-U64*, and dereference operators
|
// rjf: build cast-to-U64*, and dereference operators
|
||||||
atom = eval_expr(arena, EVAL_ExprKind_Cast, token_string.str, eval_expr_leaf_type(arena, token_string.str, tg_cons_type_make(ctx->type_graph, TG_Kind_Ptr, tg_key_basic(TG_Kind_U64), 0)), atom, 0);
|
atom = eval_expr(arena, EVAL_ExprKind_Cast, token_string.str, eval_expr_leaf_type(arena, token_string.str, tg_cons_type_make(ctx->type_graph, TG_Kind_Ptr, tg_key_basic(TG_Kind_U64), 0)), atom, &eval_expr_nil);
|
||||||
atom = eval_expr(arena, EVAL_ExprKind_Deref, token_string.str, atom, 0, 0);
|
atom = eval_expr(arena, EVAL_ExprKind_Deref, token_string.str, atom, &eval_expr_nil, &eval_expr_nil);
|
||||||
|
|
||||||
// rjf: expect ]
|
// rjf: expect ]
|
||||||
EVAL_Token close_paren_maybe = eval_token_at_it(it, tokens);
|
EVAL_Token close_paren_maybe = eval_token_at_it(it, tokens);
|
||||||
@@ -1172,7 +1172,7 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8
|
|||||||
if(atom_implicit_member_name.size != 0)
|
if(atom_implicit_member_name.size != 0)
|
||||||
{
|
{
|
||||||
EVAL_Expr *member_expr = eval_expr_leaf_member(arena, atom_implicit_member_name.str, atom_implicit_member_name);
|
EVAL_Expr *member_expr = eval_expr_leaf_member(arena, atom_implicit_member_name.str, atom_implicit_member_name);
|
||||||
atom = eval_expr(arena, EVAL_ExprKind_MemberAccess, atom_implicit_member_name.str, atom, member_expr, 0);
|
atom = eval_expr(arena, EVAL_ExprKind_MemberAccess, atom_implicit_member_name.str, atom, member_expr, &eval_expr_nil);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1283,7 +1283,7 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8
|
|||||||
if(good_member_name)
|
if(good_member_name)
|
||||||
{
|
{
|
||||||
EVAL_Expr *member_expr = eval_expr_leaf_member(arena, member_name.str, member_name);
|
EVAL_Expr *member_expr = eval_expr_leaf_member(arena, member_name.str, member_name);
|
||||||
atom = eval_expr(arena, EVAL_ExprKind_MemberAccess, token_string.str, atom, member_expr, 0);
|
atom = eval_expr(arena, EVAL_ExprKind_MemberAccess, token_string.str, atom, member_expr, &eval_expr_nil);
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: increment past good member names
|
// rjf: increment past good member names
|
||||||
@@ -1311,7 +1311,7 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8
|
|||||||
// rjf: valid indexing expression => produce index expr
|
// rjf: valid indexing expression => produce index expr
|
||||||
if(idx_expr_parse.expr != &eval_expr_nil)
|
if(idx_expr_parse.expr != &eval_expr_nil)
|
||||||
{
|
{
|
||||||
atom = eval_expr(arena, EVAL_ExprKind_ArrayIndex, token_string.str, atom, idx_expr_parse.expr, 0);
|
atom = eval_expr(arena, EVAL_ExprKind_ArrayIndex, token_string.str, atom, idx_expr_parse.expr, &eval_expr_nil);
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: expect ]
|
// rjf: expect ]
|
||||||
@@ -1346,7 +1346,8 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8
|
|||||||
{
|
{
|
||||||
atom = eval_expr(arena, prefix_unary->kind, prefix_unary->location,
|
atom = eval_expr(arena, prefix_unary->kind, prefix_unary->location,
|
||||||
prefix_unary->cast_expr != &eval_expr_nil ? prefix_unary->cast_expr : atom,
|
prefix_unary->cast_expr != &eval_expr_nil ? prefix_unary->cast_expr : atom,
|
||||||
prefix_unary->cast_expr != &eval_expr_nil ? atom : 0, 0);
|
prefix_unary->cast_expr != &eval_expr_nil ? atom : &eval_expr_nil,
|
||||||
|
&eval_expr_nil);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(atom == 0 && first_prefix_unary != 0)
|
else if(atom == 0 && first_prefix_unary != 0)
|
||||||
@@ -1359,7 +1360,8 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8
|
|||||||
{
|
{
|
||||||
atom = eval_expr(arena, prefix_unary->kind, prefix_unary->location,
|
atom = eval_expr(arena, prefix_unary->kind, prefix_unary->location,
|
||||||
prefix_unary->cast_expr != &eval_expr_nil ? prefix_unary->cast_expr : atom,
|
prefix_unary->cast_expr != &eval_expr_nil ? prefix_unary->cast_expr : atom,
|
||||||
prefix_unary->cast_expr != &eval_expr_nil ? atom : 0, 0);
|
prefix_unary->cast_expr != &eval_expr_nil ? atom : &eval_expr_nil,
|
||||||
|
&eval_expr_nil);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1401,7 +1403,7 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
atom = eval_expr(arena, binary_kind, token_string.str, atom, rhs, 0);
|
atom = eval_expr(arena, binary_kind, token_string.str, atom, rhs, &eval_expr_nil);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user