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.

import resolver fixes

+14 -8
+2 -4
examples/demo/readline.js
··· 34 34 ${c('yellow', 'โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•')} 35 35 `; 36 36 37 - const HELP = ` 38 - ${c('bold', 'Commands:')} 37 + const HELP = ` ${c('bold', 'Commands:')} 39 38 ${c('green', 'add')} ${c('dim', '<task>')} Add a new task 40 39 ${c('green', 'list')} List all tasks 41 40 ${c('green', 'done')} ${c('dim', '<id>')} Mark task as complete ··· 43 42 ${c('green', 'clear')} Clear all tasks 44 43 ${c('green', 'stats')} Show statistics 45 44 ${c('green', 'help')} Show this help 46 - ${c('green', 'quit')} Exit the app 47 - `; 45 + ${c('green', 'quit')} Exit the app`; 48 46 49 47 class TaskManager { 50 48 constructor() {
+12 -4
src/ant.c
··· 19540 19540 setprop(js, js->scope, js_mkstr(js, bindings[i].local_name, bindings[i].local_len), ns); 19541 19541 } else if (vtype(ns) == T_OBJ) { 19542 19542 jsoff_t prop_off = lkp(js, ns, bindings[i].import_name, bindings[i].import_len); 19543 - jsval_t imported_val = prop_off != 0 ? resolveprop(js, mkval(T_PROP, prop_off)) : js_mkundef(); 19543 + if (prop_off == 0) return js_mkerr_typed( 19544 + js, JS_ERR_SYNTAX, "The requested module does not provide an export named '%.*s'", 19545 + (int)bindings[i].import_len, bindings[i].import_name 19546 + ); 19547 + jsval_t imported_val = resolveprop(js, mkval(T_PROP, prop_off)); 19544 19548 setprop(js, js->scope, js_mkstr(js, bindings[i].local_name, bindings[i].local_len), imported_val); 19545 - } else setprop(js, js->scope, js_mkstr(js, bindings[i].local_name, bindings[i].local_len), js_mkundef()); 19549 + } else return js_mkerr_typed(js, JS_ERR_SYNTAX, "Cannot use named imports from non-object module"); 19546 19550 } 19547 19551 19548 19552 return js_mkundef(); ··· 19639 19643 19640 19644 for (int i = 0; i < binding_count; i++) { 19641 19645 jsoff_t prop_off = lkp(js, ns, bindings[i].import_name, bindings[i].import_len); 19642 - jsval_t imported_val = prop_off != 0 ? resolveprop(js, mkval(T_PROP, prop_off)) : js_mkundef(); 19646 + if (prop_off == 0) return js_mkerr_typed( 19647 + js, JS_ERR_SYNTAX, "The requested module does not provide an export named '%.*s'", 19648 + (int)bindings[i].import_len, bindings[i].import_name 19649 + ); 19650 + jsval_t imported_val = resolveprop(js, mkval(T_PROP, prop_off)); 19643 19651 setprop(js, js->scope, js_mkstr(js, bindings[i].local_name, bindings[i].local_len), imported_val); 19644 19652 } 19645 19653 19646 19654 return js_mkundef(); 19647 19655 } 19648 19656 19649 - return js_mkerr(js, "Invalid import statement"); 19657 + return js_mkerr_typed(js, JS_ERR_SYNTAX, "Invalid import statement"); 19650 19658 } 19651 19659 19652 19660 static jsval_t js_export_stmt(struct js *js) {