]> git.saurik.com Git - cycript.git/blame - todo.txt
Reorganize grammar to match the ECMAScript 6 spec.
[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
d3760804 5some JS callbacks don't use exception pointers at all...
b92ceddb
JF
6a newline needs to not be allowed after a unary *
7finish implementing default xml namespace statement
6ff42d7b 8encode newlines in history for later replay (psql uses ^A)
0fe90592 9
b1bff474
JF
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
0fe90592 16
0226d428 17NSDictionaries that have NSNumber keys don't getProperty
cb079cbb
JF
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
bc60fb46 20figure out what to do about global context refs: I really really want to retain the bastards
2fd4c9a9 21the concept of NULL pooling is entirely incorrect and sad... bad... evil... need to work on this... really
5a6a8fff 22NSArray's .toString() and .toLocaleString() fail hard, as Array.prototype.to*String are Array-specific
9561f209 23applyOnMainThread, when done at console, loops the cyonifier
a86e34d0 24special work needs to be done to correctly handle the "arguments" symbol: Declare("arguments", ...Special)
2c81c6df 25at the Program level I seem to be eating away all of the var statements
7e5391fd 26I should probably attempt to use the auto_ flag somehow to not do contexts_ push when compiling
4cb8aa43 27Object_callAsFunction_toCYON should be implemented
13315b92
JF
28
29[NSString stringWithString:""] crashes, on linux, not on mac
e360efbb 30GS #defines should be _finline
eed4f174
JF
31
32replace procmod g+s with gdb's macosx_get_task_for_pid_rights
e360efbb
JF
33non-local return prologue is not being Replace()d: multipass compiler!
34interpretation of documentation comments should be compiler-only and off by default
71e8b682 35
1b2613d3 36semi-colon insertion warnings should mark after the previous token, not on the current one: makes a /lot/ more sense
6e51aaf8
JF
37
38output errors during Trampoline to some kind of log file
6aeaa7d2 39
6aeaa7d2
JF
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
6aeaa7d2
JF
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
6aeaa7d2 52verify name targets of "incorrect number of arguments to"
eef35e84
JF
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];
1b2613d3
JF
67
68use JSObjectMakeError to build exception objects
69replace cy$getProperty's return value with JSValueRef
1b2613d3
JF
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);
203b5fc4
JF
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])
1b2613d3
JF
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
e23a9070
JF
85[[self description] cy$toCYON:] seems like a poor implementation of toCYON
86implement cy$toJSON:inContext: for NSDictionary and NSArray
203b5fc4 87probably should use toll-free bridging and CF to check for boolean-ness
1b2613d3
JF
88
89the non-local transform used for let is ludicrous... :( :(
90
91cy# function q(e) { }
92function q(e){var e}
93
1b2613d3
JF
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
d3b63265 102CYDriver uses std::istream, but it should use std::streambuf
fbc17268
JF
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
21d5f610 108
56e02e5b
JF
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
d10cbac7 111
203b5fc4
JF
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
d10cbac7
JF
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
203b5fc4
JF
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