D to Javascript converter (a hacked up dmd)
Adam D. Ruppe
destructionator at gmail.com
Wed Feb 29 07:19:42 PST 2012
On Wednesday, 29 February 2012 at 09:27:53 UTC, Robert Clipsham
wrote:
> Pretty impressive! It did spit out 86 warnings though...
A lot of it is probably the same kind of thing my
"linker" does. (I call it that, but it doesn't actually
*link* anything.)
I get down to 6 KB running it through that. Though, they
still cut it in half and there's some code rewriting in there
too. Not bad.
Fun fact btw: dmd -inline works on this thing too. Though,
inline makes a bunch of stuff in the form of (var a = 10, etc)
which is illegal in JS (and D, actually).
To hack that so it worked, I simply left the var out, so it
uses an implicit global variable. The D mangled names are unique
so I think it will work in practice, but still, blah.
Regardless, inlining functions is pretty cool. Might make
things bigger however, so idk if it is actually worth it.
> * JSC_WRONG_ARGUMENT_COUNT
> * JSC_REDECLARED_VARIABLE
I threw it a bone to silence some of these,
but much of it isn't actually wrong so meh.
But these:
> * JSC_USED_GLOBAL_THIS
> * JSC_NOT_A_CONSTRUCTOR
don't help at all. Even if I add the /**@constructor*/,
it just spits even more unhelpful warnings.
http://arsdnet.net/dtojs/test2.js
is where I put it. (the size there is tiny because I left
a lot of dead code in there; I just put a return; before my
other test code.)
JSC_TYPE_MISMATCH: actual parameter 1 of __d_6Object.call does
not match formal parameter
found : __d_6microd6MyBase
required: (__d_6Object|null|undefined) at line 2 character 17 in
test2.js__d_6Object.call(this, null); ^
JSC_INEXISTENT_PROPERTY: Property __d_vtbl never defined on
__d_6microd6MyBase at line 3 character 0 in
test2.jsthis.__d_vtbl.length = 3;
I call the Object initalizer (this isn't a constructor in D. The
real D compiler would just blit the Object.init to get the memory
started. The D constructor is passed as an argument to be called
at the end.) to set up that vtable.
So, I know its all right, but it is going to warn anyway.
> Good work at getting std.algorithm (mostly) working! :D
Thanks!
More information about the Digitalmars-d-announce
mailing list