- don't pass CP_NONE encoding to internal functions. They handled it as 0 encoding. This will optimize the generated code a bit.
- convert all king of string/char/pchar constants to local ansistring def if they needs to be passed to rawbytestring type. They should not get a CP_NONE codepage (delphi compatible)
- don't convert left and right arguments of string concatenation to ansistring type if they are already ansistrings but with different codepage - RTL already handles different codepages in concat routine
- fix resultdef for ansistring concatenations inside assignments - return def of left assignment operand if it is already ansistring - this reduces amount of unneeded condepage conversions since concat functions can return result in any desired codepage
rtl: remove CP_NONE comparisions from most of RTL functions, replace 0 constant with CP_ACP
tests: add test to check various conversions to RawByteString type
git-svn-id: trunk@19519 -
- add helper function getansistringcodepage which returns explicitly set codepage or 0 in other case
- add helper function getansistringdef which return a def with explicitly set codepage or cansistringtype in other case
- change tstoreddef.createnai constructor to allow set codepage in constructor
- don't convert string constants to rawbytestring. if string constant already has a codepage - preserve it or convert to ansistring codepage (delphi compatible)
- don't perform string conversion from ansistring to strings with explicitly set codepage (by directive or by compiler switch) and vice versa (delphi compatible)
+ test which covers most of the cases
git-svn-id: trunk@19510 -
* Refactored code generation for tcgonnonde and tcgtryexceptnode, simplifying both compiler and generated code. Merged compilerprocs called in sequence into larger ones (fpc_popobjectstack+fpc_destroyexception -> fpc_doneexception, fpc_popsecondobjectstack+fpc_destroyexception+fpc_reraise -> fpc_raise_nested).
git-svn-id: trunk@19506 -
implementation (Delphi-compatible in case multiple overloads exist in
the current unit, and in other cases avoids compiler crashes in case
of circular implementation dependencies)
* ignore other symbol options (deprecated, legacy, platform, ...) as far as
the interface crc is concerned to avoid trouble in case they appear in the
implementation but not in the interface (to prevent compiler crashes)
git-svn-id: trunk@19492 -
#20451. This commit only adds ftfixedchar to the case, but since its
behaviour is the same as default, no noticable differences.
git-svn-id: trunk@19487 -
platforms from testing for a Windows target into testing to the
tf_safecall_exceptions target flag. However, this flag was not set for
non-i386 Windows platforms (mantis #20385)
git-svn-id: trunk@19486 -