Commit Graph

2620 Commits

Author SHA1 Message Date
svenbarth
3597696e98 * fix for Mantis #38145: allow overloading of assignment operators that return ShortStrings with a specific size
+ added tests

The following rules for using these operator overloads as *implicit* overloads apply (Delphi compatible):
  - if a found assignment operator returns a default ShortString then that is used
  - if only one assignment operator to a String[x] is found then that is used
  - otherwise the assignment is not possible
The explicit assignment checks for an exact match (and falls back for an implicit assignment). This is not entirely Delphi compatible as Delphi seems to favor the first found symbol in that case, but sometimes also not... :/

git-svn-id: trunk@47634 -
2020-11-29 15:47:52 +00:00
svenbarth
82957ec5a3 * Fix for Mantis #38122: when a deref node is passed as a Self parameter for a type helper (which is a var parameter) we need to pass the non-derefentiated value so that the data it points to can be modified by the helper's method (this is Delphi compatible)
+ added tests

git-svn-id: trunk@47625 -
2020-11-28 18:32:24 +00:00
florian
28bdb364f0 * remove readln
git-svn-id: trunk@47460 -
2020-11-19 21:37:23 +00:00
florian
b0deefec45 * do not run the test, it is only about a compilation issue
git-svn-id: trunk@47442 -
2020-11-17 20:32:10 +00:00
florian
6380df9b42 * correctly simplify tree transforms of (a+c1+c2) if a is a pointer, resolves #37671
git-svn-id: trunk@47437 -
2020-11-16 21:47:19 +00:00
florian
878f6d9ce4 * allow generic parameters as iterator variable in for in loops, resolves #38050
git-svn-id: trunk@47425 -
2020-11-15 19:10:34 +00:00
svenbarth
3d2ee097b5 * fix for Mantis #38083: ensure that the sp_generic_dummy flag is set correctly on the new procsym when replacing a dummy sym
+ added test

git-svn-id: trunk@47424 -
2020-11-15 16:27:26 +00:00
florian
089e13396a * ensure that changed compiler options do not cause values
ending up in registers which cannot be hold in registers

git-svn-id: trunk@47415 -
2020-11-14 18:40:58 +00:00
florian
bf7961a901 * fixes for nasm writer, resolves #38074
+ test

