|
1 | | -- nicholas's bug report |
| 1 | +- should allow vips_image ++ Image |
2 | 2 |
|
3 | | -- lcomps leave stray unreffed symbols in "list unresolved" |
4 | | - |
5 | | - Image_transform_item.Resize_item.Size_within_item.action.within ($SAVEDIR/start/Image.def:509) refers to undefined symbol h |
6 | | - Image_transform_item.Resize_item.Size_within_item.action.within ($SAVEDIR/start/Image.def:509) refers to undefined symbol w |
7 | | - |
8 | | -- rework pattern matching in lcomps |
9 | | - |
10 | | -- what does the programming window do for multiple defs? |
11 | | - |
12 | | - probably need to follow next_def and concatenate them all |
13 | | - |
14 | | -- dir should hide $$vars |
15 | | - |
16 | | -- programming window is showing generated syms, like $$pattern_lhs0? |
17 | | - |
18 | | -- ban patterns in class parameters |
19 | | - |
20 | | - or could we allow multiple class defs? |
21 | | - |
22 | | - Fred (Image x) = class { ... }; |
23 | | - |
24 | | - probably only useful for trivial classes |
25 | | - |
26 | | -- what about |
27 | | - |
28 | | - fred (list x) = ...; |
29 | | - fred (complex x) = ...; |
30 | | - |
31 | | - ie. allow names of builtin types as well as class names |
32 | | - |
33 | | - maybe: |
| 3 | +- remove remove prefs workspace stuff? |
34 | 4 |
|
35 | | - fred (is_list x) = ...; |
| 5 | + things like max heap size should be settable ... maybe pres are useful? |
36 | 6 |
|
37 | | - ie. a predicate before the arg, as well as a class name? |
| 7 | +- add multiple definitions, finish function argument destructuring |
38 | 8 |
|
39 | | -- do we allow eg. |
| 9 | + sym has a field for "next definition", initially NULL |
40 | 10 |
|
41 | | - fred [a, b ..] = a + b; |
| 11 | +` add_defining looks for an existing sym with this name, if it finds |
| 12 | + one, add a new sym called "{name}-$$4" or whatever |
42 | 13 |
|
43 | | - equivalent to |
| 14 | + chase to the end of "next definition" on the existing sym, append our |
| 15 | + new sym |
44 | 16 |
|
45 | | - fred a:b:x = a + b; |
| 17 | + during compile, generate code like |
46 | 18 |
|
| 19 | + fred a b c |
| 20 | + = destructured_fred, args_match |
| 21 | + = fred-$$1 a b c |
| 22 | + { |
| 23 | + destructured_fred = rhs of fred |
| 24 | + args_match = a_matches && b_matches && c_matches |
| 25 | + } |
47 | 26 |
|
| 27 | + if a func has many RHS and the last RHS uses destrucuring, generate a |
| 28 | + final def with |
48 | 29 |
|
49 | | -- remove remove prefs workspace stuff? |
| 30 | + fred a b c |
| 31 | + = error "no def of fred matches args a b c"; |
50 | 32 |
|
51 | | - things like max heap size should be settable ... maybe pres are useful? |
| 33 | + - error if more than one def of fred has no destructuring |
| 34 | + - error if defs don't all have the same number of args |
| 35 | + - error if a def with no destructuring isn't the last def |
52 | 36 |
|
53 | 37 | - try < > in the image titlebar |
54 | 38 |
|
|
0 commit comments