Commit Graph

50676 Commits

Author SHA1 Message Date
svenbarth
8024fcd7ec * if an operator overload in a structured type is invalid print an error only for the declaration and not the implementation as well
This fixes Mantis #31634 as far as I see it useful to; anything further would probably require extension of the message generation system by a context or such so that the compiler could write "Error in TFoo<Integer>: ..." instead of merely "Error: ..." or something like that.
No test added due to the nature of the bug.

git-svn-id: trunk@35748 -
2017-04-07 13:24:58 +00:00
nickysn
199574c7c6 * updated the compiler source files list in ppc8086.lpi
git-svn-id: trunk@35747 -
2017-04-07 12:40:20 +00:00
yury
ea61dee00b * ppudump: Mark objects with abstract methods in the JSON/XML output.
* pas2jni: Properly handle inherited classes when an ancestor has abstract methods.

git-svn-id: trunk@35746 -
2017-04-07 09:53:54 +00:00
nickysn
9093047a7a * fixed a bug in the i8086 32-bit rol/ror code generation method rm_fast_386
git-svn-id: trunk@35745 -
2017-04-06 15:55:43 +00:00
nickysn
1560f20e7f + implemented other 32-bit rol/ror by const methods for i8086 and added a
(hopefully) reasonable selection for them for all consts between 1 and 31

git-svn-id: trunk@35744 -
2017-04-06 15:41:39 +00:00
nickysn
0fd860d9e7 * refactored the code generation for 32-bit rol/ror by const for i8086, so it
uses less code repetition and allow choosing various methods (some of which
  will be implemented later and selected, according to the cpu and optimization
  settings (size vs speed))

git-svn-id: trunk@35743 -
2017-04-06 13:59:53 +00:00
Mattias Gaertner
c94df5db2a avl_tree: fixed using fNodeMgr, made Remove and RemovePointer functions to return true if node was found
git-svn-id: trunk@35742 -
2017-04-06 10:35:46 +00:00
nickysn
d5e33cce7f * generate better i8086 code for ror32 by 1 and 17
git-svn-id: trunk@35741 -
2017-04-05 14:16:00 +00:00
maciej-izak
ff28d5c85d * Fix usage of class operators in generics types. If we have generic type declaration/implementation then constraint in comparison to not specialized generic is not "exact" nor "incompatible". Mantis #30534.
git-svn-id: trunk@35740 -
2017-04-05 13:47:21 +00:00
maciej-izak
e4565378db * Allow for "record constraint" in Delphi mode more types like: ordinal, float, classical objects, enumerations (instead of just record). Delphi compatibility. Fix for mantis #24073.
git-svn-id: trunk@35739 -
2017-04-05 13:12:30 +00:00
Mattias Gaertner
07c98e816f pastojs: external class bracket accessor
git-svn-id: trunk@35738 -
2017-04-05 07:35:52 +00:00
Mattias Gaertner
972b24286d fcl-passrc: added test for unit of only external stuff does not generate a hint
git-svn-id: trunk@35737 -
2017-04-05 07:35:14 +00:00
Mattias Gaertner
4bce2e2b4d pastojs: remove empty $impl
git-svn-id: trunk@35736 -
2017-04-04 23:00:14 +00:00
Mattias Gaertner
2afaeb60de fcl-passrc: nicer error message when calling property proc var with wrong args
git-svn-id: trunk@35735 -
2017-04-04 22:59:33 +00:00
nickysn
321876252b + enabled the rol/ror intrinsic on i8086
git-svn-id: trunk@35734 -
2017-04-04 22:37:58 +00:00
nickysn
0b1a54f924 * on 16-bit CPUs, avoid the unnecessary 32-bit conversion of the right shl/shr
parameter, when the operation is 32-bit (even when the operation is 32-bit,
  the shift count is only 16-bit on 16-bit CPUs, so using 32-bits is wasting an
  extra register and an extra instruction to initialize it)

git-svn-id: trunk@35733 -
2017-04-04 21:01:20 +00:00
Mattias Gaertner
2810dc5b44 pastojs: class const
git-svn-id: trunk@35732 -
2017-04-04 20:59:00 +00:00
Mattias Gaertner
5c9c8024be fcl-passrc:
pasresolver: class const
  pasuseanalyzer: no hints for abstract method

git-svn-id: trunk@35731 -
2017-04-04 20:58:29 +00:00
nickysn
b957b65ec8 * generate better i8086 code for 64-bit shl/shr, by masking the shift count by 63
git-svn-id: trunk@35730 -
2017-04-04 17:58:00 +00:00
Mattias Gaertner
6bb2dcf350 pastojs: updated error strings
git-svn-id: trunk@35729 -
2017-04-04 17:25:58 +00:00
Mattias Gaertner
58791a0b5c fcl-passrc: fixed checking proc arg base type from different units, fixed scanner eof row, fixed fail test messages
git-svn-id: trunk@35728 -
2017-04-04 17:25:15 +00:00
nickysn
6580dfee39 * generate better i386 code for 64-bit shl/shr, by masking the shift count by
63, instead of comparing it to 64 and branching. Note that, although this
  changes the behaviour of 64-bit shifts by values larger than 64 (when stored
  in a variable), it actually makes them consistent with both the code,
  generated on x86_64, as well as with 64-bit shift by constant on i386 itself.

git-svn-id: trunk@35727 -
2017-04-04 16:28:54 +00:00
nickysn
76cb419241 * use 16-bit 386+ instructions (shld,shrd) for performing fast 32-bit
shl/shr/sar on i8086, in a_op_const_reg, when the target CPU is set to 80386
  or later

