From 6013606a971b1664ba5867bbba6198106ffe3f2a Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Thu, 29 Aug 2013 22:21:15 +0000 Subject: [PATCH] + -CTlowercaseprocstart switch to lowercase the first character of routines so that code written according to Delphi coding standards can be compiled into JVM bytecode with routine names conforming to JVM coding standards git-svn-id: trunk@25385 - --- .gitattributes | 1 + compiler/globtype.pas | 9 +- compiler/msg/errore.msg | 1 + compiler/msgidx.inc | 2 +- compiler/msgtxt.inc | 228 +++++++++++++------------ compiler/symdef.pas | 2 + tests/test/jvm/testall.bat | 8 + tests/test/jvm/testall.sh | 5 + tests/test/jvm/tjavalowercaseproc.java | 14 ++ 9 files changed, 154 insertions(+), 116 deletions(-) create mode 100644 tests/test/jvm/tjavalowercaseproc.java diff --git a/.gitattributes b/.gitattributes index 475efe2efd..fe0e2b75ce 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10636,6 +10636,7 @@ tests/test/jvm/testshort.pp svneol=native#text/plain tests/test/jvm/tformalpara.pp svneol=native#text/plain tests/test/jvm/tint.pp svneol=native#text/plain tests/test/jvm/tintstr.pp svneol=native#text/plain +tests/test/jvm/tjavalowercaseproc.java svneol=native#text/plain tests/test/jvm/tjsetter.java svneol=native#text/plain tests/test/jvm/tnestdynarr.pp svneol=native#text/plain tests/test/jvm/tnestedset.pp svneol=native#text/plain diff --git a/compiler/globtype.pas b/compiler/globtype.pas index 1a0da4a6b2..9abb31c1d0 100644 --- a/compiler/globtype.pas +++ b/compiler/globtype.pas @@ -232,7 +232,11 @@ interface these strings as prefixes for the generated getters/setter names } ts_auto_getter_prefix, ts_auto_setter_predix, - ts_thumb_interworking + ts_thumb_interworking, + { lowercase the first character of routine names, used to generate + names that are compliant with Java coding standards from code + written according to Delphi coding standards } + ts_lowercase_proc_start ); ttargetswitches = set of ttargetswitch; @@ -313,7 +317,8 @@ interface (name: 'ENUMFIELDINIT'; hasvalue: false; isglobal: true ), (name: 'AUTOGETTERPREFIX'; hasvalue: true ; isglobal: false), (name: 'AUTOSETTERPREFIX'; hasvalue: true ; isglobal: false), - (name: 'THUMBINTERWORKING'; hasvalue: false; isglobal: true ) + (name: 'THUMBINTERWORKING'; hasvalue: false; isglobal: true ), + (name: 'LOWERCASEPROCSTART'; hasvalue: false; isglobal: true ) ); { switches being applied to all CPUs at the given level } diff --git a/compiler/msg/errore.msg b/compiler/msg/errore.msg index e42b2b677c..7b0a1ed0e5 100644 --- a/compiler/msg/errore.msg +++ b/compiler/msg/errore.msg @@ -3435,6 +3435,7 @@ J*3CTenumfieldinit_ Initialize enumeration fields in constructors to enumtype(0) J*3CTautogetterprefix=X_ Automatically create getters for properties with prefix X (empty string disables) J*3CTautosetterprefix=X_ Automatically create setters for properties with prefix X (empty string disables) A*3CTthumbinterworking_ Generate Thumb interworking-safe code if possible +J*3CTlowercaseprocstart_ Lowercase the first character of procedure/function/method names J*2Cv_Var/out parameter copy-out checking **2CX_Create also smartlinked library **1d_Defines the symbol diff --git a/compiler/msgidx.inc b/compiler/msgidx.inc index ed22ec4bc4..6a34f42f5b 100644 --- a/compiler/msgidx.inc +++ b/compiler/msgidx.inc @@ -977,7 +977,7 @@ const option_info=11024; option_help_pages=11025; - MsgTxtSize = 69228; + MsgTxtSize = 69318; MsgIdxMax : array[1..20] of longint=( 26,95,335,121,88,56,126,27,202,64, diff --git a/compiler/msgtxt.inc b/compiler/msgtxt.inc index 294bcb2047..eb81b0896f 100644 --- a/compiler/msgtxt.inc +++ b/compiler/msgtxt.inc @@ -1313,280 +1313,282 @@ const msgtxt : array[0..000288,1..240] of char=( ' with prefix X (empty string disables)'#010+ 'A*3CTthumbinterworking_ Generate Thumb interworking-safe code if possi'+ 'ble'#010+ + 'J*3CTlowercaseprocstart_ Lowercase the first character of procedure/fu'+ + 'n','ction/method names'#010+ 'J*2Cv_Var/out parameter copy-out checking'#010+ - '**2CX_Create also smartlinked',' library'#010+ + '**2CX_Create also smartlinked library'#010+ '**1d_Defines the symbol '#010+ '**1D_Generate a DEF file'#010+ '**2Dd_Set description to '#010+ '**2Dv_Set DLL version to '#010+ - '*O2Dw_PM application'#010+ + '*O2Dw_PM application'#010, '**1e_Set path to executable'#010+ '**1E_Same as -Cn'#010+ '**1fPIC_Same as -Cg'#010+ - '**1F_Set file names',' and paths:'#010+ + '**1F_Set file names and paths:'#010+ '**2Fa[,y]_(for a program) load units and [y] before uses is par'+ 'sed'#010+ '**2Fc_Set input codepage to '#010+ - '**2FC_Set RC compiler binary name to '#010+ + '**2FC_Set RC compiler bina','ry name to '#010+ '**2Fd_Disable the compiler'#039's internal directory cache'#010+ - '**2FD_Set the dire','ctory where to search for compiler utilities'#010+ + '**2FD_Set the directory where to search for compiler utilities'#010+ '**2Fe_Redirect error output to '#010+ '**2Ff_Add to framework path (Darwin only)'#010+ - '**2FE_Set exe/unit output path to '#010+ + '**2FE_Set exe/u','nit output path to '#010+ '**2Fi_Add to include path'#010+ '**2Fl_Add to library path'#010+ - '*','*2FL_Use as dynamic linker'#010+ + '**2FL_Use as dynamic linker'#010+ '**2Fm_Load unicode conversion table from .txt in the compiler di'+ 'r'#010+ '**2Fo_Add to object path'#010+ - '**2Fr_Load error message file '#010+ + '**2Fr_Loa','d error message file '#010+ '**2FR_Set resource (.res) linker to '#010+ - '**2Fu_Add to un','it path'#010+ + '**2Fu_Add to unit path'#010+ '**2FU_Set unit output path to , overrides -FE'#010+ '**2FW_Store generated whole-program optimization feedback in '#010+ - '**2Fw_Load previously stored whole-program optimization feedback fr'+ - 'om '#010+ - '*g1g_Generate debug information (de','fault format for target)'#010+ + '**2Fw_Load previous','ly stored whole-program optimization feedback '+ + 'from '#010+ + '*g1g_Generate debug information (default format for target)'#010+ '*g2gc_Generate checks for pointers'#010+ '*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+ - '*g2gl_Use line info unit (show more info with backtraces)'#010+ + '*g2gl_Use line info unit (','show more info with backtraces)'#010+ '*g2go_Set debug information options'#010+ - '*g3godwarfsets_ Ena','ble DWARF '#039'set'#039' type debug information (b'+ - 'reaks gdb < 6.5)'#010+ + '*g3godwarfsets_ Enable DWARF '#039'set'#039' type debug information (bre'+ + 'aks gdb < 6.5)'#010+ '*g3gostabsabsincludes_ Store absolute/full include file paths in Stabs'+ #010+ - '*g3godwarfmethodclassprefix_ Prefix method names in DWARF with class n'+ - 'ame'#010+ - '*g2gp_Preserve case in stabs symbol n','ames'#010+ + '*g3godwarfmethodclass','prefix_ Prefix method names in DWARF with class'+ + ' name'#010+ + '*g2gp_Preserve case in stabs symbol names'#010+ '*g2gs_Generate Stabs debug information'#010+ '*g2gt_Trash local variables (to detect uninitialized uses)'#010+ - '*g2gv_Generates programs traceable with Valgrind'#010+ + '*g2gv_Generates programs traceable with Valgrin','d'#010+ '*g2gw_Generate DWARFv2 debug information (same as -gw2)'#010+ - '*g2gw2_Generate DWARFv2 debug in','formation'#010+ + '*g2gw2_Generate DWARFv2 debug information'#010+ '*g2gw3_Generate DWARFv3 debug information'#010+ '*g2gw4_Generate DWARFv4 debug information (experimental)'#010+ '**1i_Information'#010+ - '**2iD_Return compiler date'#010+ + '**2iD_Return compiler da','te'#010+ '**2iV_Return short compiler version'#010+ '**2iW_Return full compiler version'#010+ - '**2iSO_Return co','mpiler OS'#010+ + '**2iSO_Return compiler OS'#010+ '**2iSP_Return compiler host processor'#010+ '**2iTO_Return target OS'#010+ '**2iTP_Return target processor'#010+ '**1I_Add to include path'#010+ - '**1k_Pass to the linker'#010+ + '**1k_Pass to the linker'#010+ '**1l_Write logo'#010+ '**1M_Set language mode to '#010+ - '**2Mfpc_Free Pascal diale','ct (default)'#010+ + '**2Mfpc_Free Pascal dialect (default)'#010+ '**2Mobjfpc_FPC mode with Object Pascal support'#010+ '**2Mdelphi_Delphi 7 compatibility mode'#010+ '**2Mtp_TP/BP 7.0 compatibility mode'#010+ - '**2Mmacpas_Macintosh Pascal dialects compatibility mode'#010+ + '**2Mmacpas_Maci','ntosh Pascal dialects compatibility mode'#010+ '**1n_Do not read the default config files'#010+ - '**1o','_Change the name of the executable produced to '#010+ + '**1o_Change the name of the executable produced to '#010+ '**1O_Optimizations:'#010+ '**2O-_Disable optimizations'#010+ - '**2O1_Level 1 optimizations (quick and debugger friendly)'#010+ + '**2O1_Level 1 optimizations (quick and debugger ','friendly)'#010+ '**2O2_Level 2 optimizations (-O1 + quick optimizations)'#010+ - '**2O3_Level 3 optimizati','ons (-O2 + slow optimizations)'#010+ + '**2O3_Level 3 optimizations (-O2 + slow optimizations)'#010+ '**2O4_Level 4 optimizations (-O3 + optimizations which might have unex'+ 'pected side effects)'#010+ '**2Oa=_Set alignment'#010+ - '**2Oo[NO]_Enable or disable optimizations, see fpc -i for possible '+ - 'values'#010+ - '**2Op_Set t','arget cpu for optimizing, see fpc -i for possible valu'+ - 'es'#010+ + '*','*2Oo[NO]_Enable or disable optimizations, see fpc -i for possibl'+ + 'e values'#010+ + '**2Op_Set target cpu for optimizing, see fpc -i for possible values'+ + #010+ '**2OW_Generate whole-program optimization feedback for optimization'+ - ' , see fpc -i for possible values'#010+ + ' , see fpc -i for po','ssible values'#010+ '**2Ow_Perform whole-program optimization , see fpc -i for possib'+ - 'le val','ues'#010+ + 'le values'#010+ '**2Os_Optimize for size rather than speed'#010+ '**1pg_Generate profile code for gprof (defines FPC_PROFILE)'#010+ - 'F*1P_Target CPU / compiler related options:'#010+ + 'F*1P_Target CPU / compiler related option','s:'#010+ 'F*2PB_Show default compiler binary'#010+ 'F*2PP_Show default target cpu'#010+ - 'F*2P_Set target CPU',' (arm,i386,m68k,mips,mipsel,powerpc,powerpc64,'+ - 'sparc,x86_64'#010+ + 'F*2P_Set target CPU (arm,i386,m68k,mips,mipsel,powerpc,powerpc64,sp'+ + 'arc,x86_64'#010+ '**1R_Assembler reading style:'#010+ '**2Rdefault_Use default assembler for target'#010+ - '3*2Ratt_Read AT&T style assembler'#010+ + '3*2Ratt_Read ','AT&T style assembler'#010+ '3*2Rintel_Read Intel style assembler'#010+ - '6*2RMOT_Read motorola style asse','mbler'#010+ + '6*2RMOT_Read motorola style assembler'#010+ '**1S_Syntax options:'#010+ '**2S2_Same as -Mobjfpc'#010+ '**2Sc_Support operators like C (*=,+=,/= and -=)'#010+ '**2Sa_Turn on assertions'#010+ - '**2Sd_Same as -Mdelphi'#010+ + '**2Sd_Same as -Mdelphi'#010, '**2Se_Error options. is a combination of the following:'#010+ - '**3*_ : Compiler halts a','fter the errors (default is 1)'#010+ + '**3*_ : Compiler halts after the errors (default is 1)'#010+ '**3*_w : Compiler also halts after warnings'#010+ '**3*_n : Compiler also halts after notes'#010+ - '**3*_h : Compiler also halts after hints'#010+ + '**3*_h : Compiler also halts a','fter hints'#010+ '**2Sg_Enable LABEL and GOTO (default in -Mtp and -Mdelphi)'#010+ - '**2Sh_Use reference ','counted strings (ansistring by default) instead '+ - 'of shortstrings'#010+ + '**2Sh_Use reference counted strings (ansistring by default) instead of'+ + ' shortstrings'#010+ '**2Si_Turn on inlining of procedures/functions declared as "inline"'#010+ - '**2Sk_Load fpcylix unit'#010+ + '**2Sk_Load fpcylix',' unit'#010+ '**2SI_Set interface style to '#010+ '**3SIcom_COM compatible interface (default)'#010+ - '**3S','Icorba_CORBA compatible interface'#010+ + '**3SIcorba_CORBA compatible interface'#010+ '**2Sm_Support macros like C (global)'#010+ '**2So_Same as -Mtp'#010+ - '**2Ss_Constructor name must be init (destructor must be done)'#010+ + '**2Ss_Constructor name must be init (destructor must be done',')'#010+ '**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+ - '**2Sy_@ return','s a typed pointer, same as $T+'#010+ + '**2Sy_@ returns a typed pointer, same as $T+'#010+ '**1s_Do not call assembler and linker'#010+ '**2sh_Generate script to link on host'#010+ '**2st_Generate script to link on target'#010+ - '**2sr_Skip register allocation phase (use with -alr)'#010+ + '**2','sr_Skip register allocation phase (use with -alr)'#010+ '**1T_Target operating system:'#010+ - '3*2Tdar','win_Darwin/Mac OS X'#010+ + '3*2Tdarwin_Darwin/Mac OS X'#010+ '3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+ '3*2Tfreebsd_FreeBSD'#010+ '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+ - '3*2Tiphonesim_ iPhoneSimulator from iOS SDK 3.2+ (older versions: -Tda'+ - 'rwin)'#010+ + '3*2Tiphonesi','m_ iPhoneSimulator from iOS SDK 3.2+ (older versions: -T'+ + 'darwin)'#010+ '3*2Tlinux_Linux'#010+ - '3*2Tnative','nt_Native NT API (experimental)'#010+ + '3*2Tnativent_Native NT API (experimental)'#010+ '3*2Tnetbsd_NetBSD'#010+ '3*2Tnetware_Novell Netware Module (clib)'#010+ '3*2Tnetwlibc_Novell Netware Module (libc)'#010+ - '3*2Topenbsd_OpenBSD'#010+ + '3*2Topenbsd_OpenB','SD'#010+ '3*2Tos2_OS/2 / eComStation'#010+ '3*2Tsunos_SunOS/Solaris'#010+ '3*2Tsymbian_Symbian OS'#010+ - '3*2Tsolaris_S','olaris'#010+ + '3*2Tsolaris_Solaris'#010+ '3*2Twatcom_Watcom compatible DOS extender'#010+ '3*2Twdosx_WDOSX DOS extender'#010+ '3*2Twin32_Windows 32 Bit'#010+ '3*2Twince_Windows CE'#010+ - '4*2Tdarwin_Darwin/Mac OS X'#010+ + '4*2Tdarwin_Darwin/Mac OS X',#010+ '4*2Tlinux_Linux'#010+ '4*2Twin64_Win64 (64 bit Windows systems)'#010+ '6*2Tamiga_Commodore Amiga'#010+ - '6*2Tat','ari_Atari ST/STe/TT'#010+ + '6*2Tatari_Atari ST/STe/TT'#010+ '6*2Tlinux_Linux'#010+ '6*2Tpalmos_PalmOS'#010+ 'A*2Tdarwin_Darwin/iPhoneOS/iOS'#010+ 'A*2Tlinux_Linux'#010+ 'A*2Twince_Windows CE'#010+ 'P*2Tamiga_AmigaOS'#010+ - 'P*2Tdarwin_Darwin/Mac OS X'#010+ + 'P*2Tdarwin','_Darwin/Mac OS X'#010+ 'P*2Tlinux_Linux'#010+ 'P*2Tmacos_Mac OS (classic)'#010+ 'P*2Tmorphos_MorphOS'#010+ - 'S*2Tsolari','s_Solaris'#010+ + 'S*2Tsolaris_Solaris'#010+ 'S*2Tlinux_Linux'#010+ '**1u_Undefines the symbol '#010+ '**1U_Unit options:'#010+ '**2Un_Do not check where the unit name matches the file name'#010+ - '**2Ur_Generate release unit files (never automatically recompiled)'#010+ + '**2Ur_Gener','ate release unit files (never automatically recompiled)'#010+ '**2Us_Compile a system unit'#010+ - '**1v_Be verbose. is a combination of the following letters:'#010+ + '**1v_Be verbose. is a combination of the following letters:'#010+ '**2*_e : Show errors (default) 0 : Show nothing (except errors)'#010+ - '**2*_w : Show warnings u : Show unit info'#010+ - '**2*_n : Show notes t : Show tried/u','sed files'#010+ + '**2*_w : Show warni','ngs u : Show unit info'#010+ + '**2*_n : Show notes t : Show tried/used files'#010+ '**2*_h : Show hints c : Show conditionals'#010+ '**2*_i : Show general info d : Show debug info'#010+ - '**2*_l : Show linenumbers r : Rhide/GCC compatibility mode'#010+ - '**2*_s : Show time stamps q : Sho','w message numbers'#010+ - '**2*_a : Show everything x : Executable info (Win32 only)'#010+ - '**2*_b : Write file names messages p : Write tree.log with parse tre'+ + '**2*_l : Show linenumber','s r : Rhide/GCC compatibility mod'+ 'e'#010+ + '**2*_s : Show time stamps q : Show message numbers'#010+ + '**2*_a : Show everything x : Executable info (Win32 only)'#010+ + '**2*_b : Write file names messages p : Write tree.log with p','arse t'+ + 'ree'#010+ '**2*_ with full path v : Write fpcdebug.txt with'#010+ - '**2*_ ',' lots of debugging info'#010+ + '**2*_ lots of debugging info'#010+ '**2*_m, : Don'#039't show messages numbered and '#010+ - 'F*1V_Append '#039'-'#039' to the used compiler binary name (e.g. f'+ - 'or version)'#010+ + 'F*1V_Append '#039'-'#039' to the used compiler b','inary name (e.g.'+ + ' for version)'#010+ '**1W_Target-specific options (targets)'#010+ - '3*2WA_Specify nati','ve type application (Windows)'#010+ + '3*2WA_Specify native type application (Windows)'#010+ '4*2WA_Specify native type application (Windows)'#010+ 'A*2WA_Specify native type application (Windows)'#010+ - '3*2Wb_Create a bundle instead of a library (Darwin)'#010+ + '3*2Wb_Create a bundle in','stead of a library (Darwin)'#010+ 'P*2Wb_Create a bundle instead of a library (Darwin)'#010+ - 'p*2Wb_Crea','te a bundle instead of a library (Darwin)'#010+ + 'p*2Wb_Create a bundle instead of a library (Darwin)'#010+ 'A*2Wb_Create a bundle instead of a library (Darwin)'#010+ '4*2Wb_Create a bundle instead of a library (Darwin)'#010+ - '3*2WB_Create a relocatable image (Windows, Symbian)'#010+ - '3*2WBxxxx_Set image base to xxxx (Windows,',' Symbian)'#010+ + '3*2W','B_Create a relocatable image (Windows, Symbian)'#010+ + '3*2WBxxxx_Set image base to xxxx (Windows, Symbian)'#010+ '4*2WB_Create a relocatable image (Windows)'#010+ '4*2WBxxxx_Set image base to xxxx (Windows)'#010+ 'A*2WB_Create a relocatable image (Windows, Symbian)'#010+ - 'A*2WBxxxx_Set image base to xxxx (Windows, Symbian)'#010+ - '3*2WC_Specify console type application (','EMX, OS/2, Windows)'#010+ + 'A*','2WBxxxx_Set image base to xxxx (Windows, Symbian)'#010+ + '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+ '4*2WC_Specify console type application (EMX, OS/2, Windows)'#010+ 'A*2WC_Specify console type application (Windows)'#010+ - 'P*2WC_Specify console type application (Classic Mac OS)'#010+ - '3*2WD_Use DEFFILE to export functions of DLL or EXE (Wi','ndows)'#010+ + 'P*2WC_Specify console',' type application (Classic Mac OS)'#010+ + '3*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+ '4*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+ 'A*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+ - '3*2We_Use external resources (Darwin)'#010+ + '3*2We_Use external ','resources (Darwin)'#010+ '4*2We_Use external resources (Darwin)'#010+ - 'A*2We_Use external resources (Dar','win)'#010+ + 'A*2We_Use external resources (Darwin)'#010+ 'P*2We_Use external resources (Darwin)'#010+ 'p*2We_Use external resources (Darwin)'#010+ '3*2WF_Specify full-screen type application (EMX, OS/2)'#010+ - '3*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+ - '4*2WG_Specify graphic type application (EMX,',' OS/2, Windows)'#010+ + '3*2WG_Specify ','graphic type application (EMX, OS/2, Windows)'#010+ + '4*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+ 'A*2WG_Specify graphic type application (Windows)'#010+ 'P*2WG_Specify graphic type application (Classic Mac OS)'#010+ - '3*2Wi_Use internal resources (Darwin)'#010+ + '3*2Wi_Use internal resources ','(Darwin)'#010+ '4*2Wi_Use internal resources (Darwin)'#010+ 'A*2Wi_Use internal resources (Darwin)'#010+ - 'P*2Wi','_Use internal resources (Darwin)'#010+ + 'P*2Wi_Use internal resources (Darwin)'#010+ 'p*2Wi_Use internal resources (Darwin)'#010+ '3*2WI_Turn on/off the usage of import sections (Windows)'#010+ - '4*2WI_Turn on/off the usage of import sections (Windows)'#010+ - 'A*2WI_Turn on/off the usage of import sections (Windows',')'#010+ + '4*2WI_Turn on/off the ','usage of import sections (Windows)'#010+ + 'A*2WI_Turn on/off the usage of import sections (Windows)'#010+ '8*2Wm_Set memory model'#010+ '8*3WmTiny_Tiny memory model'#010+ '8*3WmSmall_Small memory model (default)'#010+ '8*3WmMedium_Medium memory model'#010+ - '3*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ - 'n)'#010+ - '4*2WM_Minimum Mac OS X deployment ve','rsion: 10.4, 10.5.1, ... (Dar'+ + '3*2WM_Minimum Mac O','S X deployment version: 10.4, 10.5.1, ... (Dar'+ 'win)'#010+ + '4*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ + 'n)'#010+ 'p*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ 'n)'#010+ - 'P*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ - 'n)'#010+ - '3*2WN_Do not generate relocation code, needed for debugging ','(Windows'+ - ')'#010+ + 'P*2WM_Minimum Mac OS X deployment versio','n: 10.4, 10.5.1, ... (Dar'+ + 'win)'#010+ + '3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ '4*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ - 'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ + 'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010, 'A*2Wpxxxx_Specify the controller type, see fpc -i for possible values'#010+ - 'V*2Wpxxxx_Specify th','e controller type, see fpc -i for possible value'+ - 's'#010+ + 'V*2Wpxxxx_Specify the controller type, see fpc -i for possible values'#010+ '3*2WP_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'#010+ - 'A*2WP_Minimum iOS deployment version: 3.0, 5.0.1, ... (Darwin)'#010+ + 'A*2WP_Minimum iOS deployment',' version: 3.0, 5.0.1, ... (Darwin)'#010+ '3*2WR_Generate relocation code (Windows)'#010+ - '4*2WR_Generate',' relocation code (Windows)'#010+ + '4*2WR_Generate relocation code (Windows)'#010+ 'A*2WR_Generate relocation code (Windows)'#010+ 'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+ - '**2WX_Enable executable stack (Linux)'#010+ + '**2WX_Enable executable s','tack (Linux)'#010+ '**1X_Executable options:'#010+ - '**2Xc_Pass --shared/-dynamic to the linker (BeOS, Da','rwin, FreeBSD, L'+ - 'inux)'#010+ + '**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+ + 'ux)'#010+ '**2Xd_Do not search default library path (sometimes required for cross'+ '-compiling when not using -XR)'#010+ '**2Xe_Use external linker'#010+ - '**2Xg_Create debuginfo in a separate file and add a debuglink section '+ - 'to executable'#010+ - '**2XD_T','ry to link units dynamically (defines FPC_LINK_DYNAMIC)'#010+ + '*','*2Xg_Create debuginfo in a separate file and add a debuglink sectio'+ + 'n to executable'#010+ + '**2XD_Try to link units dynamically (defines FPC_LINK_DYNAMIC)'#010+ '**2Xi_Use internal linker'#010+ '**2Xm_Generate link map'#010+ - '**2XM_Set the name of the '#039'main'#039' program routine (default i'+ - 's '#039'main'#039')'#010+ - 'F*2Xp_First search for the compiler binary in the dire','ctory '#010+ + '**2XM_Set the name of the '#039'main'#039' pro','gram routine (default'+ + ' is '#039'main'#039')'#010+ + 'F*2Xp_First search for the compiler binary in the directory '#010+ '**2XP_Prepend the binutils names with the prefix '#010+ '**2Xr_Set the linker'#039's rlink-path to (needed for cross comp'+ - 'ile, see the ld manual for more information) (BeOS, Linux)'#010+ - '**2XR_Prepend to all linker search paths (','BeOS, Darwin, FreeB'+ - 'SD, Linux, Mac OS, Solaris)'#010+ + 'ile, see the ld ma','nual for more information) (BeOS, Linux)'#010+ + '**2XR_Prepend to all linker search paths (BeOS, Darwin, FreeBSD'+ + ', Linux, Mac OS, Solaris)'#010+ '**2Xs_Strip all symbols from executable'#010+ - '**2XS_Try to link units statically (default, defines FPC_LINK_STATIC)'#010+ + '**2XS_Try to link units statically (default, defines FPC_LINK_S','TATIC'+ + ')'#010+ '**2Xt_Link with static libraries (-static is passed to linker)'#010+ - '**2XX_Try to smartli','nk units (defines FPC_LINK_SMART)'#010+ + '**2XX_Try to smartlink units (defines FPC_LINK_SMART)'#010+ '**1*_'#010+ '**1?_Show this help'#010+ '**1h_Shows this help without waiting' diff --git a/compiler/symdef.pas b/compiler/symdef.pas index 8c95ec6cba..d602c36705 100644 --- a/compiler/symdef.pas +++ b/compiler/symdef.pas @@ -5271,6 +5271,8 @@ implementation tmpresult:='$'+tprocdef(owner.defowner).procsym.realname+'$'+tostr(tprocdef(owner.defowner).procsym.symid)+'$'+tmpresult; container:=container.defowner.owner; end; + if ts_lowercase_proc_start in current_settings.targetswitches then + tmpresult[1]:=lower(tmpresult[1]); end; end else diff --git a/tests/test/jvm/testall.bat b/tests/test/jvm/testall.bat index d0ca90e391..ccb40edeeb 100644 --- a/tests/test/jvm/testall.bat +++ b/tests/test/jvm/testall.bat @@ -1,3 +1,5 @@ +del /s /q org + ppcjvm -O2 -g unsupported if %errorlevel% neq 0 exit /b %errorlevel% ppcjvm -O2 -g testintf @@ -268,3 +270,9 @@ javac -encoding utf-8 -cp ..\..\..\rtl\units\jvm-java;. tjsetter.java if %errorlevel% neq 0 exit /b %errorlevel% java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. -Sa tjsetter if %errorlevel% neq 0 exit /b %errorlevel% +ppcjvm -O2 -g -B -Sa tlowercaseproc +if %errorlevel% neq 0 exit /b %errorlevel% +javac -encoding utf-8 -cp ..\..\..\rtl\units\jvm-java;. tjavalowercaseproc.java +if %errorlevel% neq 0 exit /b %errorlevel% +java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. tjavalowercaseproc +if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/tests/test/jvm/testall.sh b/tests/test/jvm/testall.sh index cd5da2cb88..61f7adfb32 100755 --- a/tests/test/jvm/testall.sh +++ b/tests/test/jvm/testall.sh @@ -13,6 +13,8 @@ else fi fi +rm -rf org + $PPC -O2 -g unsupported $PPC -O2 -g testintf $PPC -O2 -g nested @@ -149,4 +151,7 @@ java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tw24089 $PPC -O2 -g -B -Sa -CTautosetterprefix=Set ujsetter javac -encoding utf-8 -cp ../../../rtl/units/$RTLDIR:. tjsetter.java java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tjsetter +$PPC -O2 -g -B -Sa tlowercaseproc +javac -encoding utf-8 -cp ../../../rtl/units/$RTLDIR:. tjavalowercaseproc.java +java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tjavalowercaseproc diff --git a/tests/test/jvm/tjavalowercaseproc.java b/tests/test/jvm/tjavalowercaseproc.java new file mode 100644 index 0000000000..5f625b7112 --- /dev/null +++ b/tests/test/jvm/tjavalowercaseproc.java @@ -0,0 +1,14 @@ +public class tjavalowercaseproc { + +public static void main(String[] args) +{ + org.freepascal.test.lcproc.tc c; + + org.freepascal.test.lcproc.tlowercaseproc.doIt(); + + c = new org.freepascal.test.lcproc.tc(); + c.methodName(); + org.freepascal.test.lcproc.tc.classMethodName(); +} + +}