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