git-svn-id: trunk@35726 -
2017-04-04 14:40:29 +00:00
nickysn
0ab4f01668 * implemented fast (loopless) 32-bit shift by constant for 8086 as well
git-svn-id: trunk@35725 -
2017-04-03 21:04:59 +00:00
maciej-izak
8391b73206 * Virtual methods cannot be declared as static (static virtual method has no sense).
+ added tests

git-svn-id: trunk@35724 -
2017-04-03 20:45:52 +00:00
nickysn
0f2ad7b712 * generate faster (i.e. loopless) code for 32-bit shl/shr/sar by const on 186+
git-svn-id: trunk@35723 -
2017-04-03 20:37:21 +00:00
maciej-izak
ee4ae1254f undo accidental commit (r35721) :/
git-svn-id: trunk@35722 -
2017-04-03 17:10:20 +00:00
maciej-izak
b4b87a841c git-svn-id: trunk@35721 - 2017-04-03 17:08:01 +00:00
Mattias Gaertner
e71ac95b69 fcl-passrc: pasuseanalyzer: no hint assigned but never used for out argument
git-svn-id: trunk@35720 -
2017-04-03 15:52:36 +00:00
Mattias Gaertner
dac17860c4 fcl-passrc: pasresolver: when accessing a record member, access the record too
git-svn-id: trunk@35719 -
2017-04-03 15:20:55 +00:00
Mattias Gaertner
457d23a151 fcl-passrc: pasresolver: check proc type or proc var
git-svn-id: trunk@35718 -
2017-04-03 13:01:50 +00:00
maciej-izak
322720236c + added missing dwarf constants: DW_FORM_sec_offset, DW_FORM_exprloc and DW_FORM_flag_present
git-svn-id: trunk@35717 -
2017-04-03 10:42:27 +00:00
Mattias Gaertner
e9791ceffc pas2js: started pass property by reference
git-svn-id: trunk@35716 -
2017-04-03 07:56:29 +00:00
Mattias Gaertner
632b973ed6 fcl-passrc: comments, analyzer option paoKeepPublished
git-svn-id: trunk@35715 -
2017-04-03 07:55:49 +00:00
Mattias Gaertner
bceb016f5f pastojs: added array params to external class 'Array' [integer]:jsvalue, 'Object' [string]:jsvalue
git-svn-id: trunk@35714 -
2017-04-02 18:54:04 +00:00
Mattias Gaertner
d4c801b708 fcl-passrc: pasresolver: allow adding custom arram params
git-svn-id: trunk@35713 -
2017-04-02 18:52:17 +00:00
Mattias Gaertner
fcbfa0899f pastojs: nested proc var
git-svn-id: trunk@35711 -
2017-04-02 11:27:07 +00:00
Mattias Gaertner
f23862e8de fcl-passrc: pasresolver: proc type modifier is nested
git-svn-id: trunk@35710 -
2017-04-02 11:26:25 +00:00
Mattias Gaertner
255870d371 fcl-passrc: pasresolver: fixed searching units recursively
git-svn-id: trunk@35709 -
2017-04-01 20:53:22 +00:00
Mattias Gaertner
4e0fd4de53 fcl-passrc: store access type of accessing default property
git-svn-id: trunk@35708 -
2017-04-01 20:21:39 +00:00
florian
4504648ec1 * initialize maskvalue to fix compilation with -O3+
git-svn-id: trunk@35707 -
2017-04-01 19:03:35 +00:00
michael
cbb5bbbc27 * Patch from Mattias Gaertner: Arrays can be null (test)
git-svn-id: trunk@35706 -
2017-04-01 18:22:59 +00:00
michael
d4d31508c3 * Patch from Mattias Gaertner: Arrays can be null
git-svn-id: trunk@35705 -
2017-04-01 18:22:28 +00:00
michael
ad99d1b015 * Patch from Mattias Gaertner
- function copy(array,start=0,count=max): array
  - procedure insert(item,var array,const position)
  - procedure delete(var array,const start,count)
  - allow type casting array of jsvalue to any array

git-svn-id: trunk@35704 -
2017-04-01 16:00:32 +00:00
michael
9e39442dbc * Fix from Mattias Gaertner for System.Delete() use analyses.
git-svn-id: trunk@35703 -
2017-04-01 15:59:57 +00:00
michael
945b0aa98b * Fix from Mattias Gaertner:
- children of a const record are const too
  - external class instance cannot access static members
  - option to treat open arrays as dynamic arrays
  - made rrfReadable consistent on class types
  - const dynarray param: elements are writable

git-svn-id: trunk@35702 -
2017-04-01 15:59:10 +00:00
joost
3b58c328c7 * Reading the fppkg-settings should not depend on the global
OnGetApplicationName event

git-svn-id: trunk@35701 -
2017-04-01 10:01:29 +00:00
joost
b52d6874d2 * Added more logging on why packages are installed
git-svn-id: trunk@35700 -
2017-03-31 19:49:36 +00:00
joost
20c9a16fa9 * Do not install packages into a repository that does not allow new
packages, also not when they are installed from their original source.

git-svn-id: trunk@35699 -
2017-03-31 19:36:57 +00:00
joost
a3f43a3661 * Try to fix plugins as fast as possible, so that as many packages
are compiled with the plugins

git-svn-id: trunk@35698 -
2017-03-31 18:54:54 +00:00