git-svn-id: trunk@47413 -
2020-11-13 21:39:16 +00:00
svenbarth
f75e6d8a48 * fix copy-paste mistake from Mantis (due to replacement of '#' with links...)
git-svn-id: trunk@47387 -
2020-11-11 08:28:37 +00:00
Jonas Maebe
091b0fde0c * fixed type of size parameter passed to fpc_getmem() when translating
new(pointer) (mantis #38054)

git-svn-id: trunk@47355 -
2020-11-08 22:42:38 +00:00
svenbarth
c496b609d1 * fix for Mantis #38051: make Chr() a real intrinsics so that it can be used in type declarations as well
+ added test

git-svn-id: trunk@47353 -
2020-11-08 22:23:02 +00:00
Jonas Maebe
49fbe53cf3 + test for mantis #36381 (seems already fixed)
git-svn-id: trunk@47337 -
2020-11-07 16:09:51 +00:00
florian
0bf1af08c4 + test for #38022
git-svn-id: trunk@47304 -
2020-11-03 21:44:57 +00:00
florian
1266afc0d0 * in equal_genfunc_paradefs take care of the fact that typesym might not be assigned for open array parameters, resolves #38012
git-svn-id: trunk@47253 -
2020-10-29 21:00:03 +00:00
florian
dfaee4f04b * patch by Jan Bruns to solve an issue with the new overloading selection code, resolves #37969
git-svn-id: trunk@47211 -
2020-10-26 20:58:24 +00:00
Jonas Maebe
14b44f5179 * don't run interactive test
git-svn-id: trunk@47159 -
2020-10-23 15:09:31 +00:00
florian
4afa4a73c6 + ISO mode: accept put/get without parameter, works on Input/Output respectively, resolves #37949
git-svn-id: trunk@47147 -
2020-10-20 21:03:51 +00:00
Jonas Maebe
099134b545 * fix try_make_mul32to64() if it's called with a constant node on the
left (mantis #37878)
   o can happen if use_generic_mul32to64 returns false

git-svn-id: trunk@47142 -
2020-10-19 19:10:16 +00:00
florian
a19ec44b97 * patch by Bart Broersma: avoid unsigned wrap around in TDeque.Erase, resolves #37482
git-svn-id: trunk@47122 -
2020-10-17 20:35:20 +00:00
florian
15695b317c * denormalized value floating point exception has to result in an rte 206, resolves part of #37926
git-svn-id: trunk@47114 -
2020-10-15 19:52:57 +00:00
svenbarth
e90cf131fe * fix for Mantis #37844: prefer to use the symtable determined in generate_specialization_phase1 for procdefs as that might a withsymtable that is needed to correctly load Self later on
+ added test

git-svn-id: trunk@47101 -
2020-10-12 16:55:14 +00:00
florian
c2c7c23f21 * fix #35841 also for break and continue
git-svn-id: trunk@47070 -
2020-10-09 20:55:38 +00:00
florian
73c041a854 * patch by J. Gareth Moreton: propagate exit use in nested try...except statements,
resolves #35841

git-svn-id: trunk@47066 -
2020-10-08 20:38:19 +00:00
florian
284aca7348 + x86: FstpFld2Fst optimization (re-enabled for safe cases)
git-svn-id: trunk@47024 -
2020-09-30 19:20:14 +00:00
florian
e124b07e86 + evaluate typeinfo(<type1>)=/<>typeinfo(<type2>) at compile time, resolves #30260
git-svn-id: trunk@47008 -
2020-09-29 20:14:27 +00:00
florian
1a2b99bc09 * correctly reset fpu on x86_64-linux after a floating point exception, resolves second part of #37468
git-svn-id: trunk@46992 -
2020-09-28 20:50:25 +00:00
Jonas Maebe
f3e140fc50 * test for mantis #34543 (already fixed)
git-svn-id: trunk@46988 -
2020-09-28 14:01:55 +00:00
florian
e1536bdf26 * when implicit try...finallys are turned off, do not throw an error if a procedure
is left which would need but does not have an implicit try...finally block, resolves #37823

git-svn-id: trunk@46974 -
2020-09-27 16:53:59 +00:00
florian
a628c1c3dd * if an array constructor is passed to a formaldef parameter, it is passed as a set (if the conversion is possible), resolves #37796
git-svn-id: trunk@46973 -
2020-09-27 16:37:20 +00:00
svenbarth
cce2dad1bf * fix for Mantis #37806: allow undefineddefs for Include() and Exclude()
+ added tests

git-svn-id: trunk@46953 -
2020-09-25 14:13:53 +00:00
svenbarth
ff4e1345ff * fix for Mantis #37779: use init RTTI instead of full RTTI when copying an array
+ added test

git-svn-id: trunk@46915 -
2020-09-21 20:17:55 +00:00
Jonas Maebe
aa75d39ab5 * don't perform "(x=y) or (z=u)" -> "(x xor y) or (z xor u)" optimization
if z or u may raise exceptions (mantis #37780)

git-svn-id: trunk@46905 -
2020-09-20 12:43:45 +00:00
florian
e83d214e98 + allow in ISO mode that { ... } and (* ... *) comments are paired, resolves at least partly #37428
git-svn-id: trunk@46903 -
2020-09-20 08:47:00 +00:00
florian
f8c1df0852 * ISO mode: handle typed files as text files regarding naming/program parameters, resolves #37415
git-svn-id: trunk@46865 -
2020-09-14 20:16:08 +00:00
Jonas Maebe
cc315e0ac7 * fix tw3930 after r37927
o "unique" class (and interface) type aliases should actually not exist at
     all except for overload resolution. All the rest (VMT, UUID, RTTI, ...)
     should be taken from the aliased class/interface
   o there is one Delphi-incompatibily left after this change, but it shouldn't
     matter: tw8180 does not compile if you change the declaration to
     "tcl=class(TInterfacedObject,XStr,iinterface)", while Kylix does compile
     that. It doesn't really matter though, because in Kylix this actually
     adds iinterface twice as implemented interface, so there is no point
     in accepting this.

git-svn-id: trunk@46773 -
2020-09-05 12:25:09 +00:00
svenbarth
b2177fb50e * fix for Mantis #37650: apply adjusted patch by Ryan Joseph do not range check the length of ShortStrings if their length parameter is based on a generic constant
+ added test

git-svn-id: trunk@46766 -
2020-09-04 15:44:23 +00:00
Jonas Maebe
ac18c0090a * non-zero exit code on failure
git-svn-id: trunk@46661 -
2020-08-23 11:31:16 +00:00
Jonas Maebe
d1d3d7cd08 * never create a regular temp for inline parameters that can be modified by
the caller (mantis #37465)a
   o in theory, the regular checks for doing so should never trigger, but due
     to compiler-generated nodes (such as calls to fpc_ansistr_unique), they
     could. Internal address nodes can deal with taking the address of the
     function result in this case.

git-svn-id: trunk@46660 -
2020-08-23 11:27:59 +00:00
yury
2ab7cceeaa * Added the $F+ switch (forced far calls) for some TP mode tests.
git-svn-id: trunk@46456 -
2020-08-16 10:48:10 +00:00
svenbarth
fbb8e161fa + add test for already fixed Mantis #37286
git-svn-id: trunk@46408 -
2020-08-13 05:42:32 +00:00
florian
43d66a4ac8 * it's usefull to enable the test for all platforms
git-svn-id: trunk@46406 -
2020-08-12 21:15:35 +00:00
florian
cdd80c131d + forgotten test
git-svn-id: trunk@46405 -
2020-08-12 21:13:58 +00:00
florian
6dac888ae5 * 0 is a valid label in iso mode, resolves #37428
git-svn-id: trunk@46362 -
2020-08-11 12:05:13 +00:00
Jonas Maebe
b3adeaaea9 * added test for bug that's already fixed (mantis #37423)
git-svn-id: trunk@46334 -
2020-08-08 17:45:41 +00:00
florian
d7ba09f543 * insert type casts when creating new unaryminus nodes during simplification, resolves #37508
git-svn-id: trunk@46309 -
2020-08-07 21:43:00 +00:00
florian
af1e6fde5c * setelementn cannot be the root node of a cse domain, resolves #37477
git-svn-id: trunk@46299 -
2020-08-06 20:49:07 +00:00
florian
e14a3f17e6 * reverted r46220 as it is fixed now properly
git-svn-id: trunk@46276 -
2020-08-05 21:15:33 +00:00
svenbarth
c17ad509e2 * fix for Mantis #36775: apply patch by J. Gareth Moreton
+ added tests

git-svn-id: trunk@46220 -
2020-08-03 21:53:29 +00:00
svenbarth
8770af84bd * fix for Mantis #37187: inside generics the constant code in pexpr does not handle all cases and thus current_procinfo needs to be checked as well
+ added test

git-svn-id: trunk@46218 -
2020-08-03 21:53:14 +00:00