return false;
}
}
- if (!ast_block_set_type(blocks[0], exprs[1]))
- return false;
+ ast_block_set_type(blocks[0], exprs[1]);
vec_push(sy->out, syblock(ctx, blocks[0]));
return true;
else if (ConstF(0) > ConstF(1))
out = (ast_expression*)parser_const_float_1(parser);
} else {
+ ast_binary *eq = ast_binary_new(ctx, INSTR_EQ_F, exprs[0], exprs[1]);
+
+ eq->refs = false; /* references nothing */
+
/* if (lt) { */
out = (ast_expression*)ast_ternary_new(ctx,
(ast_expression*)ast_binary_new(ctx, INSTR_LT, exprs[0], exprs[1]),
-
/* out = -1 */
(ast_expression*)parser_const_float_neg1(parser),
-
/* } else { */
/* if (eq) { */
- (ast_expression*)ast_ternary_new(ctx,
- (ast_expression*)ast_binary_new(ctx, INSTR_EQ_F, exprs[0], exprs[1]),
-
+ (ast_expression*)ast_ternary_new(ctx, (ast_expression*)eq,
/* out = 0 */
(ast_expression*)parser_const_float_0(parser),
-
/* } else { */
-
/* out = 1 */
(ast_expression*)parser_const_float_1(parser)
/* } */
ast_expression *functype = fld_think->expression.next;
thinkfunc = ast_value_new(parser_ctx(parser), parser_tokval(parser), functype->expression.vtype);
- if (!thinkfunc || !ast_type_adopt(thinkfunc, functype)) {
+ if (!thinkfunc) { /* || !ast_type_adopt(thinkfunc, functype)*/
ast_unref(framenum);
parseerror(parser, "failed to create implicit prototype for `%s`", parser_tokval(parser));
return false;
}
+ ast_type_adopt(thinkfunc, functype);
if (!parser_next(parser)) {
ast_unref(framenum);