View Issue Details

IDProjectCategoryView StatusLast Update
0033754FPCPatchpublic2018-11-30 18:51
ReporterJ. Gareth Moreton Assigned ToFlorian  
PrioritylowSeveritytextReproducibilityN/A
Status closedResolutionfixed 
Platformwin64OSMicrosoft Windows 
Product Version3.1.1 
Target Version3.3.1Fixed in Version3.1.1 
Summary0033754: [Patch] Clarity in directive conflict error messages
DescriptionThis patch aims to give clearer error messages if a procedure directive conflicts with another (e.g. using "virtual" and "inline" together). Currently, it doesn't explain exactly what the conflict is and can be very confusing. For example, if you have the following:

----

type
  TestClass = class
    procedure Test; virtual;
end;

procedure TestClass.Test; inline;
begin
  { Do something }
end;

----

The error received is "Procedure directive "VIRTUAL" has conflicts with other directives", giving very few clues that it's conflicting with "inline" and it should be the latter that should be removed. When inside a class declaration, it might throw an additional error when it tries to then interpret the conflicting keyword as an identifier, since it is not consumed by the compiler when the conflict error is thrown.

The new message is of the format:

Procedure directive "$1" cannot be used with $2

Normally, $2 is a keyword surrounded in double quotation marks, but in some instances might be a short title such as 'variable argument lists' (to represent the option "po_varargs") or not actually be a directive, but the method type (e.g. "CONSTRUCTOR"). Compilation code has been modified to find the best keyword or language-neutral phrase (as best as possible) to use in these instances.

