ufff
This commit is contained in:
parent
c8b8dd820e
commit
0e7fffcfe0
67 changed files with 154 additions and 65 deletions
17
src/vm_case_make_map.c
Normal file
17
src/vm_case_make_map.c
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
case OP_MAKE_MAP: {
|
||||
int pairs = inst.operand;
|
||||
if (pairs < 0) { fprintf(stderr, "MAKE_MAP invalid pair count\n"); exit(1); }
|
||||
Value m = make_map_empty();
|
||||
for (int i = 0; i < pairs; ++i) {
|
||||
Value val = pop_value(vm);
|
||||
Value key = pop_value(vm);
|
||||
if (key.type != VAL_STRING) { fprintf(stderr, "Map literal keys must be strings\n"); exit(1); }
|
||||
if (!map_set(&m, key.s ? key.s : "", val)) {
|
||||
fprintf(stderr, "Map literal set failed\n"); exit(1);
|
||||
}
|
||||
free_value(key);
|
||||
/* val ownership moved */
|
||||
}
|
||||
push_value(vm, m);
|
||||
break;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue