X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/b6961e537b5468dc0458808fdacba4a3291e1d48..bf45251b6ef1230ffdbd79319b9c4a60c5ae6913:/todo.txt diff --git a/todo.txt b/todo.txt index 512e3c2..dd16598 100644 --- a/todo.txt +++ b/todo.txt @@ -1,7 +1,81 @@ +lol unicode identifier support (native and \u) support unions (right now 0-1 fields parsed as struct) -\\\n escapes in strings aren't handled in the console look into what String is, and whether to bridge it +think about bridging NSNumber with Number prototype some JS callbacks don't use exception pointers at all... a newline needs to not be allowed after a unary * finish implementing default xml namespace statement +encode newlines in history for later replay (psql uses ^A) + +consider replacing regex literals with constructors + https://bugzilla.mozilla.org/show_bug.cgi?id=98409 +numerification needs to use specific precision values + https://bugzilla.mozilla.org/show_bug.cgi?id=5856 +consider a mode where unicode string content is saved + https://bugzilla.mozilla.org/show_bug.cgi?id=274152 + +NSDictionaries that have NSNumber keys don't getProperty +errors in another process aren't displayed; to fix this, parse errors should get converted to exceptions and thrown +CYPoolTry/Catch now carefully save the exception after it /no longer needs the exception/... uhh... wtf? +throw CYJSError should probably be replaced with CYThrow() across the board +figure out what to do about global context refs: I really really want to retain the bastards +the concept of NULL pooling is entirely incorrect and sad... bad... evil... need to work on this... really +NSArray's .toString() and .toLocaleString() fail hard, as Array.prototype.to*String are Array-specific +applyOnMainThread, when done at console, loops the cyonifier +special work needs to be done to correctly handle the "arguments" symbol: Declare("arguments", ...Special) +at the Program level I seem to be eating away all of the var statements +function pointers are ?; note that blocks are currently block_P = '?' +I should probably attempt to use the auto_ flag somehow to not do contexts_ push when compiling +Object_callAsFunction_toCYON should be implemented + +[NSString stringWithString:""] crashes, on linux, not on mac +GS #defines should be _finline + +replace procmod g+s with gdb's macosx_get_task_for_pid_rights +non-local return prologue is not being Replace()d: multipass compiler! +interpretation of documentation comments should be compiler-only and off by default +don't ever generate $ CYWith, in particular for CYLet... use CYFunctionExpression + +semi-colin insertion warings should mark after the previous token, not on the current one: makes a /lot/ more sense +new for pools should take a reference, not a pointer + +output errors during Trampoline to some kind of log file + +cy# ["" -> {message:"'undefined' is not an object (evaluating '\"\".$cyi.isa')",line:1,sourceId:30583072,name:"TypeError"} + now: cy# ["" -> *** _assert(false):Console.cpp(214):ParseExpression [errno=12] +there is a reinterpret_cast<> that I replaced with an old-style cast on the output of dladdr + +why do I never deallocate ffi closures? + +cy# (function() { for each (var index in [1, 3]) system.print(index); })() +(function(){with({$cys:[1,3],$cyt:undefined})for($cyt in $cys){index=$cys[$cyt];system.print(index)}})() +1 +3 +cy# (function() { var index; for each (var index in [1, 3]) system.print(index); })() +(function(){var e;;with({$cys:[1,3],$cyt:undefined})for($cyt in $cys){e=$cys[$cyt];system.print(e)}})() + +make a reference holder for namearrays +rename names to accumulator when it is a name accumulator, and retake names for subset +I believe calls to mutableCopy will leak memory +consider pointerTo instead of toPointer +store the last exception in a variable +should WebUndefined be @undefined? + +if something is a function, it should be output differently +evaluate usages of CYTry in ObjectiveC/Library for CYObjectiveTry +verify name targets of "incorrect number of arguments to" +maybe support __objc_{yes,no} intrinisic primitives + +support new objective-c subscript notation: + id key = ...; + id value = object[key]; + -> id value = [object objectForKeyedSubscript:key]; + object[key] = newValue; + -> [object setObject:newValue forKeyedSubscript:key]; +and: + NSUInteger idx = ...; + id value = object[idx]; + -> id value = [object objectAtIndexedSubscript:idx]; + object[idx] = newValue; + -> [object setObject:newValue atIndexedSubscript:idx];