The keyword is also now consumed prior to the conflict checks (since at this point it's definitely known to be a keyword) in order to avoid the error cascade.
Steps To ReproduceN/A
Additional InformationThe patch contains the modified msgidx.inc and msgtxt.inc files compiled from msg2inc with the modified errore.msg file. Other language files have not yet been touched if only because I'm not fluent enough in them, but the error messages should still work because the first parameter has not been modified, while the second one is silently ignored.

The other error message calls in parse_proc_direc have been modified so Lazarus correctly highlights the erroneous keyword rather than the trailing semicolon.

A possibly-erroneous calling convention string was fixed (MS_ABI_CDecl was changed to SysV_ABI_CDecl at one point) and a "TODO" comment was put in because there seems to be a missing 'exit'.
Tagserror, messages, output, patch
Fixed in Revision39407
FPCOldBugId0
FPCTarget
Attached Files

Activities

J. Gareth Moreton

2018-05-18 02:52

developer  

DirectiveConflictClarity.patch (123,994 bytes)   
Index: compiler/globtype.pas
===================================================================
--- compiler/globtype.pas	(revision 39008)
+++ compiler/globtype.pas	(working copy)
@@ -562,7 +562,7 @@
            'Interrupt',
            'HardFloat',
            'SysV_ABI_Default',
-           'MS_ABI_CDecl', { TODO: Is this correct? Shouldn't it be SysV_ABI_Default }
+           'SysV_ABI_CDecl',
            'MS_ABI_Default',
            'MS_ABI_CDecl',
            'VectorCall'
Index: compiler/msg/errore.msg
===================================================================
--- compiler/msg/errore.msg	(revision 39008)
+++ compiler/msg/errore.msg	(working copy)
@@ -842,7 +842,7 @@
 % The selected assembler reader (with \var{\{\$ASMMODE xxx\}} is not
 % supported. The compiler can be compiled with or without support for a
 % particular assembler reader.
-parser_e_proc_dir_conflict=03128_E_Procedure directive "$1" has conflicts with other directives
+parser_e_proc_dir_conflict=03128_E_Procedure directive "$1" cannot be used with $2
 % You specified a procedure directive that conflicts with other directives.
 % For instance \var{cdecl} and \var{pascal} are mutually exclusive.
 parser_e_call_convention_dont_match_forward=03129_E_Calling convention doesn't match forward
Index: compiler/msgidx.inc
===================================================================
--- compiler/msgidx.inc	(revision 39008)
+++ compiler/msgidx.inc	(working copy)
@@ -1100,7 +1100,7 @@
   option_info=11024;
   option_help_pages=11025;
 
-  MsgTxtSize = 81994;
+  MsgTxtSize = 81981;
 
   MsgIdxMax : array[1..20] of longint=(
     28,106,347,126,96,59,142,34,221,67,
Index: compiler/msgtxt.inc
===================================================================
--- compiler/msgtxt.inc	(revision 39008)
+++ compiler/msgtxt.inc	(working copy)
@@ -279,408 +279,408 @@
   '03125_I_Writin','g Browser log $1'#000+
   '03126_H_may be pointer dereference is missing'#000+
   '03127_F_Selected assembler reader not supported'#000+
-  '03128_E_Procedure directive "$1" has conflicts with other directives'#000+
+  '03128_E_Procedure directive "$1" cannot be used with $2'#000+
   '03129_E_Calling convention doesn'#039't match forward'#000+
-  '03131_E_Pro','perty cannot have a default value'#000+
+  '03131_E_Property cannot ','have a default value'#000+
   '03132_E_The default value of a property must be constant'#000+
   '03133_E_Symbol cannot be published, can be only a class'#000+
   '03134_E_This kind of property cannot be published'#000+
   '03136_E_An import name is required'#000+
-  '03138_E_','Division by zero'#000+
+  '03138_E_Division by z','ero'#000+
   '03139_E_Invalid floating point operation'#000+
   '03140_E_Upper bound of range is less than lower bound'#000+
   '03141_W_string "$1" is longer than "$2"'#000+
   '03142_E_string length is larger than array of char length'#000+
-  '03143_E_Illegal expression aft','er message directive'#000+
+  '03143_E_Illegal expression after message di','rective'#000+
   '03144_E_Message handlers can take only one call by ref. parameter'#000+
   '03145_E_Duplicate message label: "$1"'#000+
   '03146_E_Self can only be an explicit parameter in methods which are me'+
   'ssage handlers'#000+
-  '03147_E_Threadvars can be only',' static or global'#000+
+  '03147_E_Threadvars can be only static or gl','obal'#000+
   '03148_F_Direct assembler not supported for binary output format'#000+
   '03149_W_Don'#039't load OBJPAS unit manually, use {$mode objfpc} or {$m'+
   'ode delphi} instead'#000+
   '03150_E_OVERRIDE cannot be used in objects'#000+
-  '03151_E_Data types which requ','ire initialization/finalization cannot '+
+  '03151_E_Data types which require initializ','ation/finalization cannot '+
   'be used in variant records'#000+
   '03152_E_Resourcestrings can be only static or global'#000+
   '03153_E_Exit with argument cannot be used here'#000+
   '03154_E_The type of the storage symbol must be boolean'#000+
-  '03155_E_This symbol',' isn'#039't allowed as storage symbol'#000+
+  '03155_E_This symbol isn'#039't allowe','d as storage symbol'#000+
   '03156_E_Only classes which are compiled in $M+ mode can be published'#000+
   '03157_E_Procedure directive expected'#000+
   '03158_E_The value for a property index must be of an ordinal type'#000+
-  '03159_E_Procedure name too short to',' be exported'#000+
+  '03159_E_Procedure name too short to be exported'#000,
   '03160_E_No DEFFILE entry can be generated for unit global vars'#000+
   '03161_E_Compile without -WD option'#000+
   '03162_F_You need ObjFpc (-S2) or Delphi (-Sd) mode to compile this mod'+
   'ule'#000+
   '03163_E_Cannot export with index under $1'#000+
-  '03164_E_Expor','ting of variables is not supported under $1'#000+
+  '03164_E_Exporting of varia','bles is not supported under $1'#000+
   '03165_E_Improper GUID syntax'#000+
   '03168_W_Procedure named "$1" not found that is suitable for implementi'+
   'ng the $2.$3'#000+
   '03169_E_interface identifier expected'#000+
-  '03170_E_Type "$1" cannot be used as array inde','x type'#000+
-  '03171_E_Con- and destructors are not allowed in interfaces'#000+
+  '03170_E_Type "$1" cannot be used as array index type'#000+
+  '03171_','E_Con- and destructors are not allowed in interfaces'#000+
   '03172_E_Access specifiers cannot be used in INTERFACEs and OBJCPROTOCO'+
   'Ls'#000+
   '03173_E_An interface, helper or Objective-C protocol or category canno'+
   't contain fields'#000+
-  '03174_E_Cannot',' declare local procedure as EXTERNAL'#000+
+  '03174_E_Cannot declare loca','l procedure as EXTERNAL'#000+
   '03175_W_Some fields coming before "$1" were not initialized'#000+
   '03176_E_Some fields coming before "$1" were not initialized'#000+
   '03177_W_Some fields coming after "$1" were not initialized'#000+
-  '03178_E_VarArgs directiv','e (or '#039'...'#039' in MacPas) without CDecl'+
+  '03178_E_VarArgs directive (or '#039'...'#039' i','n MacPas) without CDecl'+
   '/CPPDecl/MWPascal/StdCall and External'#000+
   '03179_E_Self must be a normal (call-by-value) parameter'#000+
   '03180_E_Interface "$1" has no interface identification'#000+
-  '03181_E_Unknown class field or method identifier "$1"'#000,
-  '03182_W_Overriding calling convention "$1" with "$2"'#000+
+  '03181_E_Unknown class field or method identifier "$1"'#000+
+  '03182_W_Overr','iding calling convention "$1" with "$2"'#000+
   '03183_E_Typed constants of the type "procedure of object" can only be '+
   'initialized with NIL'#000+
   '03184_E_Default value can only be assigned to one parameter'#000+
-  '03185_E_Default parameter required f','or "$1"'#000+
-  '03186_W_Use of unsupported feature!'#000+
+  '03185_E_Default parameter required for "$1"'#000+
+  '03186','_W_Use of unsupported feature!'#000+
   '03187_H_C arrays are passed by reference'#000+
   '03188_E_C array of const must be the last argument'#000+
   '03189_H_Type "$1" redefinition'#000+
   '03190_W_cdecl'#039'ared functions have no high parameter'#000+
-  '03191_W_cdecl'#039'ared fu','nctions do not support open strings'#000+
+  '03191_W_cdecl'#039'ared functions do no','t support open strings'#000+
   '03192_E_Cannot initialize variables declared as threadvar'#000+
   '03193_E_Message directive is only allowed in Classes'#000+
   '03194_E_Procedure or Function expected'#000+
   '03195_W_Calling convention directive ignored: "$1"'#000+
-  '031','96_E_REINTRODUCE cannot be used in objects'#000+
+  '03196_E_REINTROD','UCE cannot be used in objects'#000+
   '03197_E_Each argument must have its own location'#000+
   '03198_E_Each argument must have an explicit location'#000+
   '03199_E_Unknown argument location'#000+
   '03200_E_32 Bit-Integer or pointer variable expected'#000+
-  '03201_E_G','oto statements are not allowed between different procedures'+
+  '03201_E_Goto statement','s are not allowed between different procedures'+
   #000+
   '03202_F_Procedure too complex, it requires too many registers'#000+
   '03203_E_Illegal expression'#000+
   '03204_E_Invalid integer expression'#000+
   '03205_E_Illegal qualifier'#000+
-  '03206_E_High range limit < low',' range limit'#000+
+  '03206_E_High range limit < low range limit'#000,
   '03207_E_Exit'#039's parameter must be the name of the procedure it is u'+
   'sed in or of a surrounding procedure'#000+
   '03208_E_Illegal assignment to for-loop variable "$1"'#000+
   '03209_E_Cannot declare local variable as EXTERNAL'#000+
-  '03210_E_Procedure is ','already declared EXTERNAL'#000+
+  '03210_E_Procedure is already decla','red EXTERNAL'#000+
   '03211_W_Implicit uses of Variants unit'#000+
   '03212_E_Class and static methods cannot be used in INTERFACES'#000+
   '03213_E_Overflow in arithmetic operation'#000+
   '03214_E_Protected or private expected'#000+
-  '03215_E_SLICE cannot be used outsi','de of parameter list'#000+
+  '03215_E_SLICE cannot be used outside of paramet','er list'#000+
   '03216_E_A DISPINTERFACE cannot have a parent class'#000+
   '03217_E_A DISPINTERFACE needs a guid'#000+
   '03218_W_Overridden methods must have a related return type. This code '+
-  'may crash, it depends on a Delphi parser bug ("$2" is overrid','den by '+
-  '"$1" which has another return type)'#000+
+  'may crash, it depends on a Delphi parser bug ("$2" is overridden by "$'+
+  '1" w','hich has another return type)'#000+
   '03219_E_Dispatch IDs must be ordinal constants'#000+
   '03220_E_The range of the array is too large'#000+
   '03221_E_The address cannot be taken of bit packed array elements and r'+
   'ecord fields'#000+
-  '03222_E_Dynamic arrays ','cannot be packed'#000+
+  '03222_E_Dynamic arrays cannot be pac','ked'#000+
   '03223_E_Bit packed array elements and record fields cannot be used as '+
   'loop variables'#000+
   '03224_E_VAR, TYPE and CONST are allowed only in records, objects and c'+
   'lasses'#000+
   '03225_E_This type cannot be a generic'#000+
-  '03226_W_Don'#039't load LINE','INFO unit manually, Use the -gl compiler '+
+  '03226_W_Don'#039't load LINEINFO unit man','ually, Use the -gl compiler '+
   'switch instead'#000+
   '03227_E_No function result type specified for function "$1"'#000+
   '03228_E_Specialization is only supported for generic types'#000+
-  '03229_E_Generics cannot be used as parameters when specializing g','ene'+
-  'rics'#000+
-  '03230_E_Constants of objects containing a VMT are not allowed'#000+
+  '03229_E_Generics cannot be used as parameters when specializing generi'+
+  'cs'#000+
+  '03230','_E_Constants of objects containing a VMT are not allowed'#000+
   '03231_E_Taking the address of labels defined outside the current scope'+
   ' isn'#039't allowed'#000+
   '03233_E_Cannot initialize variables declared as external'#000+
-  '03234_E_Illegal function res','ult type'#000+
-  '03235_E_No common type possible between "$1" and "$2"'#000+
+  '03234_E_Illegal function result type'#000+
+  '0323','5_E_No common type possible between "$1" and "$2"'#000+
   '03236_E_Generics without specialization cannot be used as a type for a'+
   ' variable'#000+
   '03237_W_Register list is ignored for pure assembler routines'#000+
-  '03238_E_Implements property must hav','e class or interface type'#000+
+  '03238_E_Implements property must have class or in','terface type'#000+
   '03239_E_Implements-property must implement interface of correct type, '+
   'found "$1" expected "$2"'#000+
   '03240_E_Implements-property must have read specifier'#000+
   '03241_E_Implements-property must not have write-specifier'#000+
-  '03242_E_','Implements-property must not have stored-specifier'#000+
+  '03242_E_Implements-pr','operty must not have stored-specifier'#000+
   '03243_E_Implements-property used on unimplemented interface: "$1"'#000+
   '03244_E_Floating point not supported for this target'#000+
   '03245_E_Class "$1" does not implement interface "$2"'#000+
-  '03246_E_Type used',' by implements must be an interface'#000+
+  '03246_E_Type used by implement','s must be an interface'#000+
   '03247_E_Variables cannot be exported with a different name on this tar'+
   'get, add the name to the declaration using the "export" directive (var'+
   'iable name: $1, declared export name: $2)'#000+
-  '03248_E_Weak external ','symbols are not supported for the current targ'+
+  '03248_E_Weak external symbols are n','ot supported for the current targ'+
   'et'#000+
   '03249_E_Forward type definition does not match'#000+
   '03250_N_Virtual method "$1" has a lower visibility ($2) than parent cl'+
   'ass $3 ($4)'#000+
-  '03251_E_Fields cannot appear after a method or property defini','tion, '+
-  'start a new visibility section first'#000+
+  '03251_E_Fields cannot appear after a method or property definition, st'+
+  'art a',' new visibility section first'#000+
   '03252_E_Parameters or result types cannot contain local type definitio'+
   'ns. Use a separate type definition in a type block.'#000+
   '03253_E_ABSTRACT and SEALED conflict'#000+
-  '03254_E_Cannot create a descendant of ','the sealed class "$1"'#000+
+  '03254_E_Cannot create a descendant of the sealed cl','ass "$1"'#000+
   '03255_E_SEALED class cannot have an ABSTRACT method'#000+
   '03256_E_Only virtual methods can be final'#000+
   '03257_E_Final method cannot be overridden: "$1"'#000+
   '03258_E_Only one message can be used per method.'#000+
-  '03259_E_Invalid enumerator ','identifier: "$1"'#000+
+  '03259_E_Invalid enumerator identifier: "','$1"'#000+
   '03260_E_Enumerator identifier required'#000+
   '03261_E_Enumerator MoveNext pattern method is not valid. Method must b'+
   'e a function with the Boolean return type and no required arguments.'#000+
-  '03262_E_Enumerator Current pattern property i','s not valid. Property m'+
+  '03262_E_Enumerator Current pattern property is not valid. ','Property m'+
   'ust have a getter.'#000+
   '03263_E_Only one enumerator MoveNext method is allowed per class/objec'+
   't'#000+
   '03264_E_Only one enumerator Current property is allowed per class/obje'+
   'ct'#000+
-  '03265_E_For in loop cannot be used for the type "$1"'#000,
-  '03266_E_Objective-C messages require their Objective-C selector name t'+
-  'o be specified using the "message" directive.'#000+
+  '03265_E_For in loop cannot be used for the type "$1"'#000+
+  '03266_E_Objec','tive-C messages require their Objective-C selector name'+
+  ' to be specified using the "message" directive.'#000+
   '03267_E_Objective-C does not have formal constructors nor destructors.'+
   ' Use the alloc, initXXX and dealloc messages.'#000+
-  '03268_E_','Message name is too long (max. 255 characters)'#000+
+  '03268_E_Message name ','is too long (max. 255 characters)'#000+
   '03269_E_Objective-C message symbol name for "$1" is too long'#000+
   '03270_H_Defining a new Objective-C root class. To derive from another '+
   'root class (e.g., NSObject), specify it as the parent class.'#000+
-  '0','3271_E_Objective-C classes cannot have published sections.'#000+
+  '03271_E_Object','ive-C classes cannot have published sections.'#000+
   '03272_F_This module requires an Objective-C mode switch to be compiled'+
   #000+
   '03273_E_Inherited methods can only be overridden in Objective-C and Ja'+
-  'va, add "override" (inherited method def','ined in $1)'#000+
-  '03274_H_Inherited methods can only be overridden in Objective-C and Ja'+
-  'va, add "override" (inherited method defined in $1).'#000+
+  'va, add "override" (inherited method defined in $1)'#000+
+  '0','3274_H_Inherited methods can only be overridden in Objective-C and '+
+  'Java, add "override" (inherited method defined in $1).'#000+
   '03275_E_Message name "$1" in inherited class is different from message'+
   ' name "$2" in current class.'#000+
-  '03276_','E_It is not yet possible to make unique copies of Objective-C '+
+  '03276_E_It is not y','et possible to make unique copies of Objective-C '+
   'or Java types'#000+
   '03277_E_Objective-C categories and Object Pascal class helpers cannot '+
   'be used as types'#000+
   '03278_E_Categories do not override, but replace methods. Use "reintrod'+
-  'uce" in','stead.'#000+
-  '03279_E_Replaced methods can only be reintroduced in Objective-C, add '+
+  'uce" instead.'#000+
+  '03279_','E_Replaced methods can only be reintroduced in Objective-C, ad'+
+  'd "reintroduce" (replaced method defined in $1).'#000+
+  '03280_H_Replaced methods can only be reintroduced in Objective-C, add '+
   '"reintroduce" (replaced method defined in $1).'#000+
-  '03280_H_Replaced methods can only be reintroduced in Objective-C, add '+
-  '"reintroduce" (replaced method defined in $1).',#000+
-  '03281_E_Getter for implements interface must use the target'#039's defa'+
-  'ult calling convention.'#000+
+  '03281_E_Gett','er for implements interface must use the target'#039's de'+
+  'fault calling convention.'#000+
   '03282_E_Typed files cannot contain reference-counted types.'#000+
   '03283_E_Operator is not overloaded: $2 "$1"'#000+
-  '03284_E_Operator is not overloaded: "$1" $2 "','$3"'#000+
-  '03285_E_Expected another $1 array elements'#000+
+  '03284_E_Operator is not overloaded: "$1" $2 "$3"'#000+
+  '03285_E_E','xpected another $1 array elements'#000+
   '03286_E_String constant too long while ansistrings are disabled'#000+
   '03287_E_Type cannot be used as univ parameter because its size is unkn'+
   'own at compile time: "$1"'#000+
-  '03288_E_Only one class constructo','r can be declared in class: "$1"'#000+
+  '03288_E_Only one class constructor can be decl','ared in class: "$1"'#000+
   '03289_E_Only one class destructor can be declared in class: "$1"'#000+
   '03290_E_Class constructors cannot have parameters'#000+
   '03291_E_Class destructors cannot have parameters'#000+
-  '03292_F_This construct requires the \{\$mod','eswitch objectivec1\} mod'+
+  '03292_F_This construct requires the \{\$modeswitch objec','tivec1\} mod'+
   'e switch to be active'#000+
   '03293_E_Unicodechar/string constants cannot be converted to ansi/short'+
   'string at compile-time'#000+
   '03294_E_For-in Objective-Pascal loops require \{\$modeswitch Objective'+
   'C2\} to be active'#000+
-  '03295_E_The ','compiler cannot find the NSFastEnumerationProtocol or NS'+
+  '03295_E_The compiler cann','ot find the NSFastEnumerationProtocol or NS'+
   'FastEnumerationState type in the CocoaAll unit'#000+
   '03296_E_Typed constants of the type '#039'procedure is nested'#039' can '+
   'only be initialized with NIL and global procedures/functions'#000+
-  '03297_F_Declar','ation of generic inside another generic is not allowed'+
+  '03297_F_Declaration of gene','ric inside another generic is not allowed'+
   #000+
   '03298_E_Forward declaration "$1" must be resolved before a class can c'+
   'onform to or implement it'#000+
   '03299_E_Record types cannot have published sections'#000+
-  '03300_E_Destructors are not allowed i','n records or helpers'#000+
+  '03300_E_Destructors are not allowed in records or ','helpers'#000+
   '03301_E_Class methods must be static in records'#000+
   '03302_E_Parameterless constructors are not allowed in records or recor'+
   'd/type helpers'#000+
   '03303_E_Either the result or at least one parameter must be of type "$'+
   '1"'#000+
-  '03304_E_Type ','parameters may require initialization/finalization - ca'+
+  '03304_E_Type parameters ma','y require initialization/finalization - ca'+
   'nnot be used in variant records'#000+
   '03305_E_Variables being declared as external cannot be in a custom sec'+
   'tion'#000+
   '03306_E_Non-static and non-global variables cannot have a section dire'+
   'ctive'#000+
-  '03','307_E_"$1" is not allowed in helper types'#000+
+  '03307_E_"$1" is',' not allowed in helper types'#000+
   '03308_E_Class constructors are not allowed in helpers'#000+
   '03309_E_The use of "inherited" is not allowed in a record'#000+
   '03310_E_Type declarations are not allowed in local or anonymous record'+
   's'#000+
-  '03311_E_Duplic','ate implements clause for interface "$1"'#000+
+  '03311_E_Duplicate implement','s clause for interface "$1"'#000+
   '03312_E_Interface "$1" cannot be delegated by "$2", it already has met'+
   'hod resolutions'#000+
   '03313_E_Interface "$1" cannot have method resolutions, "$2" already de'+
   'legates it'#000+
   '03314_E_Invalid codepage'#000+
-  '03315_E','_Only fields (var-sections) and constants can be final in obj'+
+  '03315_E_Only fields ','(var-sections) and constants can be final in obj'+
   'ect types'#000+
   '03316_E_Final fields are currently only supported for external classes'+
   #000+
   '03317_E_Typed constants are not allowed here, only formal constants ar'+
   'e'#000+
-  '03318_E_Constructors are n','ot automatically inherited in the JVM; exp'+
+  '03318_E_Constructors are not automatica','lly inherited in the JVM; exp'+
   'licitly add a constructor that calls the inherited one if you need it'#000+
   '03319_D_Parsing internally generated code: $1'#000+
   '03320_E_This language feature is not supported on managed VM targets'#000+
-  '03321_E_Calli','ng a virtual constructor for the current instance insid'+
+  '03321_E_Calling a virtual ','constructor for the current instance insid'+
   'e another constructor is not possible on the JVM target'#000+
   '03322_E_Overriding method "$1" cannot have a lower visibility ($2) tha'+
   'n in parent class $3 ($4)'#000+
-  '03323_E_Procedure/Function declar','ed with call option NOSTACKFRAME bu'+
+  '03323_E_Procedure/Function declared with call ','option NOSTACKFRAME bu'+
   't without ASSEMBLER'#000+
   '03324_E_Procedure/Function declared with call option NOSTACKFRAME but '+
   'local stack size is $1'#000+
   '03325_E_Cannot generate property getter/setter $1 because its name cla'+
-  'shes with existing ide','ntifier $2'#000+
-  '03326_W_Automatically generated property getter/setter $1 overrides th'+
-  'e same-named getter/setter in class $2'#000+
+  'shes with existing identifier $2'#000+
+  '03','326_W_Automatically generated property getter/setter $1 overrides '+
+  'the same-named getter/setter in class $2'#000+
   '03327_W_Case mismatch between declared property getter/setter $1 and a'+
-  'utomatically constructed name $2, not changing dec','lared name'#000+
-  '03328_E_Constants declarations are not allowed in local or anonymous r'+
-  'ecords'#000+
+  'utomatically constructed name $2, not changing declared name'#000+
+  '03','328_E_Constants declarations are not allowed in local or anonymous'+
+  ' records'#000+
   '03329_E_Method declarations are not allowed in local or anonymous reco'+
   'rds'#000+
   '03330_E_Property declarations are not allowed in local or anonymous re'+
   'cords'#000+
-  '03','331_E_Class member declarations are not allowed in local or anonym'+
+  '03331_E_Class m','ember declarations are not allowed in local or anonym'+
   'ous records'#000+
   '03332_E_Visibility section "$1" not allowed in records'#000+
   '03333_E_Directive "$1" not allowed here'#000+
   '03334_E_Assembler blocks not allowed inside generics'#000+
-  '03335_E_Proper','ties can be only static, global or inside structured t'+
+  '03335_E_Properties can be o','nly static, global or inside structured t'+
   'ypes'#000+
   '03336_E_Overloaded routines have the same mangled name'#000+
   '03337_E_Default values can only be specified for value, const and cons'+
   'tref parameters'#000+
   '03338_W_Pointer type "$1" ignored'#000+
-  '03339_','E_Global Generic template references static symtable'#000+
+  '03339_E_Global Gene','ric template references static symtable'#000+
   '03340_UL_Unit $1 has been already compiled meanwhile.'#000+
   '03341_E_Explicit implementation of methods for specializations of gene'+
   'rics is not allowed'#000+
-  '03342_E_Generic methods are not allowed in ','interfaces'#000+
-  '03343_E_Generic methods can not be virtual'#000+
+  '03342_E_Generic methods are not allowed in interfaces'#000+
+  '03','343_E_Generic methods can not be virtual'#000+
   '03344_E_Dynamic packages not supported for target OS'#000+
   '03345_E_The HardFloat directive cannot be used if soft float code is g'+
   'enerated or fpu emulation is turned on'#000+
-  '03346_E_Index $1 is not ','a valid internal function index'#000+
+  '03346_E_Index $1 is not a valid inter','nal function index'#000+
   '04000_E_Type mismatch'#000+
   '04001_E_Incompatible types: got "$1" expected "$2"'#000+
   '04002_E_Type mismatch between "$1" and "$2"'#000+
   '04003_E_Type identifier expected'#000+
   '04004_E_Variable identifier expected'#000+
-  '04005_E_Integer expre','ssion expected, but got "$1"'#000+
+  '04005_E_Integer expression expecte','d, but got "$1"'#000+
   '04006_E_Boolean expression expected, but got "$1"'#000+
   '04007_E_Ordinal expression expected'#000+
   '04008_E_pointer type expected, but got "$1"'#000+
   '04009_E_class type expected, but got "$1"'#000+
-  '04011_E_Can'#039't evaluate constant express','ion'#000+
-  '04012_E_Set elements are not compatible'#000+
+  '04011_E_Can'#039't evaluate constant expression'#000+
+  '04012_E_S','et elements are not compatible'#000+
   '04013_E_Operation not implemented for sets'#000+
   '04014_W_Automatic type conversion from floating type to COMP which is '+
   'an integer type'#000+
   '04015_H_use DIV instead to get an integer result'#000+
-  '04016_E_String typ','es have to match exactly in $V+ mode'#000+
+  '04016_E_String types have to ma','tch exactly in $V+ mode'#000+
   '04017_E_succ or pred on enums with assignments not possible'#000+
   '04018_E_Can'#039't read or write variables of this type'#000+
   '04019_E_Can'#039't use readln or writeln on typed file'#000+
-  '04020_E_Can'#039't use read or write on untyped',' file.'#000+
-  '04021_E_Type conflict between set elements'#000+
+  '04020_E_Can'#039't use read or write on untyped file.'#000+
+  '04021_','E_Type conflict between set elements'#000+
   '04022_W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+
   '04023_E_Integer or real expression expected'#000+
   '04024_E_Wrong type "$1" in array constructor'#000+
-  '04025_E_Incompatible type for arg no. $','1: Got "$2", expected "$3"'#000+
+  '04025_E_Incompatible type for arg no. $1: Got "$2", ','expected "$3"'#000+
   '04026_E_Method (variable) and Procedure (variable) are not compatible'#000+
   '04027_E_Illegal constant passed to internal math function'#000+
   '04028_E_Can'#039't take the address of constant expressions'#000+
-  '04029_E_Argument cannot be ass','igned to'#000+
-  '04030_E_Can'#039't assign local procedure/function to procedure variabl'+
-  'e'#000+
+  '04029_E_Argument cannot be assigned to'#000+
+  '0403','0_E_Can'#039't assign local procedure/function to procedure varia'+
+  'ble'#000+
   '04031_E_Can'#039't assign values to an address'#000+
   '04032_E_Can'#039't assign values to const variable'#000+
   '04033_E_Array type required'#000+
   '04034_E_interface type expected, but got "$1"'#000+
-  '0','4035_H_Mixing signed expressions and longwords gives a 64bit result'+
+  '04035_H_Mixing',' signed expressions and longwords gives a 64bit result'+
   #000+
   '04036_W_Mixing signed expressions and cardinals here may cause a range'+
   ' check error'#000+
   '04037_E_Typecast has different size ($1 -> $2) in assignment'#000+
-  '04038_E_enums with assignmen','ts cannot be used as array index'#000+
+  '04038_E_enums with assignments cannot be ','used as array index'#000+
   '04039_E_Class or Object types "$1" and "$2" are not related'#000+
   '04040_W_Class types "$1" and "$2" are not related'#000+
   '04041_E_Class or interface type expected, but got "$1"'#000+
-  '04042_E_Type "$1" is not completely define','d'#000+
-  '04043_W_String literal has more characters than short string length'#000+
+  '04042_E_Type "$1" is not completely defined'#000+
+  '04043_W_Str','ing literal has more characters than short string length'#000+
   '04044_W_Comparison might be always false due to range of constant and '+
   'expression'#000+
   '04045_W_Comparison might be always true due to range of constant and e'+
   'xpression'#000+
-  '04046_W_C','onstructing a class "$1" with abstract method "$2"'#000+
+  '04046_W_Constructing a',' class "$1" with abstract method "$2"'#000+
   '04047_H_The left operand of the IN operator should be byte sized'#000+
   '04048_W_Type size mismatch, possible loss of data / range check error'#000+
-  '04049_H_Type size mismatch, possible loss of data / ra','nge check erro'+
+  '04049_H_Type size mismatch, possible loss of data / range check err','o'+
   'r'#000+
   '04050_E_The address of an abstract method cannot be taken'#000+
   '04051_E_Assignments to formal parameters and open arrays are not possi'+
   'ble'#000+
   '04052_E_Constant Expression expected'#000+
-  '04053_E_Operation "$1" not supported for types "$2" and',' "$3"'#000+
-  '04054_E_Illegal type conversion: "$1" to "$2"'#000+
+  '04053_E_Operation "$1" not supported for types "$2" and "$3"'#000+
+  '04054_E','_Illegal type conversion: "$1" to "$2"'#000+
   '04055_H_Conversion between ordinals and pointers is not portable'#000+
   '04056_W_Conversion between ordinals and pointers is not portable'#000+
-  '04057_E_Can'#039't determine which overloaded function to call'#000,
-  '04058_E_Illegal counter variable'#000+
+  '04057_E_Can'#039't determine which overloaded function to call'#000+
+  '04058_E_Illeg','al counter variable'#000+
   '04059_W_Converting constant real value to double for C variable argume'+
   'nt, add explicit typecast to prevent this.'#000+
   '04060_E_Class or COM interface type expected, but got "$1"'#000+
-  '04061_E_Constant packed arrays are ','not yet supported'#000+
+  '04061_E_Constant packed arrays are not yet suppo','rted'#000+
   '04062_E_Incompatible type for arg no. $1: Got "$2" expected "(Bit)Pack'+
   'ed Array"'#000+
   '04063_E_Incompatible type for arg no. $1: Got "$2" expected "(not pack'+
   'ed) Array"'#000+
-  '04064_E_Elements of packed arrays cannot be of a type which n','eed to '+
-  'be initialised'#000+
+  '04064_E_Elements of packed arrays cannot be of a type which need to be'+
+  ' ini','tialised'#000+
   '04065_E_Constant packed records and objects are not yet supported'#000+
   '04066_W_Arithmetic "$1" on untyped pointer is unportable to {$T+}, sug'+
   'gest typecast'#000+
   '04076_E_Can'#039't take address of a subroutine marked as local'#000+
-  '04077_E_C','an'#039't export subroutine marked as local from a unit'#000+
+  '04077_E_Can'#039't export s','ubroutine marked as local from a unit'#000+
   '04078_E_Type is not automatable: "$1"'#000+
   '04079_H_Converting the operands to "$1" before doing the add could pre'+
   'vent overflow errors.'#000+
-  '04080_H_Converting the operands to "$1" before doing the su','btract co'+
-  'uld prevent overflow errors.'#000+
+  '04080_H_Converting the operands to "$1" before doing the subtract coul'+
+  'd ','prevent overflow errors.'#000+
   '04081_H_Converting the operands to "$1" before doing the multiply coul'+
   'd prevent overflow errors.'#000+
   '04082_W_Converting pointers to signed integers may result in wrong com'+
-  'parison results and range errors, u','se an unsigned type instead.'#000+
+  'parison results and range errors, use an unsigne','d type instead.'#000+
   '04083_E_Interface type $1 has no valid GUID'#000+
   '04084_E_Invalid selector name "$1"'#000+
   '04085_E_Expected Objective-C method, but got $1'#000+
   '04086_E_Expected Objective-C method or constant method name'#000+
-  '04087_E_No type info ava','ilable for this type'#000+
+  '04087_E_No type info available for th','is type'#000+
   '04088_E_Ordinal or string expression expected'#000+
   '04089_E_String expression expected'#000+
   '04090_W_Converting 0 to NIL'#000+
   '04091_E_Objective-C protocol type expected, but got "$1"'#000+
-  '04092_E_The type "$1" is not supported for interactio','n with the Obje'+
+  '04092_E_The type "$1" is not supported for interaction with the Ob','je'+
   'ctive-C and the blocks runtime.'#000+
   '04093_E_Class or objcclass type expected, but got "$1"'#000+
   '04094_E_Objcclass type expected'#000+
   '04095_W_Coerced univ parameter type in procedural variable may cause c'+
-  'rash or memory corruption: $1 to $2'#000,
-  '04096_E_Type parameters of specializations of generics cannot referenc'+
-  'e the currently specialized type'#000+
+  'rash or memory corruption: $1 to $2'#000+
+  '04096_E_Type ','parameters of specializations of generics cannot refere'+
+  'nce the currently specialized type'#000+
   '04097_E_Type parameters are not allowed on non-generic class/record/ob'+
   'ject procedure or function'#000+
-  '04098_E_Generic declaration of "$1" diff','ers from previous declaratio'+
+  '04098_E_Generic declaration of "$1" differs from prev','ious declaratio'+
   'n'#000+
   '04099_E_Helper type expected'#000+
   '04100_E_Record type expected'#000+
@@ -687,52 +687,52 @@
   '04101_E_Derived class helper must extend a subclass of "$1" or the cla'+
   'ss itself'#000+
   '04102_E_Derived record or type helper must extend "$1"'#000+
-  '04103_E_Invalid a','ssignment, procedures return no value'#000+
+  '04103_E_Invalid assignment, pr','ocedures return no value'#000+
   '04104_W_Implicit string type conversion from "$1" to "$2"'#000+
   '04105_W_Implicit string type conversion with potential data loss from '+
   '"$1" to "$2"'#000+
   '04106_-W_Explicit string typecast from "$1" to "$2"'#000+
-  '04107_-W_','Explicit string typecast with potential data loss from "$1"'+
+  '04107_-W_Explicit stri','ng typecast with potential data loss from "$1"'+
   ' to "$2"'#000+
   '04108_W_Unicode constant cast with potential data loss'#000+
   '04109_E_range check error while evaluating constants ($1 must be betwe'+
   'en $2 and $3)'#000+
-  '04110_W_range check error while e','valuating constants ($1 must be bet'+
+  '04110_W_range check error while evaluating con','stants ($1 must be bet'+
   'ween $2 and $3)'#000+
   '04111_E_This type is not supported for the Default() intrinsic'#000+
   '04112_E_JVM virtual class methods cannot be static'#000+
   '04113_E_Final (class) fields can only be assigned in their class'#039' '+
-  '(class) c','onstructor'#000+
-  '04114_E_It is not possible to typecast untyped parameters on managed p'+
-  'latforms, simply assign a value to them instead.'#000+
+  '(class) constructor'#000+
+  '04','114_E_It is not possible to typecast untyped parameters on managed'+
+  ' platforms, simply assign a value to them instead.'#000+
   '04115_E_The assignment side of an expression cannot be typecasted to a'+
   ' supertype on managed platforms'#000+
-  '04116_-W','_The interface method "$1" raises the visibility of "$2" to '+
+  '04116_-W_The interfac','e method "$1" raises the visibility of "$2" to '+
   'public when accessed via an interface instance'#000+
   '04117_E_The interface method "$1" has a higher visibility (public) tha'+
   'n "$2"'#000+
-  '04118_E_TYPEOF can only be used on object types with VMT',#000+
-  '04119_E_It is not possible to define a default value for a parameter o'+
-  'f type "$1"'#000+
+  '04118_E_TYPEOF can only be used on object types with VMT'#000+
+  '04119_E_It i','s not possible to define a default value for a parameter'+
+  ' of type "$1"'#000+
   '04120_E_Type "$1" cannot be extended by a type helper'#000+
   '04121_E_Procedure or function must be far in order to allow taking its'+
   ' address: "$1"'#000+
-  '04122_W_Creating a','n instance of abstract class "$1"'#000+
+  '04122_W_Creating an instance of',' abstract class "$1"'#000+
   '04123_E_Subroutine references cannot be declared as "of object" or "is'+
   ' nested", they can always refer to any kind of subroutine'#000+
   '04124_E_Procedure variables in that memory model do not store segment '+
-  'informat','ion'#000+
-  '04125_W_The first value of a set constructur range is greater then the'+
-  ' second value, so the range describes an empty set.'#000+
+  'information'#000+
+  '04125_W_T','he first value of a set constructur range is greater then t'+
+  'he second value, so the range describes an empty set.'#000+
   '05000_E_Identifier not found "$1"'#000+
   '05001_F_Internal Error in SymTableStack()'#000+
   '05002_E_Duplicate identifier "$1"'#000+
-  '0500','3_H_Identifier already defined in $1 at line $2'#000+
+  '05003_H_Identifie','r already defined in $1 at line $2'#000+
   '05004_E_Unknown identifier "$1"'#000+
   '05005_E_Forward declaration not solved "$1"'#000+
   '05007_E_Error in type definition'#000+
   '05009_E_Forward type not resolved "$1"'#000+
-  '05010_E_Only static variables can be used in',' static methods or outsi'+
+  '05010_E_Only static variables can be used in static metho','ds or outsi'+
   'de methods'#000+
   '05012_E_Record or object or class type expected'#000+
   '05013_E_Instances of classes or objects with an abstract method are no'+
@@ -739,81 +739,82 @@
   't allowed'#000+
   '05014_W_Label not defined "$1"'#000+
   '05015_E_Label used but not defined "$1"'#000+
-  '05016_','E_Illegal label declaration'#000+
+  '05016_E_Illegal lab','el declaration'#000+
   '05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+
   '05018_E_Label not found'#000+
   '05019_E_identifier isn'#039't a label'#000+
   '05020_E_label already defined'#000+
   '05021_E_illegal type declaration of set elements'#000+
-  '05022_E_Forward cl','ass definition not resolved "$1"'#000+
+  '05022_E_Forward class definitio','n not resolved "$1"'#000+
   '05023_H_Unit "$1" not used in $2'#000+
   '05024_H_Parameter "$1" not used'#000+
   '05025_N_Local variable "$1" not used'#000+
   '05026_H_Value parameter "$1" is assigned but never used'#000+
-  '05027_N_Local variable "$1" is assigned but never',' used'#000+
-  '05028_H_Local $1 "$2" is not used'#000+
+  '05027_N_Local variable "$1" is assigned but never used'#000+
+  '05028_H','_Local $1 "$2" is not used'#000+
   '05029_N_Private field "$1.$2" is never used'#000+
   '05030_N_Private field "$1.$2" is assigned but never used'#000+
   '05031_N_Private method "$1.$2" never used'#000+
   '05032_E_Set type expected'#000+
-  '05033_W_Function result does no','t seem to be set'#000+
+  '05033_W_Function result does not seem to be ','set'#000+
   '05034_W_Type "$1" is not aligned correctly in current record for C'#000+
   '05035_E_Unknown record field identifier "$1"'#000+
   '05036_W_Local variable "$1" does not seem to be initialized'#000+
-  '05037_W_Variable "$1" does not seem to be initializ','ed'#000+
-  '05038_E_identifier idents no member "$1"'#000+
+  '05037_W_Variable "$1" does not seem to be initialized'#000+
+  '05038_E_id','entifier idents no member "$1"'#000+
   '05039_H_Found declaration: $1'#000+
   '05040_E_Data element too large'#000+
   '05042_E_No matching implementation for interface method "$1" found'#000+
   '05043_W_Symbol "$1" is deprecated'#000+
-  '05044_W_Symbol "$1" is not portabl','e'#000+
-  '05055_W_Symbol "$1" is not implemented'#000+
+  '05044_W_Symbol "$1" is not portable'#000+
+  '05055_W_Sym','bol "$1" is not implemented'#000+
   '05056_E_Can'#039't create unique type from this type'#000+
   '05057_H_Local variable "$1" does not seem to be initialized'#000+
   '05058_H_Variable "$1" does not seem to be initialized'#000+
-  '05059_W_Function result variable does',' not seem to be initialized'#000+
+  '05059_W_Function result variable does not seem to ','be initialized'#000+
   '05060_H_Function result variable does not seem to be initialized'#000+
   '05061_W_Variable "$1" read but nowhere assigned'#000+
   '05062_H_Found abstract method: $1'#000+
   '05063_W_Symbol "$1" is experimental'#000+
-  '05064_W_Forward declaration "','$1" not resolved, assumed external'#000+
+  '05064_W_Forward declaration "$1" not resol','ved, assumed external'#000+
   '05065_W_Symbol "$1" is belongs to a library'#000+
   '05066_W_Symbol "$1" is deprecated: "$2"'#000+
   '05067_E_Cannot find an enumerator for the type "$1"'#000+
   '05068_E_Cannot find a "MoveNext" method in enumerator "$1"'#000+
-  '05069_E_Ca','nnot find a "Current" property in enumerator "$1"'#000+
+  '05069_E_Cannot find a "','Current" property in enumerator "$1"'#000+
   '05070_E_Mismatch between number of declared parameters and number of c'+
   'olons in message string.'#000+
   '05071_N_Private type "$1.$2" never used'#000+
   '05072_N_Private const "$1.$2" never used'#000+
-  '05073_N_Privat','e property "$1.$2" never used'#000+
+  '05073_N_Private property "$','1.$2" never used'#000+
   '05074_W_Unit "$1" is deprecated'#000+
   '05075_W_Unit "$1" is deprecated: "$2"'#000+
   '05076_W_Unit "$1" is not portable'#000+
   '05077_W_Unit "$1" is belongs to a library'#000+
   '05078_W_Unit "$1" is not implemented'#000+
-  '05079_W_Unit "$1" is experi','mental'#000+
-  '05080_E_No full definition of the formally declared class "$1" is in s'+
-  'cope. Add the unit containing its full definition to the uses clause.'#000+
+  '05079_W_Unit "$1" is experimental'#000+
+  '05080_','E_No full definition of the formally declared class "$1" is in'+
+  ' scope. Add the unit containing its full definition to the uses clause'+
+  '.'#000+
   '05081_E_Gotos into initialization or finalization blocks of units are '+
   'not allowed'#000+
-  '05082_E_Inv','alid external name "$1" for formal class "$2"'#000+
+  '05082_E_Invalid external',' name "$1" for formal class "$2"'#000+
   '05083_E_Complete class definition with external name "$1" here'#000+
   '05084_W_Possible library conflict: symbol "$1" from library "$2" also '+
   'found in library "$3"'#000+
-  '05085_E_Cannot add implicit constructor',' '#039'Create'#039' because ide'+
+  '05085_E_Cannot add implicit constructor '#039'Create'#039' bec','ause ide'+
   'ntifier already used by "$1"'#000+
   '05086_E_Cannot generate default constructor for class, because parent '+
   'has no parameterless constructor'#000+
   '05087_D_Adding helper for $1'#000+
   '05088_E_Found declaration: $1'#000+
-  '05089_W_Local variable "$1" ','of a managed type does not seem to be in'+
+  '05089_W_Local variable "$1" of a managed ','type does not seem to be in'+
   'itialized'#000+
   '05090_W_Variable "$1" of a managed type does not seem to be initialize'+
   'd'#000+
   '05091_H_Local variable "$1" of a managed type does not seem to be init'+
   'ialized'#000+
-  '05092_H_Variable "$1" of a managed type ','does not seem to be initiali'+
+  '05092_H_Variable "$1" of a managed type does not seem',' to be initiali'+
   'zed'#000+
   '05093_W_function result variable of a managed type does not seem to be'+
   ' initialized'#000+
@@ -820,105 +821,105 @@
   '05094_H_Function result variable of a managed type does not seem to be'+
   ' initialized'#000+
   '05095_W_Duplicate identifier "$1"'#000+
-  '06009_E_','Parameter list size exceeds 65535 bytes'#000+
+  '06009_E_Parameter lis','t size exceeds 65535 bytes'#000+
   '06012_E_File types must be var parameters'#000+
   '06013_E_The use of a far pointer isn'#039't allowed there'#000+
   '06015_E_EXPORT declared functions cannot be called'#000+
-  '06016_W_Possible illegal call of constructor or destru','ctor'#000+
-  '06017_N_Inefficient code'#000+
+  '06016_W_Possible illegal call of constructor or destructor'#000+
+  '06017_N_','Inefficient code'#000+
   '06018_W_unreachable code'#000+
   '06020_E_Abstract methods cannot be called directly'#000+
   '06027_DL_Register $1 weight $2 $3'#000+
   '06029_DL_Stack frame is omitted'#000+
   '06031_E_Object or class methods cannot be inline.'#000+
-  '06032_E_Procvar ca','lls cannot be inline.'#000+
+  '06032_E_Procvar calls cannot be',' inline.'#000+
   '06033_E_No code for inline procedure stored'#000+
   '06035_E_Element zero of an ansi/wide- or longstring cannot be accessed'+
   ', use (set)length instead'#000+
   '06037_E_Constructors or destructors cannot be called inside a '#039'wit'+
   'h'#039' clause'#000+
-  '06','038_E_Cannot call message handler methods directly'#000+
+  '06038_E_Cannot ','call message handler methods directly'#000+
   '06039_E_Jump in or outside of an exception block'#000+
   '06040_E_Control flow statements are not allowed in a finally block'#000+
   '06041_W_Parameters size exceeds limit for certain cpu'#039's'#000+
-  '06042_W_Local var','iable size exceed limit for certain cpu'#039's'#000+
+  '06042_W_Local variable size ex','ceed limit for certain cpu'#039's'#000+
   '06043_E_Local variables size exceeds supported limit'#000+
   '06044_E_BREAK not allowed'#000+
   '06045_E_CONTINUE not allowed'#000+
   '06046_F_Unknown compilerproc "$1". Check if you use the correct run ti'+
   'me library.'#000+
-  '06047_F_','Cannot find system type "$1". Check if you use the correct r'+
+  '06047_F_Cannot find s','ystem type "$1". Check if you use the correct r'+
   'un time library.'#000+
   '06048_H_Inherited call to abstract method ignored'#000+
   '06049_E_Goto label "$1" not defined or optimized away'#000+
-  '06050_F_Cannot find type "$1" in unit "$2". Check if you us','e the cor'+
-  'rect run time library.'#000+
+  '06050_F_Cannot find type "$1" in unit "$2". Check if you use the corre'+
+  'ct',' run time library.'#000+
   '06051_E_Interprocedural gotos are allowed only to outer subroutines'#000+
   '06052_E_Label must be defined in the same scope as it is declared'#000+
   '06053_E_Leaving procedures containing explicit or implicit exceptions '+
-  'fram','es using goto is not allowed'#000+
+  'frames using goto',' is not allowed'#000+
   '06054_E_In ISO mode, the mod operator is defined only for positive quo'+
   'tient'#000+
   '06055_DL_Auto inlining: $1'#000+
   '06056_E_The function used, is not supported by the selected instructio'+
   'n set: $1'#000+
-  '06057_F_Maximum number of un','its ($1) reached for the current target'#000+
+  '06057_F_Maximum number of units ($1) reac','hed for the current target'#000+
   '06058_N_Call to subroutine "$1" marked as inline is not inlined'#000+
   '07000_DL_Starting $1 styled assembler parsing'#000+
   '07001_DL_Finished $1 styled assembler parsing'#000+
   '07002_E_Non-label pattern contains @'#000+
-  '07004_E','_Error building record offset'#000+
+  '07004_E_Error buildi','ng record offset'#000+
   '07005_E_OFFSET used without identifier'#000+
   '07006_E_TYPE used without identifier'#000+
   '07007_E_Cannot use local variable or parameters here'#000+
   '07008_E_need to use OFFSET here'#000+
   '07009_E_need to use $ here'#000+
-  '07010_E_Cannot use mul','tiple relocatable symbols'#000+
+  '07010_E_Cannot use multiple relocat','able symbols'#000+
   '07011_E_Relocatable symbol can only be added'#000+
   '07012_E_Invalid constant expression'#000+
   '07013_E_Relocatable symbol is not allowed'#000+
   '07014_E_Invalid reference syntax'#000+
   '07015_E_You cannot reach $1 from that code'#000+
-  '07016_E_Local s','ymbols/labels are not allowed as references'#000+
+  '07016_E_Local symbols/labels',' are not allowed as references'#000+
   '07017_E_Invalid base and index register usage'#000+
   '07018_W_Possible error in object field handling'#000+
   '07019_E_Wrong scale factor specified'#000+
   '07020_E_Multiple index register usage'#000+
-  '07021_E_Invalid operand typ','e'#000+
-  '07022_E_Invalid string as opcode operand: $1'#000+
+  '07021_E_Invalid operand type'#000+
+  '07022_E_Inv','alid string as opcode operand: $1'#000+
   '07023_W_@CODE and @DATA not supported'#000+
   '07024_E_Null label references are not allowed'#000+
   '07025_E_Divide by zero in asm evaluator'#000+
   '07026_E_Illegal expression'#000+
   '07027_E_escape sequence ignored: $1'#000+
-  '07028_','E_Invalid symbol reference'#000+
+  '07028_E_Invalid sym','bol reference'#000+
   '07029_W_Fwait can cause emulation problems with emu387'#000+
   '07030_W_$1 without operand translated into $1P'#000+
   '07031_W_ENTER instruction is not supported by Linux kernel'#000+
   '07032_W_Calling an overload function in assembler'#000+
-  '07','033_E_Unsupported symbol type for operand'#000+
+  '07033_E_Unsuppo','rted symbol type for operand'#000+
   '07034_E_Constant value out of bounds'#000+
   '07035_E_Error converting decimal $1'#000+
   '07036_E_Error converting octal $1'#000+
   '07037_E_Error converting binary $1'#000+
   '07038_E_Error converting hexadecimal $1'#000+
-  '07039_H_$1 trans','lated to $2'#000+
-  '07040_W_$1 is associated to an overloaded function'#000+
+  '07039_H_$1 translated to $2'#000+
+  '0','7040_W_$1 is associated to an overloaded function'#000+
   '07041_E_Cannot use SELF outside a method'#000+
   '07042_E_Cannot use OLDEBP outside a nested procedure'#000+
   '07043_W_Procedures cannot return any value in asm code'#000+
   '07044_E_SEG not supported'#000+
-  '07','045_E_Size suffix and destination or source size do not match'#000+
+  '07045_E_Size su','ffix and destination or source size do not match'#000+
   '07046_W_Size suffix and destination or source size do not match'#000+
   '07047_E_Assembler syntax error'#000+
   '07048_E_Invalid combination of opcode and operands'#000+
-  '07049_E_Assembler syntax error i','n operand'#000+
-  '07050_E_Assembler syntax error in constant'#000+
+  '07049_E_Assembler syntax error in operand'#000+
+  '070','50_E_Assembler syntax error in constant'#000+
   '07051_E_Invalid String expression'#000+
   '07052_W_constant with symbol $1 for address which is not on a pointer'#000+
   '07053_E_Unrecognized opcode $1'#000+
   '07054_E_Invalid or missing opcode'#000+
-  '07055_E_Invalid co','mbination of prefix and opcode: $1'#000+
+  '07055_E_Invalid combination of ','prefix and opcode: $1'#000+
   '07056_E_Invalid combination of override and opcode: $1'#000+
   '07057_E_Too many operands on line'#000+
   '07058_W_NEAR ignored'#000+
@@ -925,210 +926,210 @@
   '07059_W_FAR ignored'#000+
   '07060_E_Duplicate local symbol $1'#000+
   '07061_E_Undefined local symbol $1'#000+
-  '07062_E','_Unknown label identifier $1'#000+
+  '07062_E_Unknown labe','l identifier $1'#000+
   '07063_E_Invalid register name'#000+
   '07064_E_Invalid floating point register name'#000+
   '07066_W_Modulo not supported'#000+
   '07067_E_Invalid floating point constant $1'#000+
   '07068_E_Invalid floating point expression'#000+
-  '07069_E_Wrong symbol t','ype'#000+
-  '07070_E_Cannot index a local var or parameter with a register'#000+
+  '07069_E_Wrong symbol type'#000+
+  '07070_E_C','annot index a local var or parameter with a register'#000+
   '07071_E_Invalid segment override expression'#000+
   '07072_W_Identifier $1 supposed external'#000+
   '07073_E_Strings not allowed as constants'#000+
   '07074_E_No type of variable specified'#000+
-  '07075_E_ass','embler code not returned to text section'#000+
+  '07075_E_assembler code n','ot returned to text section'#000+
   '07076_E_Not a directive or local symbol $1'#000+
   '07077_E_Using a defined name as a local label'#000+
   '07078_E_Dollar token is used without an identifier'#000+
   '07079_W_32bit constant created for address'#000+
-  '07080_N_.align i','s target specific, use .balign or .p2align'#000+
+  '07080_N_.align is target spec','ific, use .balign or .p2align'#000+
   '07081_E_Cannot directly access fields of pointer-based parameters'#000+
   '07082_E_Can'#039't access fields of objects/classes directly'#000+
   '07083_E_No size specified and unable to determine the size of the oper'+
-  'ands'#000,
-  '07084_E_Cannot use RESULT in this function'#000+
+  'ands'#000+
+  '07084_E_Canno','t use RESULT in this function'#000+
   '07086_W_"$1" without operand translated into "$1 %st,%st(1)"'#000+
   '07087_W_"$1 %st(n)" translated into "$1 %st,%st(n)"'#000+
   '07088_W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+
-  '07089_E_Char < not allowed here'#000,
-  '07090_E_Char > not allowed here'#000+
+  '07089_E_Char < not allowed here'#000+
+  '07090_E_Char ','> not allowed here'#000+
   '07093_W_ALIGN not supported'#000+
   '07094_E_Inc and Dec cannot be together'#000+
   '07095_E_Invalid register list for MOVEM or FMOVEM'#000+
   '07096_E_Reglist invalid for opcode'#000+
   '07097_E_Higher cpu mode required ($1)'#000+
-  '07098_W_No size sp','ecified and unable to determine the size of the op'+
+  '07098_W_No size specified and u','nable to determine the size of the op'+
   'erands, using DWORD as default'#000+
   '07099_E_Syntax error while trying to parse a shifter operand'#000+
   '07100_E_Address of packed component is not at a byte boundary'#000+
-  '07101_W_No size specified and unable',' to determine the size of the op'+
+  '07101_W_No size specified and unable to determine',' the size of the op'+
   'erands, using BYTE as default'#000+
   '07102_W_Use of +offset(%ebp) for parameters invalid here'#000+
   '07103_W_Use of +offset(%ebp) is not compatible with regcall convention'+
   #000+
-  '07104_W_Use of -offset(%ebp) is not recommended fo','r local variable a'+
+  '07104_W_Use of -offset(%ebp) is not recommended for local varia','ble a'+
   'ccess'#000+
   '07105_W_Use of -offset(%esp), access may cause a crash or value may be'+
   ' lost'#000+
   '07106_E_VMTOffset must be used in combination with a virtual method, a'+
   'nd "$1" is not virtual'#000+
-  '07107_E_Generating PIC, but reference is not PI','C-safe'#000+
-  '07108_E_All registers in a register set must be of the same kind and w'+
-  'idth'#000+
+  '07107_E_Generating PIC, but reference is not PIC-safe'#000+
+  '07108_','E_All registers in a register set must be of the same kind and'+
+  ' width'#000+
   '07109_E_A register set cannot be empty'#000+
   '07110_W_@GOTPCREL is useless and potentially dangerous for local symbo'+
   'ls'#000+
-  '07111_W_Constant with general purpose segment ','register'#000+
-  '07112_E_Invalid offset value for $1'#000+
+  '07111_W_Constant with general purpose segment register'#000+
+  '0711','2_E_Invalid offset value for $1'#000+
   '07113_E_Invalid register for $1'#000+
   '07114_E_SEH directives are allowed only in pure assembler procedures'#000+
   '07115_E_Directive "$1" is not supported for the current target'#000+
-  '07116_E_This function'#039's result ','location cannot be encoded direct'+
+  '07116_E_This function'#039's result location cann','ot be encoded direct'+
   'ly in a single operand when "nostackframe" is used'#000+
   '07117_E_GOTPCREL references in Intel assembler syntax cannot contain a'+
   ' base or index register, and their offset must 0.'#000+
-  '07118_E_The current target does not ','support GOTPCREL relocations'#000+
+  '07118_E_The current target does not support GOTPC','REL relocations'#000+
   '07119_W_Exported/global symbols should be accessed via the GOT'#000+
   '07120_W_Check size of memory operand "$1"'#000+
   '07121_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+
   'ts, but expected [$3 bits]"'#000+
-  '07122_W_','Check size of memory operand "$1: memory-operand-size is $2 '+
+  '07122_W_Check size of',' memory operand "$1: memory-operand-size is $2 '+
   'bits, but expected [$3 bits + $4 byte offset]"'#000+
   '07123_W_Check "$1: offset of memory operand is negative "$2 byte"'#000+
-  '07124_W_Check "$1: size of memory operand is empty, but es exists d','i'+
-  'fferent definitions of the memory size =>> map to $2 (smallest option)'+
+  '07124_W_Check "$1: size of memory operand is empty, but es exists diff'+
+  'erent defi','nitions of the memory size =>> map to $2 (smallest option)'+
   '"'#000+
   '07125_E_Invalid register used in memory reference expression: "$1"'#000+
   '07126_E_SEG used without identifier'#000+
   '07127_E_@CODE and @DATA can only be used with the SEG operator'#000+
-  '0','7128_E_Not enough space (16 bits required) for the segment constant'+
+  '07128_E_Not en','ough space (16 bits required) for the segment constant'+
   ' of symbol $1'#000+
   '07129_E_Invalid value of .code directive constant'#000+
   '07130_W_No size specified and unable to determine the size of the cons'+
   'tant, using BYTE as default'#000+
-  '07131_W_No ','size specified and unable to determine the size of the co'+
+  '07131_W_No size specifie','d and unable to determine the size of the co'+
   'nstant, using WORD as default'#000+
   '07132_E_Cannot override ES segment'#000+
   '07133_W_Reference is not valid here (expected "$1")'#000+
   '07134_E_Address sizes do not match'#000+
-  '07135_E_Instruction "POP CS" is',' not valid for the current target'#000+
+  '07135_E_Instruction "POP CS" is not valid fo','r the current target'#000+
   '07136_W_Instruction "POP CS" is not portable (it only works on 8086 an'+
   'd 8088 CPUs)'#000+
   '07137_E_Label $1 can only be declared public before it'#039's defined'#000+
   '07138_E_Local label $1 cannot be declared public'#000+
-  '07139_E_C','annot use multiple segment overrides'#000+
+  '07139_E_Cannot use mul','tiple segment overrides'#000+
   '07140_W_Multiple segment overrides (only the last one will take effect'+
   ')'#000+
   '07141_W_Segment base $1 will be generated, but is ignored by the CPU i'+
   'n 64-bit mode'#000+
   '08000_F_Too many assembler files'#000+
-  '08001_F_Select','ed assembler output not supported'#000+
+  '08001_F_Selected assembler ','output not supported'#000+
   '08002_F_Comp not supported'#000+
   '08003_F_Direct not support for binary writers'#000+
   '08004_E_Allocating of data is only allowed in bss section'#000+
   '08005_F_No binary writer selected'#000+
   '08006_E_Asm: Opcode $1 not in table'#000+
-  '08007','_E_Asm: $1 invalid combination of opcode and operands'#000+
+  '08007_E_Asm: $1 in','valid combination of opcode and operands'#000+
   '08008_E_Asm: 16 Bit references not supported'#000+
   '08009_E_Asm: Invalid effective address'#000+
   '08010_E_Asm: Immediate or reference expected'#000+
   '08011_E_Asm: $1 value exceeds bounds $2'#000+
-  '08012_E_Asm: Shor','t jump is out of range $1'#000+
+  '08012_E_Asm: Short jump is out',' of range $1'#000+
   '08013_E_Asm: Undefined label $1'#000+
   '08014_E_Asm: Comp type not supported for this target'#000+
   '08015_E_Asm: Extended type not supported for this target'#000+
   '08016_E_Asm: Duplicate label $1'#000+
   '08017_E_Asm: Redefined label $1'#000+
-  '08018_E_','Asm: First defined here'#000+
+  '08018_E_Asm: First de','fined here'#000+
   '08019_E_Asm: Invalid register $1'#000+
   '08020_E_Asm: 16 or 32 Bit references not supported'#000+
   '08021_E_Asm: 64 Bit operands not supported'#000+
   '08022_E_Asm: AH,BH,CH or DH cannot be used in an instruction requiring'+
   ' REX prefix'#000+
-  '08023_E','_Missing .seh_endprologue directive'#000+
+  '08023_E_Missing .seh','_endprologue directive'#000+
   '08024_E_Function prologue exceeds 255 bytes'#000+
   '08025_E_.seh_handlerdata directive without preceding .seh_handler'#000+
   '08026_F_Relocation count for section $1 exceeds 65535'#000+
-  '08027_N_Change of bind type of symbol $1',' from $2 to $3 after use'#000+
+  '08027_N_Change of bind type of symbol $1 from $2 to $','3 after use'#000+
   '08028_H_Change of bind type of symbol $1 from $2 to $3 after use'#000+
   '08029_E_Asm: 32 Bit references not supported'#000+
   '08030_F_Code segment too large'#000+
   '08031_F_Data segment too large'#000+
-  '08032_E_Instruction not supported by the se','lected instruction set'#000+
+  '08032_E_Instruction not supported by the selected instru','ction set'#000+
   '08033_E_Asm: conditional branch destination is out of range'#000+
   '09000_W_Source operating system redefined'#000+
   '09001_I_Assembling (pipe) $1'#000+
   '09002_E_Can'#039't create assembler file: $1'#000+
-  '09003_E_Can'#039't create object file: $1 (error co','de: $2)'#000+
-  '09004_E_Can'#039't create archive file: $1'#000+
+  '09003_E_Can'#039't create object file: $1 (error code: $2)'#000+
+  '09004','_E_Can'#039't create archive file: $1'#000+
   '09005_E_Assembler $1 not found, switching to external assembling'#000+
   '09006_T_Using assembler: $1'#000+
   '09007_E_Error while assembling exitcode $1'#000+
-  '09008_E_Can'#039't call the assembler, error $1 switching to ex','ternal'+
-  ' assembling'#000+
+  '09008_E_Can'#039't call the assembler, error $1 switching to external a'+
+  'ssemb','ling'#000+
   '09009_I_Assembling $1'#000+
   '09010_I_Assembling with smartlinking $1'#000+
   '09011_W_Object $1 not found, Linking may fail !'#000+
   '09012_W_Library $1 not found, Linking may fail !'#000+
   '09013_E_Error while linking'#000+
-  '09014_E_Can'#039't call the linker, swit','ching to external linking'#000+
+  '09014_E_Can'#039't call the linker, switching to exte','rnal linking'#000+
   '09015_I_Linking $1'#000+
   '09016_E_Util $1 not found, switching to external linking'#000+
   '09017_T_Using util $1'#000+
   '09018_E_Creation of Executables not supported'#000+
   '09019_E_Creation of Dynamic/Shared Libraries not supported'#000+
-  '09035_E_Cre','ation of Static Libraries not supported'#000+
+  '09035_E_Creation of Stat','ic Libraries not supported'#000+
   '09020_I_Closing script $1'#000+
   '09021_E_resource compiler "$1" not found, switching to external mode'#000+
   '09022_I_Compiling resource $1'#000+
   '09023_T_unit $1 cannot be statically linked, switching to smart linkin'+
   'g'#000+
-  '090','24_T_unit $1 cannot be smart linked, switching to static linking'#000+
+  '09024_T_unit $1 ','cannot be smart linked, switching to static linking'#000+
   '09025_T_unit $1 cannot be shared linked, switching to static linking'#000+
   '09026_E_unit $1 cannot be smart or static linked'#000+
   '09027_E_unit $1 cannot be shared or static linked'#000+
-  '09028_D','_Calling resource compiler "$1" with "$2" as command line'#000+
+  '09028_D_Calling reso','urce compiler "$1" with "$2" as command line'#000+
   '09029_E_Error while compiling resources'#000+
   '09030_E_Can'#039't call the resource compiler "$1", switching to extern'+
   'al mode'#000+
   '09031_E_Can'#039't open resource file "$1"'#000+
-  '09032_E_Can'#039't write resource f','ile "$1"'#000+
-  '09033_N_File "$1" not found for backquoted cat command'#000+
+  '09032_E_Can'#039't write resource file "$1"'#000+
+  '0903','3_N_File "$1" not found for backquoted cat command'#000+
   '09034_W_"$1" not found, this will probably cause a linking failure'#000+
   '09128_F_Can'#039't post process executable $1'#000+
   '09129_F_Can'#039't open executable $1'#000+
   '09130_X_Size of Code: $1 bytes'#000+
-  '0913','1_X_Size of initialized data: $1 bytes'#000+
+  '09131_X_Size of i','nitialized data: $1 bytes'#000+
   '09132_X_Size of uninitialized data: $1 bytes'#000+
   '09133_X_Stack space reserved: $1 bytes'#000+
   '09134_X_Stack space committed: $1 bytes'#000+
   '09200_F_Executable image size is too big for $1 target.'#000+
-  '09201_W_Object file "','$1" contains 32-bit absolute relocation to symb'+
+  '09201_W_Object file "$1" contains ','32-bit absolute relocation to symb'+
   'ol "$2".'#000+
   '09202_E_Program segment too large (exceeds 64k by $1 bytes)'#000+
   '09203_E_Code segment "$1" too large (exceeds 64k by $2 bytes)'#000+
-  '09204_E_Data segment "$1" too large (exceeds 64k by $2 bytes)'#000,
-  '09205_E_Segment "$1" too large (exceeds 64k by $2 bytes)'#000+
+  '09204_E_Data segment "$1" too large (exceeds 64k by $2 bytes)'#000+
+  '09205_E_Segme','nt "$1" too large (exceeds 64k by $2 bytes)'#000+
   '09206_E_Group "$1" too large (exceeds 64k by $2 bytes)'#000+
   '09207_E_Cannot create a .COM file, because the program contains segmen'+
   't relocations'#000+
-  '09208_W_Program "$1" uses experimental Check','Pointer option'#000+
+  '09208_W_Program "$1" uses experimental CheckPointer optio','n'#000+
   '09209_E_Multiple defined symbol "$1"'#000+
   '09210_E_COMDAT selection mode $1 not supported (section: "$1")'#000+
   '09211_E_Associative section expected for COMDAT section "$1"'#000+
-  '09212_E_COMDAT section selection mode doesn'#039't match for section ','"'+
-  '$1" and symbol "$2"'#000+
+  '09212_E_COMDAT section selection mode doesn'#039't match for section "$'+
+  '1" and symb','ol "$2"'#000+
   '09213_E_Associative COMDAT section for section "$1" not found'#000+
   '09214_D_Discarding duplicate symbol "$1" due to COMDAT selection mode'#000+
   '09215_D_Discarding duplicate symbol "$1" with same size due to COMDAT '+
   'selection mode'#000+
-  '09','216_D_Discarding duplicate symbol "$1" with same content due to CO'+
+  '09216_D_Discard','ing duplicate symbol "$1" with same content due to CO'+
   'MDAT selection mode'#000+
   '09217_D_Replacing duplicate symbol "$1" with smaller size due to COMDA'+
   'T selection mode'#000+
   '09218_E_Size of duplicate COMDAT symbol "$1" differs'#000+
-  '09219_E_Conten','t of duplicate COMDAT symbol "$1" differs'#000+
+  '09219_E_Content of duplicat','e COMDAT symbol "$1" differs'#000+
   '09220_E_COMDAT selection mode for symbol "$1" differs'#000+
   '10000_T_Unitsearch: $1'#000+
   '10001_T_PPU Loading $1'#000+
@@ -1136,7 +1137,7 @@
   '10003_U_PPU Flags: $1'#000+
   '10004_U_PPU Crc: $1'#000+
   '10005_U_PPU Time: $1'#000+
-  '10006_U_PPU Fi','le too short'#000+
+  '10006_U_PPU File too short'#000,
   '10007_U_PPU Invalid Header (no PPU at the begin)'#000+
   '10008_U_PPU Invalid Version $1'#000+
   '10009_U_PPU is compiled for another processor'#000+
@@ -1143,7 +1144,7 @@
   '10010_U_PPU is compiled for another target'#000+
   '10011_U_PPU Source: $1'#000+
   '10012_U_Writing $1'#000+
-  '10013_F_Can'#039't Wr','ite PPU-File'#000+
+  '10013_F_Can'#039't Write PPU-File'#000,
   '10014_F_Error reading PPU-File'#000+
   '10015_F_unexpected end of PPU-File'#000+
   '10016_F_Invalid PPU-File entry: $1'#000+
@@ -1150,83 +1151,83 @@
   '10017_F_PPU Dbx count problem'#000+
   '10018_E_Illegal unit name: $1 (expecting $2)'#000+
   '10019_F_Too much units'#000+
-  '10020_F_Circular unit refere','nce between $1 and $2'#000+
+  '10020_F_Circular unit reference between $','1 and $2'#000+
   '10021_F_Can'#039't compile unit $1, no sources available'#000+
   '10022_F_Can'#039't find unit $1 used by $2'#000+
   '10023_W_Unit $1 was not found but $2 exists'#000+
   '10024_F_Unit $1 searched but $2 found'#000+
-  '10025_W_Compiling the system unit requires the',' -Us switch'#000+
-  '10026_F_There were $1 errors compiling module, stopping'#000+
+  '10025_W_Compiling the system unit requires the -Us switch'#000+
+  '1','0026_F_There were $1 errors compiling module, stopping'#000+
   '10027_U_Load from $1 ($2) unit $3'#000+
   '10028_U_Recompiling $1, checksum changed for $2'#000+
   '10029_U_Recompiling $1, source found only'#000+
-  '10030_U_Recompiling unit, static lib is older th','an ppufile'#000+
-  '10031_U_Recompiling unit, shared lib is older than ppufile'#000+
+  '10030_U_Recompiling unit, static lib is older than ppufile'#000+
+  '10','031_U_Recompiling unit, shared lib is older than ppufile'#000+
   '10032_U_Recompiling unit, obj and asm are older than ppufile'#000+
   '10033_U_Recompiling unit, obj is older than asm'#000+
   '10034_U_Parsing interface of $1'#000+
-  '10035_U_Parsing implementatio','n of $1'#000+
-  '10036_U_Second load for unit $1'#000+
+  '10035_U_Parsing implementation of $1'#000+
+  '10036','_U_Second load for unit $1'#000+
   '10037_U_PPU Check file $1 time $2'#000+
   '10040_W_Can'#039't recompile unit $1, but found modified include files'#000+
   '10041_U_File $1 is newer than the one used for creating PPU file $2'#000+
-  '10042_U_Trying to use a unit whi','ch was compiled with a different FPU'+
+  '10042_U_Trying to use a unit which was compil','ed with a different FPU'+
   ' mode'#000+
   '10043_U_Loading interface units from $1'#000+
   '10044_U_Loading implementation units from $1'#000+
   '10045_U_Interface CRC changed for unit $1'#000+
   '10046_U_Implementation CRC changed for unit $1'#000+
-  '10047_U_Finished compili','ng unit $1'#000+
-  '10048_U_Adding dependency: $1 depends on $2'#000+
+  '10047_U_Finished compiling unit $1'#000+
+  '10','048_U_Adding dependency: $1 depends on $2'#000+
   '10049_U_No reload, is caller: $1'#000+
   '10050_U_No reload, already in second compile: $1'#000+
   '10051_U_Flag for reload: $1'#000+
   '10052_U_Forced reloading'#000+
   '10053_U_Previous state of $1: $2'#000+
-  '10054_U_Already c','ompiling $1, setting second compile'#000+
+  '10054_U_Already compiling $1, ','setting second compile'#000+
   '10055_U_Loading unit $1'#000+
   '10056_U_Finished loading unit $1'#000+
   '10057_U_Registering new unit $1'#000+
   '10058_U_Re-resolving unit $1'#000+
   '10059_U_Skipping re-resolving unit $1, still loading used units'#000+
-  '10060_U_Unloading reso','urce unit $1 (not needed)'#000+
+  '10060_U_Unloading resource unit $1 ','(not needed)'#000+
   '10061_E_Unit $1 was compiled using a different whole program optimizat'+
   'ion feedback input ($2, $3); recompile it without wpo or use the same '+
   'wpo feedback input file for this compilation invocation'#000+
-  '10062_U_Indirect i','nterface (objects/classes) CRC changed for unit $1'+
+  '10062_U_Indirect interface (obj','ects/classes) CRC changed for unit $1'+
   #000+
   '10063_U_PPU is compiled for another i8086 memory model'#000+
   '10064_U_Loading unit $1 from package $2'#000+
   '10065_F_Internal type "$1" was not found. Check if you use the correct'+
   ' run time library.'#000+
-  '10066','_F_Internal type "$1" does not look as expected. Check if you u'+
+  '10066_F_Internal t','ype "$1" does not look as expected. Check if you u'+
   'se the correct run time library.'#000+
   '11000_O_$1 [options] <inputfile> [options]'#000+
   '11001_W_Only one source file supported, changing source file to compil'+
   'e from "$1" into "$2"'#000+
-  '11002_W_D','EF file can be created only for OS/2'#000+
+  '11002_W_DEF file can b','e created only for OS/2'#000+
   '11003_E_nested response files are not supported'#000+
   '11004_F_No source file name in command line'#000+
   '11005_N_No option inside $1 config file'#000+
   '11006_E_Illegal parameter: $1'#000+
   '11007_H_-? writes help pages'#000+
-  '11008_F_Too ','many config files nested'#000+
+  '11008_F_Too many config f','iles nested'#000+
   '11009_F_Unable to open file $1'#000+
   '11010_D_Reading further options from $1'#000+
   '11011_W_Target is already set to: $1'#000+
   '11012_W_Shared libs not supported on DOS platform, reverting to static'+
   #000+
-  '11013_F_In options file $1 at line $','2 too many #IF(N)DEFs encountere'+
+  '11013_F_In options file $1 at line $2 too many #I','F(N)DEFs encountere'+
   'd'#000+
   '11014_F_In options file $1 at line $2 unexpected #ENDIFs encountered'#000+
   '11015_F_Open conditional at the end of the options file'#000+
   '11016_W_Debug information generation is not supported by this executab'+
   'le'#000+
-  '11017_H_','Try recompiling with -dGDB'#000+
+  '11017_H_Try recompili','ng with -dGDB'#000+
   '11018_W_You are using the obsolete switch $1'#000+
   '11019_W_You are using the obsolete switch $1, please use $2'#000+
   '11020_N_Switching assembler to default source writing assembler'#000+
-  '11021_W_Assembler output selected "$1" is no','t compatible with "$2"'#000+
+  '11021_W_Assembler output selected "$1" is not compatible ','with "$2"'#000+
   '11022_W_"$1" assembler use forced'#000+
   '11026_T_Reading options from file $1'#000+
   '11027_T_Reading options from environment $1'#000+
@@ -1233,87 +1234,87 @@
   '11028_D_Handling option "$1"'#000+
   '11029_O_*** press enter ***'#000+
   '11030_H_Start of reading config file $1'#000+
-  '11031','_H_End of reading config file $1'#000+
+  '11031_H_End of rea','ding config file $1'#000+
   '11032_D_interpreting option "$1"'#000+
   '11036_D_interpreting firstpass option "$1"'#000+
   '11033_D_interpreting file option "$1"'#000+
   '11034_D_Reading config file "$1"'#000+
   '11035_D_found source file name "$1"'#000+
-  '11039_E_Unknown codepage',' "$1"'#000+
-  '11040_F_Config file $1 is a directory'#000+
+  '11039_E_Unknown codepage "$1"'#000+
+  '11040_F','_Config file $1 is a directory'#000+
   '11041_W_Assembler output selected "$1" cannot generate debug info, deb'+
   'ugging disabled'#000+
   '11042_W_Use of ppc386.cfg is deprecated, please use fpc.cfg instead'#000+
-  '11043_F_In options file $1 at line $2 #ELS','E directive without #IF(N)'+
+  '11043_F_In options file $1 at line $2 #ELSE directive w','ithout #IF(N)'+
   'DEF found'#000+
   '11044_F_Option "$1" is not, or not yet, supported on the current targe'+
   't platform'#000+
   '11045_F_The feature "$1" is not, or not yet, supported on the selected'+
   ' target platform'#000+
-  '11046_N_DWARF debug information cann','ot be used with smart linking on'+
+  '11046_N_DWARF debug information cannot be used wi','th smart linking on'+
   ' this target, switching to static linking'#000+
   '11047_W_Option "$1" is ignored for the current target platform.'#000+
   '11048_W_Disabling external debug information because it is unsupported'+
-  ' for the selected target/debug f','ormat combination.'#000+
+  ' for the selected target/debug format combina','tion.'#000+
   '11049_N_DWARF debug information cannot be used with smart linking with'+
   ' external assembler, disabling static library creation.'#000+
   '11050_E_Invalid value for MACOSX_DEPLOYMENT_TARGET environment variabl'+
   'e: $1'#000+
-  '11051_E_Invalid val','ue for IPHONEOS_DEPLOYMENT_TARGET environment var'+
+  '11051_E_Invalid value for IPHONE','OS_DEPLOYMENT_TARGET environment var'+
   'iable: $1'#000+
   '11052_E_You must use a FPU type of VFPV2, VFPV3 or VFPV3_D16 when usin'+
   'g the EABIHF ABI target'#000+
   '11053_W_The selected debug format is not supported on the current targ'+
-  'et, not changing ','the current setting'#000+
+  'et, not changing the current s','etting'#000+
   '11054_E_argument to "$1" is missing'#000+
   '11055_E_malformed parameter: $1'#000+
   '11056_W_Smart linking requires external linker'#000+
   '11057_E_Creating .COM files is not supported in the current memory mod'+
-  'el. Only the tiny memory model supp','orts making .COM files.'#000+
+  'el. Only the tiny memory model supports making .','COM files.'#000+
   '11058_W_Experimental CheckPointer option not enabled because it is inc'+
   'omptatible with -Ur option.'#000+
   '11059_E_Unsupported target architecture -P$1, invoke the "fpc" compile'+
   'r driver instead.'#000+
-  '11060_E_Feature switches are o','nly supported while compiling the syst'+
+  '11060_E_Feature switches are only supported',' while compiling the syst'+
   'em unit.'#000+
   '12000_F_Cannot open whole program optimization feedback file "$1"'#000+
   '12001_D_Processing whole program optimization information in wpo feedb'+
   'ack file "$1"'#000+
-  '12002_D_Finished processing the whole progr','am optimization informati'+
+  '12002_D_Finished processing the whole program optimizati','on informati'+
   'on in wpo feedback file "$1"'#000+
   '12003_E_Expected section header, but got "$2" at line $1 of wpo feedba'+
   'ck file'#000+
   '12004_W_No handler registered for whole program optimization section "'+
-  '$2" at line $1 of wpo feedback file, i','gnoring'#000+
-  '12005_D_Found whole program optimization section "$1" with information'+
-  ' about "$2"'#000+
+  '$2" at line $1 of wpo feedback file, ignoring'#000+
+  '12005','_D_Found whole program optimization section "$1" with informati'+
+  'on about "$2"'#000+
   '12006_F_The selected whole program optimizations require a previously '+
   'generated feedback file (use -Fw to specify)'#000+
-  '12007_E_No collected information ne','cessary to perform "$1" whole pro'+
+  '12007_E_No collected information necessary to pe','rform "$1" whole pro'+
   'gram optimization found'#000+
   '12008_F_Specify a whole program optimization feedback file to store th'+
   'e generated info in (using -FW)'#000+
   '12009_E_Not generating any whole program optimization information, yet'+
-  ' a feedback',' file was specified (using -FW)'#000+
+  ' a feedback file was spe','cified (using -FW)'#000+
   '12010_E_Not performing any whole program optimizations, yet an input f'+
   'eedback file was specified (using -Fw)'#000+
   '12011_D_Skipping whole program optimization section "$1", because not '+
-  'needed by the requested optim','izations'#000+
-  '12012_W_Overriding previously read information for "$1" from feedback '+
-  'input file using information in section "$2"'#000+
+  'needed by the requested optimizations'#000+
+  '1201','2_W_Overriding previously read information for "$1" from feedbac'+
+  'k input file using information in section "$2"'#000+
   '12013_E_Cannot extract symbol liveness information from program when s'+
   'tripping symbols, use -Xs-'#000+
-  '12014_E_Cannot extr','act symbol liveness information from program when'+
+  '12014_E_Cannot extract symbol li','veness information from program when'+
   ' when not linking'#000+
   '12015_F_Cannot find "$1" or "$2" to extract symbol liveness informatio'+
   'n from linked program'#000+
   '12016_E_Error during reading symbol liveness information produced by "'+
   '$1"'#000+
-  '12017_F','_Error executing "$1" (exitcode: $2) to extract symbol inform'+
+  '12017_F_Error execut','ing "$1" (exitcode: $2) to extract symbol inform'+
   'ation from linked program'#000+
   '12018_E_Collection of symbol liveness information can only help when u'+
   'sing smart linking, use -CX -XX'#000+
-  '12019_E_Cannot create specified whole program optim','isation feedback '+
+  '12019_E_Cannot create specified whole program optimisation feedb','ack '+
   'file "$1"'#000+
   '13001_F_Can'#039't find package $1'#000+
   '13002_U_PCP file for package $1 found'#000+
@@ -1320,7 +1321,7 @@
   '13003_E_Duplicate package $1'#000+
   '13004_E_Unit $1 can not be part of a package'#000+
   '13005_N_Unit $1 is implicitely imported into package $2'#000+
-  '13006_F_Failed ','to create PCP file $2 for package $1'#000+
+  '13006_F_Failed to create PCP',' file $2 for package $1'#000+
   '13007_F_Failed to read PCP file for package $1'#000+
   '13008_T_PCP loading $1'#000+
   '13009_U_PCP Name: $1'#000+
@@ -1328,7 +1329,7 @@
   '13011_U_PCP Crc: $1'#000+
   '13012_U_PCP Time: $1'#000+
   '13013_U_PCP File too short'#000+
-  '13014_U_PCP Invalid He','ader (no PCP at the begin)'#000+
+  '13014_U_PCP Invalid Header (no PCP ','at the begin)'#000+
   '13015_U_PCP Invalid Version $1'#000+
   '13016_U_PCP is compiled for another processor'#000+
   '13017_U_PCP is compiled for another target'#000+
@@ -1335,7 +1336,7 @@
   '13018_U_Writing $1'#000+
   '13019_F_Can'#039't Write PCP-File'#000+
   '13020_F_Error reading PCP-File'#000+
-  '13021_F_unexpe','cted end of PCP-File'#000+
+  '13021_F_unexpected end of P','CP-File'#000+
   '13022_F_Invalid PCP-File entry: $1'#000+
   '13023_U_Trying to use a unit which was compiled with a different FPU m'+
   'ode'#000+
@@ -1342,13 +1343,13 @@
   '13024_T_Packagesearch: $1'#000+
   '13025_U_Required package $1'#000+
   '13026_U_Contained unit $1'#000+
-  '13027_E_Unit $1 is already con','tained in package $2'#000+
+  '13027_E_Unit $1 is already contained in pac','kage $2'#000+
   '13028_W_Unit $1 is imported from indirectly required package $2'#000+
   '13029_U_PPL filename $1'#000+
   '11023_Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPC'+
   'CPU'#010+
   'Copyright (c) 1993-2018 by Florian Klaempfl and others'#000+
-  '11','024_Free Pascal Compiler version $FPCVERSION'#010+
+  '11024_Free Pasc','al Compiler version $FPCVERSION'#010+
   #010+
   'Compiler date      : $FPCDATE'#010+
   'Compiler CPU target: $FPCCPU'#010+
@@ -1358,9 +1359,9 @@
   '  $OSTARGETS'#010+
   #010+
   'Supported CPU instruction sets:'#010+
-  '  $INSTRUCTIONSETS'#010,
+  '  $INSTRUCTIONSETS'#010+
   #010+
-  'Supported FPU instruction sets:'#010+
+  'Supported FP','U instruction sets:'#010+
   '  $FPUINSTRUCTIONSETS'#010+
   #010+
   'Supported inline assembler modes:'#010+
@@ -1375,7 +1376,7 @@
   'Supported Optimizations:'#010+
   '  $OPTIMIZATIONS'#010+
   #010+
-  'Su','pported Whole Program Optimizations:'#010+
+  'Supported Whole',' Program Optimizations:'#010+
   '  All'#010+
   '  $WPOPTIMIZATIONS'#010+
   #010+
@@ -1383,64 +1384,64 @@
   'This program comes under the GNU General Public Licence'#010+
   'For more information read COPYING.v2'#010+
   #010+
-  'Please report bugs in our ','bug tracker on:'#010+
+  'Please report bugs in our bug tracker o','n:'#010+
   '                 http://bugs.freepascal.org'#010+
   #010+
   'More information may be found on our WWW pages (including directions'#010+
   'for mailing lists useful for asking questions or discussing potential'#010+
   'new features, etc.):'#010+
-  '                 ht','tp://www.freepascal.org'#000+
+  '                 http://www.free','pascal.org'#000+
   '11025_F*0*_Only options valid for the default or selected platform are'+
   ' listed.'#010+
   '**0*_Put + after a boolean switch option to enable it, - to disable it'+
   '.'#010+
-  '**1@<x>_Read compiler options from <x> in addition to the default',' fp'+
-  'c.cfg'#010+
-  '**1a_The compiler does not delete the generated assembler file'#010+
+  '**1@<x>_Read compiler options from <x> in addition to the default fpc.'+
+  'cfg'#010+
+  '**1a','_The compiler does not delete the generated assembler file'#010+
   '**2a5_Don'#039't generate Big Obj COFF files for GNU Binutils older tha'+
   'n 2.25 (Windows, NativeNT)'#010+
   '**2al_List sourcecode lines in assembler file'#010+
-  '**2an_List node info in assem','bler file (-dEXTDEBUG compiler)'#010+
+  '**2an_List node info in assembler file (-d','EXTDEBUG compiler)'#010+
   '**2ao_Add an extra option to external assembler call (ignored for inte'+
   'rnal)'#010+
   '*L2ap_Use pipes instead of creating temporary assembler files'#010+
   '**2ar_List register allocation/release info in assembler file'#010+
-  '**2at_Li','st temp allocation/release info in assembler file'#010+
+  '**2at_List temp alloc','ation/release info in assembler file'#010+
   '**1A<x>_Output format:'#010+
   '**2Adefault_Use default assembler'#010+
   '3*2Aas_Assemble using GNU AS'#010+
   '3*2Amacho_Mach-O (Darwin, Intel 32 bit) using internal writer'#010+
   '8*2Anasm_Assemble using Nasm'#010+
-  '8*2Anasmobj_A','ssemble using Nasm'#010+
+  '8*2Anasmobj_Assemble using',' Nasm'#010+
   '3*2Anasm_Assemble using Nasm'#010+
   '3*2Anasmcoff_COFF (Go32v2) file using Nasm'#010+
   '3*2Anasmelf_ELF32 (Linux) file using Nasm'#010+
   '3*2Anasmwin32_Win32 object file using Nasm'#010+
   '3*2Anasmwdosx_Win32/WDOSX object file using Nasm'#010+
-  '3*2Anasmdarwin_','macho32 object file using Nasm (experimental)'#010+
+  '3*2Anasmdarwin_macho32 objec','t file using Nasm (experimental)'#010+
   '3*2Awasm_Obj file using Wasm (Watcom)'#010+
   '3*2Anasmobj_Obj file using Nasm'#010+
   '3*2Amasm_Obj file using Masm (Microsoft)'#010+
   '3*2Atasm_Obj file using Tasm (Borland)'#010+
   '3*2Aelf_ELF (Linux) using internal writer'#010+
-  '3*','2Acoff_COFF (Go32v2) using internal writer'#010+
+  '3*2Acoff_COFF (','Go32v2) using internal writer'#010+
   '3*2Apecoff_PE-COFF (Win32) using internal writer'#010+
   '3*2Ayasm_Assemble using Yasm (experimental)'#010+
   '4*2Aas_Assemble using GNU AS'#010+
   '4*2Agas_Assemble using GNU GAS'#010+
-  '4*2Agas-darwin_Assemble darwin Mach-O64 usin','g GNU GAS'#010+
-  '4*2Amasm_Win64 object file using ml64 (Microsoft)'#010+
+  '4*2Agas-darwin_Assemble darwin Mach-O64 using GNU GAS'#010+
+  '4*2','Amasm_Win64 object file using ml64 (Microsoft)'#010+
   '4*2Apecoff_PE-COFF (Win64) using internal writer'#010+
   '4*2Aelf_ELF (Linux-64bit) using internal writer'#010+
   '4*2Ayasm_Assemble using Yasm (experimental)'#010+
-  '4*2Anasm_Assemble using Nasm (experimen','tal)'#010+
-  '4*2Anasmwin64_Assemble Win64 object file using Nasm (experimental)'#010+
+  '4*2Anasm_Assemble using Nasm (experimental)'#010+
+  '4*2Anasm','win64_Assemble Win64 object file using Nasm (experimental)'#010+
   '4*2Anasmelf_Assemble Linux-64bit object file using Nasm (experimental)'+
   #010+
   '4*2Anasmdarwin_Assemble darwin macho64 object file using Nasm (experim'+
   'ental)'#010+
-  '6*2Aas_Unix o-file u','sing GNU AS'#010+
-  '6*2Agas_GNU Motorola assembler'#010+
+  '6*2Aas_Unix o-file using GNU AS'#010+
+  '6','*2Agas_GNU Motorola assembler'#010+
   '6*2Amit_MIT Syntax (old GAS)'#010+
   '6*2Amot_Standard Motorola assembler'#010+
   'A*2Aas_Assemble using GNU AS'#010+
@@ -1447,29 +1448,30 @@
   'P*2Aas_Assemble using GNU AS'#010+
   'S*2Aas_Assemble using GNU AS'#010+
   '**1b_Generate browser info'#010+
-  '**2bl_Generate loc','al symbol info'#010+
+  '**2bl_Generate local symbol inf','o'#010+
   '**1B_Build all modules'#010+
   '**1C<x>_Code generation options:'#010+
   '**2C3_Turn on ieee error checking for constants'#010+
   '**2Ca<x>_Select ABI; see fpc -i or fpc -ia for possible values'#010+
-  '**2Cb_Generate code for a big-endian variant of the target',' architect'+
-  'ure'#010+
+  '**2Cb_Generate code for a big-endian variant of the target architectur'+
+  'e',#010+
   '**2Cc<x>_Set default calling convention to <x>'#010+
   '**2CD_Create also dynamic library (not supported)'#010+
   '**2Ce_Compilation with emulated floating point opcodes'#010+
   '**2Cf<x>_Select fpu instruction set to use; see fpc -i or fpc -if for '+
-  'poss','ible values'#010+
-  '**2CF<x>_Minimal floating point constant precision (default, 32, 64)'#010+
+  'possible values'#010+
+  '*','*2CF<x>_Minimal floating point constant precision (default, 32, 64)'+
+  #010+
   '**2Cg_Generate PIC code'#010+
   '**2Ch<n>[,m]_<n> bytes min heap size (between 1023 and 67107840) and o'+
   'ptionally [m] max heap size'#010+
   '**2Ci_IO-checking'#010+
-  'A*2CI<x>_Select ins','truction set on ARM: ARM or THUMB'#010+
+  'A*2CI<x>_Select instruction set ','on ARM: ARM or THUMB'#010+
   '**2Cn_Omit linking stage'#010+
   'P*2CN_Generate nil-pointer checks (AIX-only)'#010+
   '**2Co_Check overflow of integer operations'#010+
   '**2CO_Check for possible overflow of integer operations'#010+
-  '**2Cp<x>_Select instruction set; see ','fpc -i or fpc -ic for possible '+
+  '**2Cp<x>_Select instruction set; see fpc -i or fpc',' -ic for possible '+
   'values'#010+
   '**2CP<x>=<y>_ packing settings'#010+
   '**3CPPACKSET=<y>_ <y> set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 '+
@@ -1476,48 +1478,48 @@
   'and 8'#010+
   '**3CPPACKENUM=<y>_ <y> enum packing: 0, 1, 2 and 4 or DEFAULT or NORMA'+
   'L'#010+
-  '**3CPPACKRECORD=<y>_ <y','> record packing: 0 or DEFAULT or NORMAL, 1, '+
+  '**3CPPACKRECORD=<y>_ <y> record pack','ing: 0 or DEFAULT or NORMAL, 1, '+
   '2, 4, 8, 16 and 32'#010+
   '**2Cr_Range checking'#010+
   '**2CR_Verify object method call validity'#010+
   '**2Cs<n>_Set stack checking size to <n>'#010+
   '**2Ct_Stack checking (for testing only, see manual)'#010+
-  '8*2CT<x>_Target-specif','ic code generation options'#010+
+  '8*2CT<x>_Target-specific code gener','ation options'#010+
   '3*2CT<x>_Target-specific code generation options'#010+
   '4*2CT<x>_Target-specific code generation options'#010+
   'p*2CT<x>_Target-specific code generation options'#010+
   'P*2CT<x>_Target-specific code generation options'#010+
-  'J*2CT<x>_Target-s','pecific code generation options'#010+
+  'J*2CT<x>_Target-specific code ','generation options'#010+
   'A*2CT<x>_Target-specific code generation options'#010+
   'p*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+
   ' (AIX)'#010+
   'P*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+
   ' (AIX)'#010+
-  'J*3CT','autogetterprefix=X_  Automatically create getters for propertie'+
+  'J*3CTautogetterpre','fix=X_  Automatically create getters for propertie'+
   's with prefix X (empty string disables)'#010+
   'J*3CTautosetterprefix=X_  Automatically create setters for properties '+
   'with prefix X (empty string disables)'#010+
-  '8*3CTcld_                 Emi','t a CLD instruction before using the x8'+
+  '8*3CTcld_                 Emit a CLD instr','uction before using the x8'+
   '6 string instructions'#010+
   '3*3CTcld_                 Emit a CLD instruction before using the x86 '+
   'string instructions'#010+
   '4*3CTcld_                 Emit a CLD instruction before using the x86 '+
-  'string instructions',#010+
-  '8*3CTfarprocspushoddbp_       Increment BP before pushing it in the pr'+
-  'ologue of far functions'#010+
+  'string instructions'#010+
+  '8*3CTfarproc','spushoddbp_       Increment BP before pushing it in the '+
+  'prologue of far functions'#010+
   'J*3CTcompactintarrayinit_ Generate smaller (but potentially slower) co'+
   'de for initializing integer array constants'#010+
-  'J*3CTenumfieldinit_       Initi','alize enumeration fields in construct'+
+  'J*3CTenumfieldinit_       Initialize enumera','tion fields in construct'+
   'ors to enumtype(0), after calling inherited constructors'#010+
   'J*3CTinitlocals_          Initialize local variables that trigger a JV'+
   'M bytecode verification error if used uninitialized (slows down code)'#010+
-  'J*3CTl','owercaseprocstart_  Lowercase the first character of procedure'+
+  'J*3CTlowercaseprocs','tart_  Lowercase the first character of procedure'+
   '/function/method names'#010+
   'A*3CTthumbinterworking_ Generate Thumb interworking-safe code if possi'+
   'ble'#010+
   'J*2Cv_Var/out parameter copy-out checking'#010+
   '**2CX_Create also smartlinked library'#010+
-  '*','*1d<x>_Defines the symbol <x>'#010+
+  '**1d<x>_Define','s the symbol <x>'#010+
   '**1D_Generate a DEF file'#010+
   '**2Dd<x>_Set description to <x>'#010+
   '**2Dv<x>_Set DLL version to <x>'#010+
@@ -1525,56 +1527,56 @@
   '**1e<x>_Set path to executable'#010+
   '**1E_Same as -Cn'#010+
   '**1fPIC_Same as -Cg'#010+
-  '**1F<x>_Set file names and paths',':'#010+
-  '**2Fa<x>[,y]_(for a program) load units <x> and [y] before uses is par'+
-  'sed'#010+
+  '**1F<x>_Set file names and paths:'#010+
+  '**2Fa<x>[,y',']_(for a program) load units <x> and [y] before uses is p'+
+  'arsed'#010+
   '**2Fc<x>_Set input codepage to <x>'#010+
   '**2FC<x>_Set RC compiler binary name to <x>'#010+
   '**2Fd_Disable the compiler'#039's internal directory cache'#010+
-  '**2FD<x>_Set the directory wher','e to search for compiler utilities'#010+
+  '**2FD<x>_Set the directory where to search f','or compiler utilities'#010+
   '**2Fe<x>_Redirect error output to <x>'#010+
   '**2Ff<x>_Add <x> to framework path (Darwin only)'#010+
   '**2FE<x>_Set exe/unit output path to <x>'#010+
   '**2Fi<x>_Add <x> to include path'#010+
   '**2Fl<x>_Add <x> to library path'#010+
-  '**2FL<x>_Us','e <x> as dynamic linker'#010+
+  '**2FL<x>_Use <x> as dyna','mic linker'#010+
   '**2Fm<x>_Load unicode conversion table from <x>.txt in the compiler di'+
   'r'#010+
   '**2FM<x>_Set the directory where to search for unicode binary files'#010+
   '**2FN<x>_Add <x> to list of default unit scopes (namespaces)'#010+
-  '**2Fo<x>_Add <x','> to object path'#010+
+  '**2Fo<x>_Add <x> to object p','ath'#010+
   '**2Fr<x>_Load error message file <x>'#010+
   '**2FR<x>_Set resource (.res) linker to <x>'#010+
   '**2Fu<x>_Add <x> to unit path'#010+
   '**2FU<x>_Set unit output path to <x>, overrides -FE'#010+
-  '**2FW<x>_Store generated whole-program optimization feedback ','in <x>'#010+
-  '**2Fw<x>_Load previously stored whole-program optimization feedback fr'+
-  'om <x>'#010+
+  '**2FW<x>_Store generated whole-program optimization feedback in <x>'#010+
+  '**2Fw<','x>_Load previously stored whole-program optimization feedback '+
+  'from <x>'#010+
   '*g1g_Generate debug information (default format for target)'#010+
   '*g2gc_Generate checks for pointers (experimental, only available on so'+
-  'me targets, might generate',' false positive)'#010+
+  'me targets, might generate false positi','ve)'#010+
   '*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+
   '*g2gl_Use line info unit (show more info with backtraces)'#010+
   '*g2gm_Generate Microsoft CodeView debug information (experimental)'#010+
-  '*g2go<x>_Set debug information opt','ions'#010+
-  '*g3godwarfsets_ Enable DWARF '#039'set'#039' type debug information (bre'+
-  'aks gdb < 6.5)'#010+
+  '*g2go<x>_Set debug information options'#010+
+  '*g3godwa','rfsets_ Enable DWARF '#039'set'#039' type debug information (b'+
+  'reaks 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+
-  '*g3godwarfcpp','_ Simulate C++ debug information in DWARF'#010+
+  '*g3godwarfcpp_ Simulate C+','+ debug information in DWARF'#010+
   '*g2gp_Preserve case in stabs symbol names'#010+
   '*g2gs_Generate Stabs debug information'#010+
   '*g2gt_Trash local variables (to detect uninitialized uses; multiple '#039+
   't'#039' changes the trashing value)'#010+
-  '*g2gv_Generates p','rograms traceable with Valgrind'#010+
+  '*g2gv_Generates programs trace','able with Valgrind'#010+
   '*g2gw_Generate DWARFv2 debug information (same as -gw2)'#010+
   '*g2gw2_Generate DWARFv2 debug information'#010+
   '*g2gw3_Generate DWARFv3 debug information'#010+
   '*g2gw4_Generate DWARFv4 debug information (experimental)'#010+
-  '**1i_Inform','ation'#010+
-  '**2iD_Return compiler date'#010+
+  '**1i_Information'#010+
+  '**2iD_R','eturn compiler date'#010+
   '**2iSO_Return compiler OS'#010+
   '**2iSP_Return compiler host processor'#010+
   '**2iTO_Return target OS'#010+
@@ -1581,17 +1583,17 @@
   '**2iTP_Return target processor'#010+
   '**2iV_Return short compiler version'#010+
   '**2iW_Return full compiler version'#010+
-  '**2ia_Return list',' of supported ABI targets'#010+
+  '**2ia_Return list of supported',' ABI targets'#010+
   '**2ic_Return list of supported CPU instruction sets'#010+
   '**2if_Return list of supported FPU instruction sets'#010+
   '**2ii_Return list of supported inline assembler modes'#010+
   '**2io_Return list of supported optimizations'#010+
-  '**2ir_Retur','n list of recognized compiler and RTL features'#010+
+  '**2ir_Return list of rec','ognized compiler and RTL features'#010+
   '**2it_Return list of supported targets'#010+
   '**2iu_Return list of supported microcontroller types'#010+
   '**2iw_Return list of supported whole program optimizations'#010+
   '**1I<x>_Add <x> to include path'#010+
-  '**1k<x>_Pa','ss <x> to the linker'#010+
+  '**1k<x>_Pass <x> to the',' linker'#010+
   '**1l_Write logo'#010+
   '**1M<x>_Set language mode to <x>'#010+
   '**2Mfpc_Free Pascal dialect (default)'#010+
@@ -1598,40 +1600,40 @@
   '**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_Macintosh Pa','scal dialects compatibility mode'#010+
   '**2Miso_ISO 7185 mode'#010+
   '**2Mextendedpascal_ISO 10206 mode'#010+
   '**2Mdelphiunicode_Delphi 2009 and later compatibility mode'#010+
   '**1n_Do not read the default config files'#010+
-  '**1o<x>_Change the name of the execut','able produced to <x>'#010+
+  '**1o<x>_Change the name of the executable produced',' to <x>'#010+
   '**1O<x>_Optimizations:'#010+
   '**2O-_Disable optimizations'#010+
   '**2O1_Level 1 optimizations (quick and debugger friendly)'#010+
   '**2O2_Level 2 optimizations (-O1 + quick optimizations)'#010+
-  '**2O3_Level 3 optimizations (-O2 + slow optimizations)',#010+
-  '**2O4_Level 4 optimizations (-O3 + optimizations which might have unex'+
-  'pected side effects)'#010+
+  '**2O3_Level 3 optimizations (-O2 + slow optimizations)'#010+
+  '**2O4_Level ','4 optimizations (-O3 + optimizations which might have un'+
+  'expected side effects)'#010+
   '**2Oa<x>=<y>_Set alignment'#010+
   '**2Oo[NO]<x>_Enable or disable optimizations; see fpc -i or fpc -io fo'+
   'r possible values'#010+
-  '**2Op<x>_Set target cpu for optim','izing; see fpc -i or fpc -ic for po'+
+  '**2Op<x>_Set target cpu for optimizing; see fp','c -i or fpc -ic for po'+
   'ssible values'#010+
   '**2OW<x>_Generate whole-program optimization feedback for optimization'+
   ' <x>; see fpc -i or fpc -iw for possible values'#010+
   '**2Ow<x>_Perform whole-program optimization <x>; see fpc -i or fpc -iw'+
-  ' fo','r possible values'#010+
+  ' for possible va','lues'#010+
   '**2Os_Optimize for size rather than speed'#010+
   '**1pg_Generate profile code for gprof (defines FPC_PROFILE)'#010+
   'F*1P<x>_Target CPU / compiler related options:'#010+
   'F*2PB_Show default compiler binary'#010+
   'F*2PP_Show default target cpu'#010+
-  'F*2P<x>_','Set target CPU (aarch64,arm,avr,i386,i8086,jvm,m68k,mips,mip'+
+  'F*2P<x>_Set target CP','U (aarch64,arm,avr,i386,i8086,jvm,m68k,mips,mip'+
   'sel,powerpc,powerpc64,sparc,x86_64)'#010+
   '**1R<x>_Assembler reading style:'#010+
   '**2Rdefault_Use default assembler for target'#010+
   '3*2Ratt_Read AT&T style assembler'#010+
-  '3*2Rintel_Read Intel style assem','bler'#010+
-  '4*2Ratt_Read AT&T style assembler'#010+
+  '3*2Rintel_Read Intel style assembler'#010+
+  '4*2Ratt_','Read AT&T style assembler'#010+
   '4*2Rintel_Read Intel style assembler'#010+
   '8*2Ratt_Read AT&T style assembler'#010+
   '8*2Rintel_Read Intel style assembler'#010+
@@ -1638,22 +1640,22 @@
   '6*2RMOT_Read Motorola style assembler'#010+
   '**1S<x>_Syntax options:'#010+
   '**2S2_Same as -Mobjfpc'#010+
-  '**2Sc_Su','pport operators like C (*=,+=,/= and -=)'#010+
+  '**2Sc_Support operato','rs like C (*=,+=,/= and -=)'#010+
   '**2Sa_Turn on assertions'#010+
   '**2Sd_Same as -Mdelphi'#010+
   '**2Se<x>_Error options. <x> is a combination of the following:'#010+
   '**3*_<n> : Compiler halts after the <n> errors (default is 1)'#010+
-  '**3*_w : Compiler also hal','ts after warnings'#010+
+  '**3*_w : Compiler also halts after warn','ings'#010+
   '**3*_n : Compiler also halts after notes'#010+
   '**3*_h : Compiler also halts after hints'#010+
   '**2Sf_Enable certain features in compiler and RTL; see fpc -i or fpc -'+
   'ir for possible values)'#010+
-  '**2Sg_Enable LABEL and GOTO (default in -Mtp a','nd -Mdelphi)'#010+
+  '**2Sg_Enable LABEL and GOTO (default in -Mtp and -Mdelphi)'#010,
   '**2Sh_Use reference counted strings (ansistring by default) instead of'+
   ' shortstrings'#010+
   '**2Si_Turn on inlining of procedures/functions declared as "inline"'#010+
   '**2Sj_Allows typed constants to be writeable (default in all modes)'#010+
-  '**2Sk_L','oad fpcylix unit'#010+
+  '**2Sk_Load fpcylix u','nit'#010+
   '**2SI<x>_Set interface style to <x>'#010+
   '**3SIcom_COM compatible interface (default)'#010+
   '**3SIcorba_CORBA compatible interface'#010+
@@ -1660,19 +1662,19 @@
   '**2Sm_Support macros like C (global)'#010+
   '**2So_Same as -Mtp'#010+
   '**2Sr_Transparent file names in ISO mode'#010+
-  '**2Ss_Co','nstructor name must be init (destructor must be done)'#010+
+  '**2Ss_Constructor nam','e must be init (destructor must be done)'#010+
   '**2Sv_Support vector processing (use CPU vector extensions if availabl'+
   'e)'#010+
   '**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+
-  '**2Sy_@<pointer> returns a typed pointer, same a','s $T+'#010+
-  '**1s_Do not call assembler and linker'#010+
+  '**2Sy_@<pointer> 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+
   '**1T<x>_Target operating system:'#010+
   '3*2Tandroid_Android'#010+
-  '3*2Taros_ARO','S'#010+
-  '3*2Tbeos_BeOS'#010+
+  '3*2Taros_AROS'#010+
+  '3*2Tbeos_Be','OS'#010+
   '3*2Tdarwin_Darwin/Mac OS X'#010+
   '3*2Tembedded_Embedded'#010+
   '3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
@@ -1679,7 +1681,7 @@
   '3*2Tfreebsd_FreeBSD'#010+
   '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+
   '3*2Thaiku_Haiku'#010+
-  '3*2Tiphonesim_iPhoneSimulator from iOS SD','K 3.2+ (older versions: -Td'+
+  '3*2Tiphonesim_iPhoneSimulator from iOS SDK 3.2+ (older',' versions: -Td'+
   'arwin)'#010+
   '3*2Tlinux_Linux'#010+
   '3*2Tnativent_Native NT API (experimental)'#010+
@@ -1687,8 +1689,8 @@
   '3*2Tnetware_Novell Netware Module (clib)'#010+
   '3*2Tnetwlibc_Novell Netware Module (libc)'#010+
   '3*2Topenbsd_OpenBSD'#010+
-  '3*2Tos2_OS/2 / eComStation'#010,
-  '3*2Tsymbian_Symbian OS'#010+
+  '3*2Tos2_OS/2 / eComStation'#010+
+  '3*2Tsymbian_S','ymbian OS'#010+
   '3*2Tsolaris_Solaris'#010+
   '3*2Twatcom_Watcom compatible DOS extender'#010+
   '3*2Twdosx_WDOSX DOS extender'#010+
@@ -1697,8 +1699,8 @@
   '4*2Taros_AROS'#010+
   '4*2Tdarwin_Darwin/Mac OS X'#010+
   '4*2Tdragonfly_DragonFly BSD'#010+
-  '4*2Tembedde','d_Embedded'#010+
-  '4*2Tfreebsd_FreeBSD'#010+
+  '4*2Tembedded_Embedded'#010+
+  '4*','2Tfreebsd_FreeBSD'#010+
   '4*2Tiphonesim_iPhoneSimulator'#010+
   '4*2Tlinux_Linux'#010+
   '4*2Tnetbsd_NetBSD'#010+
@@ -1707,8 +1709,8 @@
   '4*2Twin64_Win64 (64 bit Windows systems)'#010+
   '6*2Tamiga_Commodore Amiga'#010+
   '6*2Tatari_Atari ST/STe/TT'#010+
-  '6*2Tembedded','_Embedded'#010+
-  '6*2Tlinux_Linux'#010+
+  '6*2Tembedded_Embedded'#010+
+  '6*2','Tlinux_Linux'#010+
   '6*2Tnetbsd_NetBSD'#010+
   '6*2Tmacos_Mac OS'#010+
   '6*2Tpalmos_PalmOS'#010+
@@ -1718,8 +1720,8 @@
   'A*2Tandroid_Android'#010+
   'A*2Taros_AROS'#010+
   'A*2Tdarwin_Darwin/iPhoneOS/iOS'#010+
-  'A*2Tembedded_Em','bedded'#010+
-  'A*2Tgba_Game Boy Advance'#010+
+  'A*2Tembedded_Embedded'#010+
+  'A*2Tgb','a_Game Boy Advance'#010+
   'A*2Tlinux_Linux'#010+
   'A*2Tnds_Nintendo DS'#010+
   'A*2Tnetbsd_NetBSD'#010+
@@ -1731,7 +1733,7 @@
   'J*2Tandroid_Android'#010+
   'J*2Tjava_Java'#010+
   'm*2Tandroid_Android'#010+
-  'm*2','Tembedded_Embedded'#010+
+  'm*2Tembedded_Emb','edded'#010+
   'm*2Tlinux_Linux'#010+
   'M*2Tembedded_Embedded'#010+
   'M*2Tlinux_Linux'#010+
@@ -1743,8 +1745,8 @@
   'P*2Tmacos_Mac OS (classic)'#010+
   'P*2Tmorphos_MorphOS'#010+
   'P*2Tnetbsd_NetBSD'#010+
-  'P*2Twii','_Wii'#010+
-  'p*2Taix_AIX'#010+
+  'P*2Twii_Wii'#010+
+  'p*2Taix_','AIX'#010+
   'p*2Tdarwin_Darwin/Mac OS X'#010+
   'p*2Tembedded_Embedded'#010+
   'p*2Tlinux_Linux'#010+
@@ -1754,71 +1756,71 @@
   'V*2Tembedded_Embedded'#010+
   '**1u<x>_Undefines the symbol <x>'#010+
   '**1U_Unit options:'#010+
-  '**2Un_Do not check where the uni','t name matches the file name'#010+
+  '**2Un_Do not check where the unit name matche','s the file name'#010+
   '**2Ur_Generate release unit files (never automatically recompiled)'#010+
   '**2Us_Compile a system unit'#010+
   '**1v<x>_Be verbose. <x> is a combination of the following letters:'#010+
-  '**2*_e : Show errors (default)       0 : Show not','hing (except errors'+
+  '**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/used files'#010+
   '**2*_h : Show hints                  c : Show conditionals'#010+
-  '**2*_i : Show general info           d : ','Show debug info'#010+
+  '**2*_i : Show general info           d : Show debug in','fo'#010+
   '**2*_l : Show linenumbers            r : Rhide/GCC compatibility mode'#010+
   '**2*_s : Show time stamps            q : Show message numbers'#010+
   '**2*_a : Show everything             x : Show info about invoked tools'+
   #010+
-  '**2*_b : Write file n','ames messages   p : Write tree.log with parse t'+
+  '**2*_b : Write file names messages','   p : Write tree.log with parse t'+
   'ree'#010+
   '**2*_    with full path              v : Write fpcdebug.txt with'#010+
   '**2*_z : Write output to stderr          lots of debugging info'#010+
   '**2*_m<x>,<y> : Do not show messages numbered <x> and <y>'#010+
-  'F*','1V<x>_Append '#039'-<x>'#039' to the used compiler binary name (e.g.'+
-  ' for version)'#010+
+  'F*1V<x>_Append ',#039'-<x>'#039' to the used compiler binary name (e.g. f'+
+  'or version)'#010+
   '**1W<x>_Target-specific options (targets)'#010+
   '3*2WA_Specify native type application (Windows)'#010+
   '4*2WA_Specify native type application (Windows)'#010+
-  'A*2WA_Specify native type appl','ication (Windows)'#010+
+  'A*2WA_Specify native type application (Wind','ows)'#010+
   '3*2Wb_Create a bundle instead of a library (Darwin)'#010+
   'P*2Wb_Create 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+
-  'A*2Wb_Create a',' bundle instead of a library (Darwin)'#010+
+  'A*2Wb_Create a bundle inste','ad 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*2WB<x>_Set image base to <x> (Windows, Symbian)'#010+
   '4*2WB_Create a relocatable image (Windows)'#010+
-  '4*2WB','<x>_Set image base to <x> (Windows)'#010+
+  '4*2WB<x>_Set image',' base to <x> (Windows)'#010+
   'A*2WB_Create a relocatable image (Windows, Symbian)'#010+
   'A*2WB<x>_Set image base to <x> (Windows, Symbian)'#010+
   '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+
-  '4*2WC_Specify console type application (Wi','ndows)'#010+
-  'A*2WC_Specify console type application (Windows)'#010+
+  '4*2WC_Specify console type application (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 (Windows)'#010+
   '4*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
-  'A*2W','D_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+
   '4*2We_Use external resources (Darwin)'#010+
   'a*2We_Use external resources (Darwin)'#010+
   'A*2We_Use external resources (Darwin)'#010+
-  'P*2We_Use external resources (','Darwin)'#010+
-  'p*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 (Windows)'#010+
-  'A*2WG_Specify graphic type app','lication (Windows)'#010+
+  'A*2WG_Specify graphic type application (Win','dows)'#010+
   'P*2WG_Specify graphic type application (Classic Mac OS)'#010+
   '3*2Wi_Use internal resources (Darwin)'#010+
   '4*2Wi_Use internal resources (Darwin)'#010+
   'a*2Wi_Use internal resources (Darwin)'#010+
   'A*2Wi_Use internal resources (Darwin)'#010+
-  'P*2Wi_Use int','ernal resources (Darwin)'#010+
+  'P*2Wi_Use internal resourc','es (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+
-  '8*2Wh_','Use huge code for units (ignored for models with CODE in a uni'+
+  '8*2Wh_Use huge code',' for units (ignored for models with CODE in a uni'+
   'que segment)'#010+
   '8*2Wm<x>_Set memory model'#010+
   '8*3WmTiny_Tiny memory model'#010+
@@ -1825,70 +1827,70 @@
   '8*3WmSmall_Small memory model (default)'#010+
   '8*3WmMedium_Medium memory model'#010+
   '8*3WmCompact_Compact memory model'#010+
-  '8*3Wm','Large_Large memory model'#010+
+  '8*3WmLarge_Large m','emory model'#010+
   '8*3WmHuge_Huge memory model'#010+
   '3*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
   'n)'#010+
   '4*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
   'n)'#010+
-  'p*2WM<x>_Minimum Mac OS X deployment vers','ion: 10.4, 10.5.1, ... (Dar'+
+  'p*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10','.5.1, ... (Dar'+
   'win)'#010+
   'P*2WM<x>_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+
-  '4*2WN_Do not generate relocation code, needed for debugging (Wind','ows'+
+  '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*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+
   'le values'#010+
   'm*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+
   'le values'#010+
-  'V*2Wp','<x>_Specify the controller type; see fpc -i or fpc -iu for poss'+
+  'V*2Wp<x>_Specify t','he controller type; see fpc -i or fpc -iu for poss'+
   'ible values'#010+
   '3*2WP<x>_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'#010+
   '4*2WP<x>_Minimum iOS deployment version: 8.0, 8.0.2, ... (iphonesim)'#010+
-  'a*2WP<x>_Minimum iOS deploy','ment version: 7.0, 7.1.2, ... (Darwin)'#010+
+  'a*2WP<x>_Minimum iOS deployment version:',' 7.0, 7.1.2, ... (Darwin)'#010+
   'A*2WP<x>_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+
   'A*2WR_Generate relocation code (Windows)'#010+
-  '8*2Wt<x>_Set',' the target executable format'#010+
+  '8*2Wt<x>_Set the target e','xecutable format'#010+
   '8*3Wtexe_Create a DOS .EXE file (default)'#010+
   '8*3Wtcom_Create a DOS .COM file (requires tiny memory model)'#010+
   'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+
   '**2WX_Enable executable stack (Linux)'#010+
-  '**1X_Executa','ble options:'#010+
+  '**1X_Executable options:'#010,
   '**2X9_Generate linkerscript for GNU Binutils ld older than version 2.1'+
   '9.1 (Linux)'#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+
+  '-compiling whe','n not using -XR)'#010+
   '**2Xe_Use external linker'#010+
   '**2Xf_Substitute pthread library name for linking (BSD)'#010+
   '**2Xg_Create debuginfo in a separate file and add a debuglink section '+
   'to executable'#010+
-  '**2XD_Try to link units dynamically      (de','fines FPC_LINK_DYNAMIC)'#010+
+  '**2XD_Try to link units dynamically      (defines FPC_LIN','K_DYNAMIC)'#010+
   '**2Xi_Use internal linker'#010+
   '**2XLA_Define library substitutions for linking'#010+
   '**2XLO_Define order of library linking'#010+
   '**2XLD_Exclude default order of standard libraries'#010+
   '**2Xm_Generate link map'#010+
-  '**2XM<x>_Set the name of the',' '#039'main'#039' program routine (default'+
+  '**2XM<x>_Set the name of the '#039'main'#039' progr','am routine (default'+
   ' is '#039'main'#039')'#010+
   '**2Xn_Use target system native linker instead of GNU ld (Solaris, AIX)'+
   #010+
   'F*2Xp<x>_First search for the compiler binary in the directory <x>'#010+
   '**2XP<x>_Prepend the binutils names with the prefix <x>'#010+
-  '**','2Xr<x>_Set the linker'#039's rlink-path to <x> (needed for cross co'+
+  '**2Xr<x>_Set th','e linker'#039's rlink-path to <x> (needed for cross co'+
   'mpile, see the ld manual for more information) (BeOS, Linux)'#010+
   '**2XR<x>_Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD'+
   ', Linux, Mac OS, Solaris)'#010+
-  '**2Xs_Strip all symbo','ls from executable'#010+
+  '**2Xs_Strip all symbols from execu','table'#010+
   '**2XS_Try to link units statically (default, defines FPC_LINK_STATIC)'#010+
   '**2Xt_Link with static libraries (-static is passed to linker)'#010+
   '**2Xv_Generate table for Virtual Entry calls'#010+
-  '**2XV_Use VLink as external linker       (d','efault on Amiga, MorphOS)'+
+  '**2XV_Use VLink as external linker       (default on Ami','ga, MorphOS)'+
   #010+
   '**2XX_Try to smartlink units             (defines FPC_LINK_SMART)'#010+
   '**1*_'#010+
Index: compiler/pdecsub.pas
===================================================================
--- compiler/pdecsub.pas	(revision 39008)
+++ compiler/pdecsub.pas	(working copy)
@@ -128,6 +128,25 @@
         Declaring it as string here results in an error when compiling (PFV) }
       current_procinfo = 'error';
 
+    { get_first_proc_str - returns the token string of the first option that
+      appears in the list }
+    function get_first_proc_str(Options: TProcOptions): ShortString;
+      var
+        X: TProcOption;
+      begin
+        if Options = [] then
+          InternalError(2018051700);
+
+        get_first_proc_str := '';
+
+        for X := Low(TProcOption) to High(TProcOption) do
+          if X in Options then
+            begin
+              get_first_proc_str := ProcOptionKeywords[X];
+              Exit;
+            end;
+      end;
+
     function push_child_hierarchy(obj:tabstractrecorddef):integer;
       var
         _class,hp : tobjectdef;
@@ -1919,7 +1938,7 @@
   if (not assigned(pd.owner.defowner) or
       not is_java_class_or_interface(tdef(pd.owner.defowner))) and
      (po_external in pd.procoptions) then
-    Message1(parser_e_proc_dir_conflict,'EXTERNAL');
+    Message2(parser_e_proc_dir_conflict,'EXTERNAL','"VIRTUAL"');
 
   if pd.typ<>procdef then
     internalerror(2003042610);
@@ -2004,7 +2023,7 @@
           not is_objc_class_or_protocol(tprocdef(pd).struct) and
           not is_cppclass(tprocdef(pd).struct) and
           not is_java_class_or_interface(tprocdef(pd).struct) then
-    Message1(parser_e_proc_dir_conflict,'OVERRIDE');
+    Message2(parser_e_proc_dir_conflict,'OVERRIDE','"EXTERNAL"');
 end;
 
 procedure pd_overload(pd:tabstractprocdef);
@@ -2036,7 +2055,7 @@
   if not is_objc_class_or_protocol(tprocdef(pd).struct) then
     begin
       if po_external in pd.procoptions then
-        Message1(parser_e_proc_dir_conflict,'MESSAGE');
+        Message2(parser_e_proc_dir_conflict,'MESSAGE','"EXTERNAL"');
       paracnt:=0;
       pd.parast.SymList.ForEachCall(@check_msg_para,@paracnt);
       if paracnt<>1 then
@@ -2896,7 +2915,10 @@
       }
       var
         p     : longint;
-        name  : TIDString;
+        name,
+        other : TIDString;
+        po_comp : tprocoptions;
+        tokenloc : TFilePosInfo;
       begin
         parse_proc_direc:=false;
         name:=tokeninfo^[idtoken].str;
@@ -2916,7 +2938,6 @@
                    { could the new token still be a directive? }
                    if token<>_ID then
                      exit;
-                   name:=tokeninfo^[idtoken].str;
                  end
                else
                  exit;
@@ -2967,21 +2988,39 @@
            is_javainterface(tdef(symtablestack.top.defowner)) then
           exit;
 
-        { Conflicts between directives ? }
-        if (pd.proctypeoption in proc_direcdata[p].mutexclpotype) or
-           (pd.proccalloption in proc_direcdata[p].mutexclpocall) or
-           ((pd.procoptions*proc_direcdata[p].mutexclpo)<>[]) then
-         begin
-           Message1(parser_e_proc_dir_conflict,name);
-           exit;
-         end;
+        { Keep track of the token's position in the file so it's correctly indicated if an error occurs. }
+        tokenloc := current_tokenpos;
 
+        { consume directive, and turn flag on }
+        consume(token);
+        parse_proc_direc:=true;
+
+        { Conflicts between directives? }
+        if (pd.proctypeoption in proc_direcdata[p].mutexclpotype) then
+          begin
+            MessagePos2(tokenloc, parser_e_proc_dir_conflict,name,ProcTypeOptionKeywords[pd.proctypeoption]);
+            exit;
+          end;
+
+        if (pd.proccalloption in proc_direcdata[p].mutexclpocall) then
+          begin
+            MessagePos2(tokenloc, parser_e_proc_dir_conflict,name,'"' + UpCase(proccalloptionStr[pd.proccalloption]) + '"');
+            exit;
+          end;
+
+        po_comp := (pd.procoptions*proc_direcdata[p].mutexclpo);
+        if (po_comp<>[]) then
+          begin
+            MessagePos2(tokenloc, parser_e_proc_dir_conflict,name,get_first_proc_str(po_comp));
+            exit;
+          end;
+
         { set calling convention }
         if proc_direcdata[p].pocall<>pocall_none then
          begin
            if (po_hascallingconvention in pd.procoptions) then
             begin
-              Message2(parser_w_proc_overriding_calling,
+              MessagePos2(tokenloc, parser_w_proc_overriding_calling,
                 proccalloptionStr[pd.proccalloption],
                 proccalloptionStr[proc_direcdata[p].pocall]);
             end;
@@ -2988,7 +3027,7 @@
            { check if the target processor supports this calling convention }
            if not(proc_direcdata[p].pocall in supported_calling_conventions) then
              begin
-               Message1(parser_e_illegal_calling_convention,proccalloptionStr[proc_direcdata[p].pocall]);
+               MessagePos1(tokenloc, parser_e_illegal_calling_convention,proccalloptionStr[proc_direcdata[p].pocall]);
                { recover }
                proc_direcdata[p].pocall:=pocall_stdcall;
              end;
@@ -3031,29 +3070,26 @@
            { check if method and directive not for record/class helper }
            if is_objectpascal_helper(tprocdef(pd).struct) and
              (pd_nothelper in proc_direcdata[p].pd_flags) then
+              { TODO: Missing exit? [Kit] }
          end;
 
-        { consume directive, and turn flag on }
-        consume(token);
-        parse_proc_direc:=true;
-
         { Check the pd_flags if the directive should be allowed }
         if (pd_interface in pdflags) and
            not(pd_interface in proc_direcdata[p].pd_flags) then
           begin
-            Message1(parser_e_proc_dir_not_allowed_in_interface,name);
+            MessagePos1(tokenloc, parser_e_proc_dir_not_allowed_in_interface,name);
             exit;
           end;
         if (pd_implemen in pdflags) and
            not(pd_implemen in proc_direcdata[p].pd_flags) then
           begin
-            Message1(parser_e_proc_dir_not_allowed_in_implementation,name);
+            MessagePos1(tokenloc, parser_e_proc_dir_not_allowed_in_implementation,name);
             exit;
           end;
         if (pd_procvar in pdflags) and
            not(pd_procvar in proc_direcdata[p].pd_flags) then
           begin
-            Message1(parser_e_proc_dir_not_allowed_in_procvar,name);
+            MessagePos1(tokenloc, parser_e_proc_dir_not_allowed_in_procvar,name);
             exit;
           end;
 
@@ -3722,8 +3758,9 @@
                            if virtualdirinfo=-1 then
                              internalerror(2018010101);
                          end;
-                       if (proc_direcdata[virtualdirinfo].mutexclpo * currpd.procoptions)<>[] then
-                         MessagePos1(currpd.fileinfo,parser_e_proc_dir_conflict,tokeninfo^[_VIRTUAL].str);
+                       po_comp := (proc_direcdata[virtualdirinfo].mutexclpo * currpd.procoptions);
+                       if po_comp<>[] then
+                         MessagePos2(currpd.fileinfo,parser_e_proc_dir_conflict,tokeninfo^[_VIRTUAL].str,get_first_proc_str(po_comp));
                      end;
                     { Check parameters }
                    if (m_repeat_forward in current_settings.modeswitches) or
Index: compiler/symconst.pas
===================================================================
--- compiler/symconst.pas	(revision 39008)
+++ compiler/symconst.pas	(working copy)
@@ -934,6 +934,88 @@
       { suffix for indirect symbols (AB_INDIRECT) }
       suffix_indirect = '$indirect';
 
+    { TProcTypeOption string identifiers for error messsages }
+    ProcTypeOptionKeywords: array[tproctypeoption] of ShortString = (
+      'potype_none',        {potype_none}
+      'program initialization',{potype_proginit}
+      '"INITIALIZATION"',   {potype_unitinit}
+      '"FINALIZATION"',     {potype_unitfinalize}
+      '"CONSTRUCTOR"',      {potype_constructor}
+      '"DESTRUCTOR"',       {potype_destructor}
+      '"OPERATOR"',         {potype_operator}
+      '"PROCEDURE"',        {potype_procedure}
+      '"FUNCTION"',         {potype_function}
+      '"CLASS CONSTRUCTOR"',{potype_class_constructor}
+      '"CLASS DESTRUCTOR"', {potype_class_destructor}
+      'property getters',   {potype_propgetter}
+      'property setters',   {potype_propsetter}
+      'exception filters',  {potype_exceptfilter}
+      '"main" stub',        {potype_mainstub}
+      'package stub'        {potype_pkgstub}
+    );
+
+    { TProcOption string identifiers for error messages }
+    ProcOptionKeywords: array[tprocoption] of ShortString = (
+      'po_none',            {po_none}
+      '"CLASS"',            {po_classmethod}
+      '"VIRTUAL"',          {po_virtualmethod}
+      '"ABSTRACT"',         {po_abstractmethod}
+      '"FINAL"',            {po_finalmethod}
+      '"STATIC"',           {po_staticmethod}
+      '"OVERRIDE"',         {po_overridingmethod}
+      'method pointers',    {po_methodpointer}
+      '"INTERRUPT"',        {po_interrupt}
+      'po_iocheck',         {po_iocheck}
+      '"ASSEMBLER"',        {po_assembler}
+      '"MESSAGE"',          {po_msgstr}
+      '"MESSAGE"',          {po_msgint}
+      '"EXPORT"',           {po_exports}
+      '"EXTERNAL"',         {po_external}
+      '"OVERLOAD"',         {po_overload}
+      'variable argument lists',{po_varargs}
+      'po_internconst',     {po_internconst}
+      'po_addressonly',     {po_addressonly}
+      '"PUBLIC"',           {po_public}
+      'po_hascallingconvention',{po_hascallingconvention}
+      '"REINTRODUCE"',      {po_reintroduce}
+      'po_explicitparaloc', {po_explicitparaloc}
+      '"NOSTACKFRAME"',     {po_nostackframe}
+      'po_has_mangledname', {po_has_mangledname}
+      'po_has_public_name', {po_has_public_name}
+      '"FORWARD"',          {po_forward}
+      'global routines',    {po_global}
+      '"SYSCALL"',          {po_syscall}
+      '"SYSCALL"',          {po_syscall_legacy}
+      '"SYSCALL"',          {po_syscall_basenone}
+      '"SYSCALL"',          {po_syscall_basefirst}
+      '"SYSCALL"',          {po_syscall_baselast}
+      '"SYSCALL"',          {po_syscall_basereg}
+      '"SYSCALL"',          {po_syscall_has_libsym}
+      '"SYSCALL"',          {po_syscall_has_importnr}
+      '"INLINE"',           {po_inline}
+      '"COMPILERPROC"',     {po_compilerproc}
+      'po_has_importdll',   {po_has_importdll}
+      'po_has_importname',  {po_has_importname}
+      'po_kylixlocal',      {po_kylixlocal}
+      '"DISPID"',           {po_dispid}
+      'po_weakexternal',    {po_weakexternal}
+      'po_objc',            {po_objc}
+      'po_enumerator_movenext',{po_enumerator_movenext}
+      'po_optional',        {po_optional}
+      'po_delphi_nested_cc',{po_delphi_nested_cc}
+      'RTL procedures',     {po_rtlproc}
+      'non-virtual Java methods',{po_java_nonvirtual}
+      'po_ignore_for_overload_resolution',{po_ignore_for_overload_resolution}
+      'po_auto_raised_visibility',{po_auto_raised_visibility}
+      '"FAR"',              {po_far}
+      'po_hasnearfarcallmodel',{po_hasnearfarcallmodel}
+      '"NORETURN"',{po_noreturn}
+      'po_is_function_ref',{po_is_function_ref}
+      'C-style blocks',{po_is_block}
+      'po_is_auto_getter',{po_is_auto_getter}
+      'po_is_auto_setter'{po_is_auto_setter}
+    );
+
 implementation
 
 end.
DirectiveConflictClarity.patch (123,994 bytes)   

J. Gareth Moreton

2018-05-18 02:53

developer   ~0108383

Find attached a test project that can be used to showcase the error messages (it should never successfully compile).

J. Gareth Moreton

2018-05-18 02:54

developer  

J. Gareth Moreton

2018-05-18 23:11

developer   ~0108421

I hope you don't mind the assignment, Florian. I can usually rely on you to judge my patches and decide if they're good for Free Pascal.

Florian

2018-07-07 16:54

administrator   ~0109278

Thanks, finally applied. I fixed also the missing exit.

J. Gareth Moreton

2018-11-30 18:51

developer   ~0112281

No reported issues with these new error messages.

Issue History

Date Modified Username Field Change
2018-05-18 02:52 J. Gareth Moreton New Issue
2018-05-18 02:52 J. Gareth Moreton File Added: DirectiveConflictClarity.patch
2018-05-18 02:53 J. Gareth Moreton Note Added: 0108383
2018-05-18 02:54 J. Gareth Moreton File Added: DirectiveConflictErrorTest.pp
2018-05-18 02:54 J. Gareth Moreton Priority normal => low
2018-05-18 02:54 J. Gareth Moreton Severity minor => text
2018-05-18 03:05 J. Gareth Moreton OS => Microsoft Windows
2018-05-18 03:05 J. Gareth Moreton OS Version => 10 Professional
2018-05-18 03:05 J. Gareth Moreton Platform => win64
2018-05-18 23:09 J. Gareth Moreton Assigned To => Florian
2018-05-18 23:09 J. Gareth Moreton Status new => assigned
2018-05-18 23:11 J. Gareth Moreton Note Added: 0108421
2018-05-28 09:14 J. Gareth Moreton Tag Attached: error
2018-05-28 09:14 J. Gareth Moreton Tag Attached: messages
2018-05-28 09:14 J. Gareth Moreton Tag Attached: output
2018-05-28 09:14 J. Gareth Moreton Tag Attached: patch
2018-07-07 16:54 Florian Fixed in Revision => 39407
2018-07-07 16:54 Florian Note Added: 0109278
2018-07-07 16:54 Florian Status assigned => resolved
2018-07-07 16:54 Florian Fixed in Version => 3.1.1
2018-07-07 16:54 Florian Resolution open => fixed
2018-11-30 18:51 J. Gareth Moreton Note Added: 0112281
2018-11-30 18:51 J. Gareth Moreton Status resolved => closed
2018-11-30 18:51 J. Gareth Moreton Target Version => 3.3.1