MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

check for combined import

+70 -2
+1 -1
meson.build
··· 75 75 build_date = run_command('date', '+%Y-%m-%d', check: true).stdout().strip() 76 76 77 77 version_conf = configuration_data() 78 - version_conf.set('ANT_VERSION', '0.2.0.3') 78 + version_conf.set('ANT_VERSION', '0.2.0.4') 79 79 version_conf.set('ANT_GIT_HASH', git_hash) 80 80 version_conf.set('ANT_BUILD_DATE', build_date) 81 81
+69 -1
src/ant.c
··· 18509 18509 size_t default_len = js->tlen; 18510 18510 js->consumed = 1; 18511 18511 18512 + typedef struct { 18513 + const char *import_name; 18514 + size_t import_len; 18515 + const char *local_name; 18516 + size_t local_len; 18517 + } import_binding_t; 18518 + 18519 + import_binding_t bindings[64]; 18520 + int binding_count = 0; 18521 + 18522 + if (next(js) == TOK_COMMA) { 18523 + js->consumed = 1; 18524 + 18525 + if (next(js) == TOK_LBRACE) { 18526 + js->consumed = 1; 18527 + 18528 + while (next(js) != TOK_RBRACE && binding_count < 64) { 18529 + EXPECT(TOK_IDENTIFIER, ); 18530 + const char *import_name = &js->code[js->toff]; 18531 + size_t import_len = js->tlen; 18532 + js->consumed = 1; 18533 + 18534 + const char *local_name = import_name; 18535 + size_t local_len = import_len; 18536 + 18537 + if (next(js) == TOK_AS) { 18538 + js->consumed = 1; 18539 + EXPECT(TOK_IDENTIFIER, ); 18540 + local_name = &js->code[js->toff]; 18541 + local_len = js->tlen; 18542 + js->consumed = 1; 18543 + } 18544 + 18545 + bindings[binding_count].import_name = import_name; 18546 + bindings[binding_count].import_len = import_len; 18547 + bindings[binding_count].local_name = local_name; 18548 + bindings[binding_count].local_len = local_len; 18549 + binding_count++; 18550 + 18551 + if (next(js) == TOK_COMMA) js->consumed = 1; 18552 + } 18553 + 18554 + EXPECT(TOK_RBRACE, ); 18555 + } else if (next(js) == TOK_MUL) { 18556 + js->consumed = 1; 18557 + EXPECT(TOK_AS, ); 18558 + EXPECT(TOK_IDENTIFIER, ); 18559 + bindings[binding_count].import_name = NULL; 18560 + bindings[binding_count].import_len = 0; 18561 + bindings[binding_count].local_name = &js->code[js->toff]; 18562 + bindings[binding_count].local_len = js->tlen; 18563 + binding_count++; 18564 + js->consumed = 1; 18565 + } else { 18566 + return js_mkerr(js, "Expected '{' or '*' after ',' in import"); 18567 + } 18568 + } 18569 + 18512 18570 EXPECT(TOK_FROM, ); 18513 18571 EXPECT(TOK_STRING, ); 18514 18572 ··· 18553 18611 18554 18612 jsoff_t default_off = lkp(js, ns, "default", 7); 18555 18613 jsval_t default_val = default_off != 0 ? resolveprop(js, mkval(T_PROP, default_off)) : js_mkundef(); 18614 + setprop(js, js->scope, js_mkstr(js, default_name, default_len), default_val); 18556 18615 18557 - setprop(js, js->scope, js_mkstr(js, default_name, default_len), default_val); 18616 + for (int i = 0; i < binding_count; i++) { 18617 + if (bindings[i].import_name == NULL) { 18618 + setprop(js, js->scope, js_mkstr(js, bindings[i].local_name, bindings[i].local_len), ns); 18619 + } else { 18620 + jsoff_t prop_off = lkp(js, ns, bindings[i].import_name, bindings[i].import_len); 18621 + jsval_t imported_val = prop_off != 0 ? resolveprop(js, mkval(T_PROP, prop_off)) : js_mkundef(); 18622 + setprop(js, js->scope, js_mkstr(js, bindings[i].local_name, bindings[i].local_len), imported_val); 18623 + } 18624 + } 18625 + 18558 18626 return js_mkundef(); 18559 18627 } 18560 18628