]> git.saurik.com Git - cycript.git/blame - todo.txt
Avoid infinite recursion while CYONifying objects.
[cycript.git] / todo.txt
CommitLineData
beadf464 1lol
e0dc20ec 2unicode identifier support (native and \u)
d63c39cc 3support unions (right now 0-1 fields parsed as struct)
365abb0a 4look into what String is, and whether to bridge it
0226d428 5think about bridging NSNumber with Number prototype
d3760804 6some JS callbacks don't use exception pointers at all...
b92ceddb
JF
7a newline needs to not be allowed after a unary *
8finish implementing default xml namespace statement
6ff42d7b 9encode newlines in history for later replay (psql uses ^A)
0fe90592 10
b1bff474
JF
11consider replacing regex literals with constructors
12 https://bugzilla.mozilla.org/show_bug.cgi?id=98409
13numerification needs to use specific precision values
14 https://bugzilla.mozilla.org/show_bug.cgi?id=5856
15consider a mode where unicode string content is saved
16 https://bugzilla.mozilla.org/show_bug.cgi?id=274152
0fe90592 17
0226d428 18NSDictionaries that have NSNumber keys don't getProperty
0fe90592 19errors in another process aren't displayed; to fix this, parse errors should get converted to exceptions and thrown
cb079cbb
JF
20CYPoolTry/Catch now carefully save the exception after it /no longer needs the exception/... uhh... wtf?
21throw CYJSError should probably be replaced with CYThrow() across the board
bc60fb46 22figure out what to do about global context refs: I really really want to retain the bastards
2fd4c9a9 23the concept of NULL pooling is entirely incorrect and sad... bad... evil... need to work on this... really
5a6a8fff 24NSArray's .toString() and .toLocaleString() fail hard, as Array.prototype.to*String are Array-specific
9561f209 25applyOnMainThread, when done at console, loops the cyonifier
a86e34d0 26special work needs to be done to correctly handle the "arguments" symbol: Declare("arguments", ...Special)
2c81c6df 27at the Program level I seem to be eating away all of the var statements
ecf94af8 28function pointers are ?; note that blocks are currently block_P = '?'
7e5391fd 29I should probably attempt to use the auto_ flag somehow to not do contexts_ push when compiling
4cb8aa43 30Object_callAsFunction_toCYON should be implemented
13315b92
JF
31
32[NSString stringWithString:""] crashes, on linux, not on mac
e360efbb 33GS #defines should be _finline
eed4f174
JF
34
35replace procmod g+s with gdb's macosx_get_task_for_pid_rights
e360efbb
JF
36non-local return prologue is not being Replace()d: multipass compiler!
37interpretation of documentation comments should be compiler-only and off by default
047355d5 38don't ever generate $ CYWith, in particular for CYLet... use CYFunctionExpression
71e8b682 39
1b2613d3 40semi-colon insertion warnings should mark after the previous token, not on the current one: makes a /lot/ more sense
71e8b682 41new for pools should take a reference, not a pointer
6e51aaf8
JF
42
43output errors during Trampoline to some kind of log file
6aeaa7d2 44
6aeaa7d2
JF
45there is a reinterpret_cast<> that I replaced with an old-style cast on the output of dladdr
46
47why do I never deallocate ffi closures?
48
6aeaa7d2
JF
49make a reference holder for namearrays
50rename names to accumulator when it is a name accumulator, and retake names for subset
51I believe calls to mutableCopy will leak memory
52consider pointerTo instead of toPointer
53store the last exception in a variable
54should WebUndefined be @undefined?
55
56if something is a function, it should be output differently
57evaluate usages of CYTry in ObjectiveC/Library for CYObjectiveTry
58verify name targets of "incorrect number of arguments to"
eef35e84
JF
59maybe support __objc_{yes,no} intrinisic primitives
60
61support new objective-c subscript notation:
62 id key = ...;
63 id value = object[key];
64 -> id value = [object objectForKeyedSubscript:key];
65 object[key] = newValue;
66 -> [object setObject:newValue forKeyedSubscript:key];
67and:
68 NSUInteger idx = ...;
69 id value = object[idx];
70 -> id value = [object objectAtIndexedSubscript:idx];
71 object[idx] = newValue;
72 -> [object setObject:newValue atIndexedSubscript:idx];
1b2613d3
JF
73
74use JSObjectMakeError to build exception objects
75replace cy$getProperty's return value with JSValueRef
76flatten compound expressions made up of compound expressions
77
78cy# {{5,6};6;{7;{8;5}}}
79got: {5,6;6;{7;8,5}}
80wanted: 5,6,6,7,8,5
81
82cy# for each (var i = 9 in [1, 2]) system.print(i);
83got: {i=9;(function(e,t){for(t in e){i=e[t];system.print(i)}})([1,2])}
84wanted: i=9,function(e,t){for(t in e)i=e[t],system.print(i)}([1,2])
85
86with is being translated in a manner that doesn't handle variables
87cy# function b() { for each (var t in a) {} }
88function b(){var e,t,n;with({t:a,n:undefined})for(n in t)e=t[n]}
89
e23a9070
JF
90[[self description] cy$toCYON:] seems like a poor implementation of toCYON
91implement cy$toJSON:inContext: for NSDictionary and NSArray
1b2613d3
JF
92
93the non-local transform used for let is ludicrous... :( :(
94
95cy# function q(e) { }
96function q(e){var e}
97
98CYCompound needs to be able to replace itself away without causing multiple Replace
99fat arrows are currently output with too much verbosity
100
101CYJSString <- wrap JavaScript strings and provide them back to Objective-C
102ruby blocks need to return their last thing
103Objective-C strings might should be cyonified using double-quotes
104
105apparently you can have random escape sequences in strings, like \!
106cycript -p with processes that have spaces doesn't work
d3b63265 107CYDriver uses std::istream, but it should use std::streambuf
74296173 108the mechanism I used to autodetect readline is horrible: use autoconf
fbc17268
JF
109
110constant flags on types are encoded using something horribly wrong
111http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html
112http://gcc.gnu.org/onlinedocs/gcc/Type-encoding.html
113http://gcc.gnu.org/onlinedocs/gcc/Legacy-type-encoding.html
21d5f610
JF
114
115using .withName from the grammar is a horrible hack that makes other uses impossible
56e02e5b
JF
116
117blocks should be allowed to return blocks/functions: ModifiedType needs to go
118 instead, TypedParameterList should be folded into a TypeModifier with the other types
d10cbac7
JF
119
120LT_INIT([pic-only]) doesn't work, because the default is only used if unset, and it has a default setting...
121even when using --pic-only, libtool insists on building every file twice... with the same fucking arguments