Cleanup
This commit is contained in:
@@ -971,14 +971,13 @@ try_propagating_resolved_type_to_untyped_literals(Ast *ast, Ast_Type *type, Ast_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// @todo: Remove compound context
|
|
||||||
function Ast_Type *
|
function Ast_Type *
|
||||||
resolve_typespec(Ast_Expr *ast, Resolve_Flag flags, Ast_Type *compound_context = 0){
|
resolve_typespec(Ast_Expr *ast, Resolve_Flag flags){
|
||||||
if(!ast && is_flag_set(flags, AST_CAN_BE_NULL))
|
if(!ast && is_flag_set(flags, AST_CAN_BE_NULL))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
Operand resolved = resolve_expr(ast, flags | RESOLVE_TYPESPEC, compound_context, 0);
|
Operand resolved = resolve_expr(ast, flags | RESOLVE_TYPESPEC, 0, 0);
|
||||||
if(is_flag_set(flags, RESOLVE_TYPESPEC_COMPLETE))
|
if(is_flag_set(flags, RESOLVE_TYPESPEC_COMPLETE))
|
||||||
type_complete(resolved.type_val);
|
type_complete(resolved.type_val);
|
||||||
if(resolved.type != type_type)
|
if(resolved.type != type_type)
|
||||||
@@ -986,9 +985,8 @@ resolve_typespec(Ast_Expr *ast, Resolve_Flag flags, Ast_Type *compound_context =
|
|||||||
return resolved.type_val;
|
return resolved.type_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @todo: Remove compound context
|
|
||||||
function Operand
|
function Operand
|
||||||
resolve_and_require_bool(const char *error, Ast_Expr *expr, Resolve_Flag flags, Ast_Type *compound_context = 0){
|
resolve_and_require_bool(const char *error, Ast_Expr *expr, Resolve_Flag flags){
|
||||||
if(!expr){
|
if(!expr){
|
||||||
if(flags == AST_CAN_BE_NULL)
|
if(flags == AST_CAN_BE_NULL)
|
||||||
return {};
|
return {};
|
||||||
@@ -996,7 +994,7 @@ resolve_and_require_bool(const char *error, Ast_Expr *expr, Resolve_Flag flags,
|
|||||||
}
|
}
|
||||||
|
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
Operand op = resolve_expr(expr, flags, compound_context, 0);
|
Operand op = resolve_expr(expr, flags, 0, 0);
|
||||||
if(!is_bool(op.type)){
|
if(!is_bool(op.type)){
|
||||||
compiler_error(expr->pos, "Expected type [Bool] got instead type %Q :: %s", typestring(op.type), error);
|
compiler_error(expr->pos, "Expected type [Bool] got instead type %Q :: %s", typestring(op.type), error);
|
||||||
}
|
}
|
||||||
@@ -1004,10 +1002,9 @@ resolve_and_require_bool(const char *error, Ast_Expr *expr, Resolve_Flag flags,
|
|||||||
return op;
|
return op;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @todo: Remove compound context
|
|
||||||
function Operand
|
function Operand
|
||||||
require_const_int(Ast_Expr *expr, Resolve_Flag flags, Ast_Type *compound_context = 0){
|
require_const_int(Ast_Expr *expr, Resolve_Flag flags){
|
||||||
Operand op = resolve_expr(expr, flags, compound_context, 0);
|
Operand op = resolve_expr(expr, flags, 0, 0);
|
||||||
|
|
||||||
if(expr == 0 && flags)
|
if(expr == 0 && flags)
|
||||||
return op;
|
return op;
|
||||||
|
|||||||
@@ -4,6 +4,13 @@ main :: (): int
|
|||||||
b := 20
|
b := 20
|
||||||
values := []Any{a, b}
|
values := []Any{a, b}
|
||||||
|
|
||||||
c := values[0].data
|
for values
|
||||||
|
Assert(it.type == S64)
|
||||||
|
|
||||||
|
Assert(*(values[0].data->*S64) == 10)
|
||||||
|
Assert(*(values[1].data->*S64) == 20)
|
||||||
|
|
||||||
|
// @todo: maybe this is better? Assert(*cast(*S64)values[0].data == 10)
|
||||||
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
Reference in New Issue
Block a user