- char and string literals
- setlength() for string
- property read accessor var and function
- property write accessor var and function
- property with param list
- property of type array
- class property
- convert "a div b" to "Math.floor(a / b)"
- and, or, xor, not: logical or bitwise
- enum type with values and names
- enums: option to write numbers instead of variables
- enums: ord(), low(), high(), pred(), succ()
- type cast number to enum
- set of enum
- include(), exclude()
- assign := for sets
- constant set: enums, enum vars, ranges
- set operators +, -, *, ><, =, <>, >=, <=
- set in-operator
- sets: low(), high()
- assign nil to dyn array
git-svn-id: trunk@35417 -
pscanner:
- fixed reading ^a char literals
pasresolver:
- pred(), succ()
- option for class properties non static
- type cast integer to enum
- <= and >= for sets
- property of type array
- low(), high() for sets
- call constructor in class method
- assign nil to dynamic array
- resolve const expression
git-svn-id: trunk@35415 -
jswriter:
less duplicate brackets
pasresolver:
break, continue, option to fix case of overrides
pas2js:
procedure args default values,
try..except,
try..except..on..else,
raise, raise E,
class vars,
call class methods,
break,
continue,
rename name conflicts with JS identifiers: apply, call, null, ...
git-svn-id: trunk@35402 -
jswriter: more compact try..catch
pasresolver:
- mark function calls without ()
- "with type do ;"
- constructor call store TPasType
- mark if a constructor call creates a new
instance or is a normal call
- same for destructor
- fixed checking assign operator types
- more tests
fppas2js:
- convert implicit calls in Pascal to explicit calls in JS
- built in procedure "exit" and "exit(value)"
- if loopvar is used afterwards append if($loopend>i)i--;
- classes
- declare using createClass, needs rtl magic
- constructor
- destructor
- vars
- ancestor
- virtual, override, abstract
- "is" operator
- "as" operator
- call inherited "inherited;", "inherited funcname;"
- dynamic arrays
- init as "arr = []"
- SetLength(arr,newlength)
- length(arr)
- try..except, on .. do, raise
- insert default values in calls
git-svn-id: trunk@35383 -
Note 1: using an older AS might fail anyway if the amount of sections is too high (like in packages\odata\src\sharepoint.pp)
Note 2: it might be an idea to keep track of the created sections in the asmlists and only enable the option if *really* necessary (like with the internal COFF output generator), though this might lead to false positives due to multiple sections with the same name (since I'd prefer to use the KISS principle only a counter would be used)
git-svn-id: trunk@35381 -
Note: such files can be linked GNU ld only starting from 2.25; then again the older versions would fail anyway as they'd complain about a too high section count...
git-svn-id: trunk@35380 -
Note: the field names of tcoffbigobjheader and coffbigobjsymbol are inspired from the field names of the structs declared in LLVM
git-svn-id: trunk@35379 -
Commit message:
[PATCH] More consistent RTTI (also better performance) for classic
objects (reference to initrtti from fullrtti).
git-svn-id: trunk@35376 -
Note: I'm not yet really happy with both AT_DATA_FORCEINDIRECT and AT_DATA_NOINDIRECT; maybe I should replace them with flags or something like that...
git-svn-id: trunk@35366 -