[Pas2js] '&' Prefix support
warley camargo
warleyalex at yahoo.com.br
Mon May 14 17:17:26 CEST 2018
Let's say in your application, move your cursor beyond the . (period character)
after the TJSUint8Array statement, and press Ctrl+Space. The Code Completion window appears.
Locate the "of" method. Uh... there's an ugly "_of" undercore method, hit ENTER your code will
be completed to:
-------------------------
var
compressed_UInt8Array: TJSUint8Array;
begin
compressed_UInt8Array := TJSUint8Array._of(1,2,3);
---------------------------
Now, try putting the "&" prefix rather than "_" prefix to all indentifiers declared in the JS.pas unit,
e.g.
TJSUint8Array = class external name 'Uint8Array' (TJSTypedArray)
private
{...}
public
{...}
class function &of(aValue : jsValue) : TJSUInt8Array; varargs;external name 'of';
end;
TJSPromise = class external name 'Promise'
{...}
function &then (onAccepted : TJSPromiseResolver) : TJSPromise; external name 'then';
function catch (onRejected : TJSPromiseResolver) : TJSPromise;
function &finally(value : TJSPromiseFinallyHandler): TJSPromise;
end;
The consequence is that you should see the "correct identifier" when the code completion
apperars, when you hit ENTER, you've got the code completed with the ugly "&of" method.
Pas2JS compiler, could do some black magic, at compile-time evaluations, to support for
the ‘&’ escape prefix to allow using reserved words as identifiers.
I think it's a good practice to prefix all Pascal identifies with an & prefix,
usually declared in external classes, so the pas2js compiler can correctly compile the code,
it won't get name conflict, just because have already evaluated the identifier, for instance in:
compressed_UInt8Array := TJSUint8Array.of(1,2,3);
// or
defer
.then(@_doTask1)
.then(@_doTask2)
.then(@_doTask3);
More information about the Pas2js
mailing list