Example #1
0
value_t compile_method_ast_to_method(runtime_t *runtime, value_t method_ast,
    value_t fragment) {
  reusable_scratch_memory_t scratch;
  reusable_scratch_memory_init(&scratch);
  TRY_FINALLY {
    E_TRY_DEF(signature, build_method_signature(runtime, fragment, &scratch,
        get_method_ast_signature(method_ast)));
    E_TRY_DEF(method, new_heap_method(runtime, afMutable, signature, method_ast,
        nothing(), fragment, new_flag_set(kFlagSetAllOff)));
    E_RETURN(method);
  } FINALLY {
    reusable_scratch_memory_dispose(&scratch);
  } YRT
}
Example #2
0
TEST(syntax, param_ordering) {
  CREATE_RUNTIME();
  CREATE_TEST_ARENA();

  value_t any_guard_ast = new_heap_guard_ast(runtime, gtAny, null());

  reusable_scratch_memory_t scratch;
  reusable_scratch_memory_init(&scratch);

  variant_t *sub = vValue(ROOT(runtime, subject_key));
  variant_t *sel = vValue(ROOT(runtime, selector_key));
  variant_t *just_sub = vArray(sub);
  variant_t *just_sel = vArray(sel);
  variant_t *just_0 = vArray(vInt(0));
  variant_t *just_1 = vArray(vInt(1));
  variant_t *just_2 = vArray(vInt(2));
  variant_t *just_3 = vArray(vInt(3));

  CHECK_ORDERING(4, vArray(just_0, just_1, just_2, just_3), 0 o 1 o 2 o 3);
  CHECK_ORDERING(4, vArray(just_3, just_2, just_1, just_0), 3 o 2 o 1 o 0);
  CHECK_ORDERING(4, vArray(just_2, just_0, just_3, just_1), 2 o 0 o 3 o 1);
  CHECK_ORDERING(3, vArray(just_2, just_0, just_3), 1 o 0 o 2);
  CHECK_ORDERING(2, vArray(just_2, just_3), 0 o 1);

  CHECK_ORDERING(3, vArray(just_2, vArray(vInt(0), vInt(1)), just_3), 1 o 0 o 2);
  CHECK_ORDERING(3, vArray(just_2, vArray(vInt(0), vInt(4)), just_3), 1 o 0 o 2);
  CHECK_ORDERING(3, vArray(just_2, vArray(vInt(5), vInt(4)), just_3), 0 o 2 o 1);

  CHECK_ORDERING(4, vArray(just_0, just_1, just_2, just_sel), 1 o 2 o 3 o 0);
  CHECK_ORDERING(4, vArray(just_0, just_sub, just_2, just_sel), 2 o 0 o 3 o 1);
  CHECK_ORDERING(3, vArray(just_0, vArray(sub, sel), just_3), 1 o 0 o 2);

  reusable_scratch_memory_dispose(&scratch);

  DISPOSE_TEST_ARENA();
  DISPOSE_RUNTIME();
}
Example #3
0
void assembler_dispose(assembler_t *assm) {
  short_buffer_dispose(&assm->code);
  reusable_scratch_memory_dispose(&assm->scratch_memory);
}