]> git.saurik.com Git - cycript.git/blob - todo.txt
d156888e8741d3dbfa46c551dbb73f8538a129d6
[cycript.git] / todo.txt
1 lol
2 unicode identifier support (native and \u)
3 support unions (right now 0-1 fields parsed as struct)
4 look into what String is, and whether to bridge it
5 some JS callbacks don't use exception pointers at all...
6 a newline needs to not be allowed after a unary *
7 finish implementing default xml namespace statement
8 encode newlines in history for later replay (psql uses ^A)
9
10 consider replacing regex literals with constructors
11 https://bugzilla.mozilla.org/show_bug.cgi?id=98409
12 numerification needs to use specific precision values
13 https://bugzilla.mozilla.org/show_bug.cgi?id=5856
14 consider a mode where unicode string content is saved
15 https://bugzilla.mozilla.org/show_bug.cgi?id=274152
16
17 NSDictionaries that have NSNumber keys don't getProperty
18 CYPoolTry/Catch now carefully save the exception after it /no longer needs the exception/... uhh... wtf?
19 throw CYJSError should probably be replaced with CYThrow() across the board
20 figure out what to do about global context refs: I really really want to retain the bastards
21 the concept of NULL pooling is entirely incorrect and sad... bad... evil... need to work on this... really
22 NSArray's .toString() and .toLocaleString() fail hard, as Array.prototype.to*String are Array-specific
23 applyOnMainThread, when done at console, loops the cyonifier
24 special work needs to be done to correctly handle the "arguments" symbol: Declare("arguments", ...Special)
25 at the Program level I seem to be eating away all of the var statements
26 I should probably attempt to use the auto_ flag somehow to not do contexts_ push when compiling
27 Object_callAsFunction_toCYON should be implemented
28
29 [NSString stringWithString:""] crashes, on linux, not on mac
30 GS #defines should be _finline
31
32 replace procmod g+s with gdb's macosx_get_task_for_pid_rights
33 non-local return prologue is not being Replace()d: multipass compiler!
34 interpretation of documentation comments should be compiler-only and off by default
35
36 semi-colon insertion warnings should mark after the previous token, not on the current one: makes a /lot/ more sense
37
38 output errors during Trampoline to some kind of log file
39
40 there is a reinterpret_cast<> that I replaced with an old-style cast on the output of dladdr
41
42 why do I never deallocate ffi closures?
43
44 make a reference holder for namearrays
45 rename names to accumulator when it is a name accumulator, and retake names for subset
46 I believe calls to mutableCopy will leak memory
47 consider pointerTo instead of toPointer
48 store the last exception in a variable
49 should WebUndefined be @undefined?
50
51 if something is a function, it should be output differently
52 verify name targets of "incorrect number of arguments to"
53 maybe support __objc_{yes,no} intrinisic primitives
54
55 support new objective-c subscript notation:
56 id key = ...;
57 id value = object[key];
58 -> id value = [object objectForKeyedSubscript:key];
59 object[key] = newValue;
60 -> [object setObject:newValue forKeyedSubscript:key];
61 and:
62 NSUInteger idx = ...;
63 id value = object[idx];
64 -> id value = [object objectAtIndexedSubscript:idx];
65 object[idx] = newValue;
66 -> [object setObject:newValue atIndexedSubscript:idx];
67
68 use JSObjectMakeError to build exception objects
69 replace cy$getProperty's return value with JSValueRef
70
71 cy# {{5,6};6;{7;{8;5}}}
72 got: {5,6;6;{7;8,5}}
73 wanted: 5,6,6,7,8,5
74
75 cy# for each (var i = 9 in [1, 2]) system.print(i);
76 cy= {i=9;(function($cys,$cyt){for($cyt in $cys){i=$cys[$cyt];system.print(i)}})([1,2])}
77 cy# {i=9;(function($cys,$cyt){for($cyt in $cys){i=$cys[$cyt];system.print(i)}})([1,2])}
78 cy= i=9,function(e,t){var e,t;for(t in e)i=e[t],system.print(i)}([1,2])
79 wanted: i=9,function(e,t){for(t in e)i=e[t],system.print(i)}([1,2])
80
81 with is being translated in a manner that doesn't handle variables
82 cy# function b() { for each (var t in a) {} }
83 function b(){var e,t,n;with({t:a,n:undefined})for(n in t)e=t[n]}
84
85 [[self description] cy$toCYON:] seems like a poor implementation of toCYON
86 implement cy$toJSON:inContext: for NSDictionary and NSArray
87 probably should use toll-free bridging and CF to check for boolean-ness
88
89 the non-local transform used for let is ludicrous... :( :(
90
91 cy# function q(e) { }
92 function q(e){var e}
93
94 fat arrows are currently output with too much verbosity
95
96 CYJSString <- wrap JavaScript strings and provide them back to Objective-C
97 ruby blocks need to return their last thing
98 Objective-C strings might should be cyonified using double-quotes
99
100 apparently you can have random escape sequences in strings, like \!
101 cycript -p with processes that have spaces doesn't work
102 CYDriver uses std::istream, but it should use std::streambuf
103
104 constant flags on types are encoded using something horribly wrong
105 http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html
106 http://gcc.gnu.org/onlinedocs/gcc/Type-encoding.html
107 http://gcc.gnu.org/onlinedocs/gcc/Legacy-type-encoding.html
108
109 blocks should be allowed to return blocks/functions: ModifiedType needs to go
110 instead, TypedParameterList should be folded into a TypeModifier with the other types
111
112 look up identifiers in the bridge for highlighting (and remove special case tokens)
113
114 when ?bypass, you are unable to send multi-line commands
115 the current line-extension detector doesn't handle multi-line tokens
116
117 what the hell did I mean by (*name - 10) in the sig/parse error messages?
118 syntax highlight embedded components of strings and regular expressions
119 replace the lex-assisted syntax highlighter with a grammar-assisted one
120 tell brian that alt-minus-3 and alt-minus-(alt)-3 are somehow different
121 the lexer turns "@encodenew" into "@encode""new"... word breaks, anyone?
122 .prototype of a Class returns "undefined", which is very confusing
123
124 !! :( if you have a regular expression followed by an alphabetic operator
125 then the output engine needs to put a space character between them
126
127 I should support arbitrary objects as the keys for NSDictionary literals
128 add a special syntax highlight color for message selector parts
129 there are numerous paths through Console that fail to free(line)
130
131 if the grammar sanity checks fail, they don't delete the grammar output
132
133 cy# a.constructor.class.$cya().valueOf()
134 0x1619ee64
135 ^ this is different EVERY TIME?!?
136
137 MPMusicPlayerController.iPodMusicPlayer.shuffleMode is either id /or/ int
138
139 NSObject instanceof Type //<- should this be true?
140
141 I probably don't need to override SHELL to _BASH anymore
142
143 LT_INIT([pic-only]) doesn't work, because the default is only used if unset, and it has a default setting...
144 even when using --pic-only, libtool insists on building every file twice... with the same fucking arguments
145
146 JSContextGroupSetExecutionTimeLimit
147
148 cy# throw
149 cy> 5
150 cy> ;
151 cy> ^C
152
153 if you use "arguments", you have to protect it if you attempt to use it inside of a generated function; example: array comprehension over one fails
154
155 support Nil in addition to nil
156
157 1.7976931348623157e+308 == DBL_MAX
158
159 - } else
160 - return CYCastPointer<SEL>(context, value);
161 + } else {
162 + // XXX: should call .valueOf and, if a number, cast as a pointer
163 + CYPool pool;
164 + return sel_registerName(CYPoolCString(pool, context, value));
165 + }
166
167 cy# @[].concat([3,4])
168 [@[],3,4]
169 cy# [].concat([3,4])
170 [3,4]
171
172 @synchronized, maybe @autorelease
173
174 support leaving off the block return type if the block has no return value; statements
175
176 cy# var a = 4; {let a = 3; }; a
177 cy= a=4;a=3;a
178
179 abstract method_copyMethodList to something more reasonable
180
181 cy# "\x00"
182 cy= "\x00"
183 wanted: "\0"
184 (does JS really support \0? node seems to think so)
185
186 cy# ({$a:5,$b:3}).$<TAB> <- fails to tab complete to a list
187
188 auto-complete partial string keys
189
190 cy# @encode(const char *)(@encode(void *(*)(const char *))(dlsym(RTLD_DEFAULT, "strdup")))
191 "[object Pointer]"
192
193 the error regime when using MS.hookMessage destroys Objective-C exceptions that are thrown
194
195 the restrict keyword should be supported in type specifiers
196
197
198 support (void) argument lists
199 typedef int;
200 typedef should be creating local variables