diff --git a/compiler/compiler.v b/compiler/compiler.v index c4358c9..19030cd 100644 --- a/compiler/compiler.v +++ b/compiler/compiler.v @@ -430,7 +430,7 @@ fn (mut g Gen) gen_expr(e Expr) ! { // file, where the same validation applies) if e.name.len > 0 && e.name in g.structs { decl_fields := g.structs[e.name] - seen := map[string]bool{} + mut seen := map[string]bool{} for f in e.fields { if f.name !in decl_fields { return error('unknown field "${f.name}" for struct ${e.name} (line ${e.line})') diff --git a/vm/vm.v b/vm/vm.v index 3393077..8c710d7 100644 --- a/vm/vm.v +++ b/vm/vm.v @@ -514,7 +514,7 @@ fn (mut v Vm) is_struct(x i64) bool { } fn (mut v Vm) enc_int(x i64) i64 { - return x << 2 + return u64(x) << 2 } fn (mut v Vm) dec_int(x i64) i64 { @@ -526,15 +526,15 @@ fn (mut v Vm) hand(x i64) int { } fn (mut v Vm) mkstr(idx int) i64 { - return (i64(idx) << 2) | 1 + return (u64(idx) << 2) | 1 } fn (mut v Vm) mkarr(idx int) i64 { - return (i64(idx) << 2) | 3 + return (u64(idx) << 2) | 3 } fn (mut v Vm) mkstruct_handle(idx int) i64 { - return (i64(idx) << 2) | 2 + return (u64(idx) << 2) | 2 } fn (mut v Vm) truthy(x i64) bool {