View Issue Details

IDProjectCategoryView StatusLast Update
0036850FPCCompilerpublic2020-03-30 09:58
ReporterAnton Rzheshevski Assigned To 
Status newResolutionopen 
Summary0036850: Linking fails with "undefined symbol" on a non-overloaded variant of an overloaded procedure is in the implementation section.
DescriptionA long time ago I commented the ansi versions of this procedure out
interface (where Utf16String = UnicodeString):
// Procedure AddLog(S: AnsiString); OVERLOAD;
  Procedure AddLog(U: Utf16String); OVERLOAD;
  Procedure AddLog(mID: TMotherMessageId); OVERLOAD;
// Procedure AddLog(S: AnsiString; Param: array of const); OVERLOAD;
  Procedure AddLog(U: Utf16String; Param: array of const); OVERLOAD;
  Procedure AddLog(mID: TMotherMessageId; Param: array of const); OVERLOAD;
But I forgot to comment it out in the implementation section where it does not have "overload"
  Procedure AddLog(S: RawByteString; Param: array of const);
    AddLog(Utf8Decode(S), Param);

Previous compiler versions built the exe succesfully (up to 3.3.1) but when I tried using 3.2.0-rc1 I got:
(9015) Linking ..\..\..\chentrah.exe
chentrah.lpr(112,3) Error: Undefined symbol: CL_CGE_::=::\_ADDLOG$RAWBYTESTRING$array_of_const
chentrah.lpr(112,3) Fatal: (10026) There were 1 errors compiling module, stopping
Fatal: (1018) Compilation aborted

I don't know if such declaration is an error from the language standpoint (it probably is) but the 3.2 candidate 0000001 does not signal "You mixed overloaded and non-overloaded, you absent-minded fool!" properly :)

P.S. The "product version" dropdown doesn't have "3.2.0-rc1" yet!
TagsNo tags attached.
Fixed in Revision
Attached Files


There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2020-03-30 09:58 Anton Rzheshevski New Issue