Browse Source

* V_Fatal=1, all other V_ are also increased
* Check for local procedure when assigning procvar
* fixed comment parsing because directives
* oldtp mode directives better supported
* added some messages to errore.msg

peter 26 years ago
parent
commit
cb8aeb3fd6

+ 29 - 19
compiler/comphook.pas

@@ -25,24 +25,27 @@ interface
 
 
 Const
 Const
 { <$10000 will show file and line }
 { <$10000 will show file and line }
-  V_Fatal       = $0;
-  V_Error       = $1;
-  V_Normal      = $2; { doesn't show a text like Error: }
-  V_Warning     = $4;
-  V_Note        = $8;
-  V_Hint        = $10;
-  V_Macro       = $100;
-  V_Procedure   = $200;
-  V_Conditional = $400;
-  V_Info        = $10000;
-  V_Status      = $20000;
-  V_Used        = $40000;
-  V_Tried       = $80000;
-  V_Debug       = $100000;
-
-  V_ShowFile    = $ffff;
-  V_All         = $ffffffff;
-  V_Default     = V_Fatal + V_Error + V_Normal;
+  V_None         = $0;
+  V_Fatal        = $1;
+  V_Error        = $2;
+  V_Normal       = $4; { doesn't show a text like Error: }
+  V_Warning      = $8;
+  V_Note         = $10;
+  V_Hint         = $20;
+  V_Macro        = $100;
+  V_Procedure    = $200;
+  V_Conditional  = $400;
+  V_Assem        = $800;
+  V_Info         = $10000;
+  V_Status       = $20000;
+  V_Used         = $40000;
+  V_Tried        = $80000;
+  V_Debug        = $100000;
+  V_Declarations = $200000;
+  V_Executable   = $400000;
+  V_ShowFile     = $ffff;
+  V_All          = $ffffffff;
+  V_Default      = V_Fatal + V_Error + V_Normal;
 
 
 type
 type
   PCompilerStatus = ^TCompilerStatus;
   PCompilerStatus = ^TCompilerStatus;
@@ -265,7 +268,14 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.16  1999-05-04 21:44:38  florian
+  Revision 1.17  1999-08-05 16:52:53  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.16  1999/05/04 21:44:38  florian
     * changes to compile it with Delphi 4.0
     * changes to compile it with Delphi 4.0
 
 
   Revision 1.15  1999/01/15 12:27:23  peter
   Revision 1.15  1999/01/15 12:27:23  peter

+ 21 - 11
compiler/errore.msg

@@ -258,7 +258,9 @@ scan_e_wrong_switch_toggle=E_Wrong switch toggle, use ON/OFF or +/-
 scan_e_resourcefiles_not_supported=E_Resource files are not supported for this target
 scan_e_resourcefiles_not_supported=E_Resource files are not supported for this target
 % The target you are compiling for doesn't support Resource files. The
 % The target you are compiling for doesn't support Resource files. The
 % only target which can use resource files is Win32
 % only target which can use resource files is Win32
-%
+scan_w_include_env_not_found=W_Include environment $1 not found in environment
+% The included environment variable can't be found in the environment, it'll
+% be replaced by an empty string instead.
 % \end{description}
 % \end{description}
 #
 #
 # Parser
 # Parser
@@ -799,23 +801,26 @@ type_e_incompatible_types=E_Incompatible types: got "$1" expected "$2"
 % \end{verbatim}
 % \end{verbatim}
 type_e_not_equal_types=E_Type mismatch between $1 and $2
 type_e_not_equal_types=E_Type mismatch between $1 and $2
 % The types are not equal
 % The types are not equal
-type_e_integer_expr_expected=E_Integer expression expected
+type_e_type_id_expected=E_Type identifier expected
+% The identifier is not a type, or you forgot to supply a type identifier.
+type_e_variable_id_expected=E_Variable identifier expected
+% This happens when you pass a constant to a \var{Inc} var or \var{Dec}
+% procedure. You can only pass variables as arguments to these functions.
+type_e_integer_expr_expected=E_Integer expression expected, but got "$1"
 % The compiler expects an expression of type integer, but gets a different
 % The compiler expects an expression of type integer, but gets a different
 % type.
 % type.
+type_e_boolean_expr_expected=E_Boolean expression expected, but got "$1"
+% The expression must be a boolean type, it should be return true or
+% false.
 type_e_ordinal_expr_expected=E_Ordinal expression expected
 type_e_ordinal_expr_expected=E_Ordinal expression expected
 % The expression must be of ordinal type, i.e., maximum a \var{Longint}.
 % The expression must be of ordinal type, i.e., maximum a \var{Longint}.
 % This happens, for instance, when you specify a second argument
 % This happens, for instance, when you specify a second argument
 % to \var{Inc} or \var{Dec} that doesn't evaluate to an ordinal value.
 % to \var{Inc} or \var{Dec} that doesn't evaluate to an ordinal value.
-type_e_type_id_expected=E_Type identifier expected
-% The identifier is not a type, or you forgot to supply a type identifier.
-type_e_variable_id_expected=E_Variable identifier expected
-% This happens when you pass a constant to a \var{Inc} var or \var{Dec}
-% procedure. You can only pass variables as arguments to these functions.
-type_e_pointer_type_expected=E_pointer type expected
+type_e_pointer_type_expected=E_pointer type expected, but got "$1"
 % The variable or expression isn't of the type \var{pointer}. This
 % The variable or expression isn't of the type \var{pointer}. This
 % happens when you pass a variable that isn't a pointer to \var{New}
 % happens when you pass a variable that isn't a pointer to \var{New}
 % or \var{Dispose}.
 % or \var{Dispose}.
-type_e_class_type_expected=E_class type expected
+type_e_class_type_expected=E_class type expected, but got "$1"
 % The variable of expression isn't of the type \var{class}. This happens
 % The variable of expression isn't of the type \var{class}. This happens
 % typically when
 % typically when
 % \begin{enumerate}
 % \begin{enumerate}
@@ -886,6 +891,10 @@ type_e_argument_must_be_lvalue=E_Argument must be l-value
 % assignment can be passed as call by reference argument
 % assignment can be passed as call by reference argument
 % Remark: Properties can be only
 % Remark: Properties can be only
 % used on the left side of an assignment, but they can't be used as l-values
 % used on the left side of an assignment, but they can't be used as l-values
+type_e_cannot_local_proc_to_procvar=E_Can't assign local procedure/function to procedure variable
+% It's not allowed to assign a local procedure/function to a
+% procedure variable, because the calling of local procedure/function is
+% different. You can only assign local procedure/function to a void pointer.
 % \end{description}
 % \end{description}
 #
 #
 # Symtable
 # Symtable
@@ -1196,8 +1205,9 @@ asmr_e_no_var_type_specified=No type of variable specified
 asmr_w_assembler_code_not_returned_to_text=E_assembler code not returned to text section
 asmr_w_assembler_code_not_returned_to_text=E_assembler code not returned to text section
 asmr_e_not_directive_or_local_symbol=E_Not a directive or local symbol $1
 asmr_e_not_directive_or_local_symbol=E_Not a directive or local symbol $1
 asmr_w_using_defined_as_local=E_Using a defined name as a local label
 asmr_w_using_defined_as_local=E_Using a defined name as a local label
-
-
+asmr_e_dollar_without_identifier=E_Dollar token is used without an identifier
+asmr_w_32bit_const_for_address=W_32bit constant created for address
+asmr_n_align_is_target_specific=N_.align is target specific, use .balign or .p2align
 #
 #
 # Assembler/binary writers
 # Assembler/binary writers
 #
 #

+ 16 - 1
compiler/htypechk.pas

@@ -51,6 +51,7 @@ interface
     function  is_procsym_load(p:Ptree):boolean;
     function  is_procsym_load(p:Ptree):boolean;
     function  is_procsym_call(p:Ptree):boolean;
     function  is_procsym_call(p:Ptree):boolean;
     function  assignment_overloaded(from_def,to_def : pdef) : pprocdef;
     function  assignment_overloaded(from_def,to_def : pdef) : pprocdef;
+    function  test_local_to_procvar(from_def:pprocvardef;to_def:pdef):boolean;
 
 
 
 
 implementation
 implementation
@@ -668,10 +669,24 @@ implementation
             end;
             end;
        end;
        end;
 
 
+    { local routines can't be assigned to procvars }
+    function test_local_to_procvar(from_def:pprocvardef;to_def:pdef):boolean;
+      begin
+         if (from_def^.symtablelevel>1) and (to_def^.deftype=procvardef) then
+           CGMessage(type_e_cannot_local_proc_to_procvar);
+      end;
+
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.33  1999-08-04 13:02:43  jonas
+  Revision 1.34  1999-08-05 16:52:55  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.33  1999/08/04 13:02:43  jonas
     * all tokens now start with an underscore
     * all tokens now start with an underscore
     * PowerPC compiles!!
     * PowerPC compiles!!
 
 

+ 8 - 2
compiler/msgidx.inc

@@ -61,6 +61,7 @@ type tmsgconst=(
   scan_w_no_asm_reader_switch_inside_asm,
   scan_w_no_asm_reader_switch_inside_asm,
   scan_e_wrong_switch_toggle,
   scan_e_wrong_switch_toggle,
   scan_e_resourcefiles_not_supported,
   scan_e_resourcefiles_not_supported,
+  scan_w_include_env_not_found,
   parser_e_syntax_error,
   parser_e_syntax_error,
   parser_w_proc_far_ignored,
   parser_w_proc_far_ignored,
   parser_w_proc_near_ignored,
   parser_w_proc_near_ignored,
@@ -208,10 +209,11 @@ type tmsgconst=(
   type_e_mismatch,
   type_e_mismatch,
   type_e_incompatible_types,
   type_e_incompatible_types,
   type_e_not_equal_types,
   type_e_not_equal_types,
-  type_e_integer_expr_expected,
-  type_e_ordinal_expr_expected,
   type_e_type_id_expected,
   type_e_type_id_expected,
   type_e_variable_id_expected,
   type_e_variable_id_expected,
+  type_e_integer_expr_expected,
+  type_e_boolean_expr_expected,
+  type_e_ordinal_expr_expected,
   type_e_pointer_type_expected,
   type_e_pointer_type_expected,
   type_e_class_type_expected,
   type_e_class_type_expected,
   type_e_varid_or_typeid_expected,
   type_e_varid_or_typeid_expected,
@@ -232,6 +234,7 @@ type tmsgconst=(
   type_e_wrong_math_argument,
   type_e_wrong_math_argument,
   type_e_no_addr_of_constant,
   type_e_no_addr_of_constant,
   type_e_argument_must_be_lvalue,
   type_e_argument_must_be_lvalue,
+  type_e_cannot_local_proc_to_procvar,
   sym_e_id_not_found,
   sym_e_id_not_found,
   sym_f_internal_error_in_symtablestack,
   sym_f_internal_error_in_symtablestack,
   sym_e_duplicate_id,
   sym_e_duplicate_id,
@@ -373,6 +376,9 @@ type tmsgconst=(
   asmr_w_assembler_code_not_returned_to_text,
   asmr_w_assembler_code_not_returned_to_text,
   asmr_e_not_directive_or_local_symbol,
   asmr_e_not_directive_or_local_symbol,
   asmr_w_using_defined_as_local,
   asmr_w_using_defined_as_local,
+  asmr_e_dollar_without_identifier,
+  asmr_w_32bit_const_for_address,
+  asmr_n_align_is_target_specific,
   asmw_f_too_many_asm_files,
   asmw_f_too_many_asm_files,
   asmw_f_assembler_output_not_supported,
   asmw_f_assembler_output_not_supported,
   asmw_f_comp_not_supported,
   asmw_f_comp_not_supported,

+ 197 - 191
compiler/msgtxt.inc

@@ -1,7 +1,7 @@
 {$ifdef Delphi}
 {$ifdef Delphi}
-const msgtxt : array[0..000098] of string[240]=(
+const msgtxt : array[0..000100] of string[240]=(
 {$else Delphi}
 {$else Delphi}
-const msgtxt : array[0..000098,1..240] of char=(
+const msgtxt : array[0..000100,1..240] of char=(
 {$endif Delphi}
 {$endif Delphi}
   'T_Compiler: $1'#000+
   'T_Compiler: $1'#000+
   'D_Compiler OS: $1'#000+
   'D_Compiler OS: $1'#000+
@@ -66,376 +66,382 @@ const msgtxt : array[0..000098,1..240] of char=(
   'ffective only for next'#000+
   'ffective only for next'#000+
   'E_Wrong switch toggle, use ON/OFF or +/','-'#000+
   'E_Wrong switch toggle, use ON/OFF or +/','-'#000+
   'E_Resource files are not supported for this target'#000+
   'E_Resource files are not supported for this target'#000+
+  'W_Include environment $1 not found in environment'#000+
   'E_Parser - Syntax Error'#000+
   'E_Parser - Syntax Error'#000+
   'W_Procedure type FAR ignored'#000+
   'W_Procedure type FAR ignored'#000+
   'W_Procedure type NEAR ignored'#000+
   'W_Procedure type NEAR ignored'#000+
   'W_Procedure type REGISTER ignored'#000+
   'W_Procedure type REGISTER ignored'#000+
-  'E_No DLL File specified'#000+
+  'E_No DLL File specif','ied'#000+
   'E_Duplicate exported function name $1'#000+
   'E_Duplicate exported function name $1'#000+
-  'E_Duplic','ate exported function index $1'#000+
+  'E_Duplicate exported function index $1'#000+
   'E_Invalid index for exported function'#000+
   'E_Invalid index for exported function'#000+
   'E_Constructor name must be INIT'#000+
   'E_Constructor name must be INIT'#000+
   'E_Destructor name must be DONE'#000+
   'E_Destructor name must be DONE'#000+
   'E_Illegal open parameter'#000+
   'E_Illegal open parameter'#000+
-  'E_Procedure type INLINE not supported'#000+
+  'E_Procedure type INLINE not suppo','rted'#000+
   'W_Private methods shouldn'#039't be VIRTUAL'#000+
   'W_Private methods shouldn'#039't be VIRTUAL'#000+
-  'W_Cons','tructor should be public'#000+
+  'W_Constructor should be public'#000+
   'W_Destructor should be public'#000+
   'W_Destructor should be public'#000+
   'N_Class should have one destructor only'#000+
   'N_Class should have one destructor only'#000+
   'E_Local class definitions are not allowed'#000+
   'E_Local class definitions are not allowed'#000+
   'F_Anonym class definitions are not allowed'#000+
   'F_Anonym class definitions are not allowed'#000+
-  'E_The object $1 has no VMT'#000+
+  'E_The obje','ct $1 has no VMT'#000+
   'E_Illegal parameter list'#000+
   'E_Illegal parameter list'#000+
-  'E_Wrong ','parameter type specified for arg no. $1'#000+
+  'E_Wrong parameter type specified for arg no. $1'#000+
   'E_Wrong amount of parameters specified'#000+
   'E_Wrong amount of parameters specified'#000+
   'E_overloaded identifier $1 isn'#039't a function'#000+
   'E_overloaded identifier $1 isn'#039't a function'#000+
   'E_overloaded functions have the same parameter list'#000+
   'E_overloaded functions have the same parameter list'#000+
-  'E_function header doesn'#039't match the forward declaration $1'#000+
-  'E_func','tion header $1 doesn'#039't match forward : var name changes $2'+
-  ' => $3'#000+
+  'E_function head','er doesn'#039't match the forward declaration $1'#000+
+  'E_function header $1 doesn'#039't match forward : var name changes $2 ='+
+  '> $3'#000+
   'N_Values in enumeration types have to be ascending'#000+
   'N_Values in enumeration types have to be ascending'#000+
   'N_Interface and implementation names are different $1 => $2'#000+
   'N_Interface and implementation names are different $1 => $2'#000+
-  'E_With can not be used for variables in a different segment'#000+
-  'E_fu','nction nesting > 31'#000+
+  'E_With can not',' be used for variables in a different segment'#000+
+  'E_function nesting > 31'#000+
   'E_range check error while evaluating constants'#000+
   'E_range check error while evaluating constants'#000+
   'W_range check error while evaluating constants'#000+
   'W_range check error while evaluating constants'#000+
   'E_duplicate case label'#000+
   'E_duplicate case label'#000+
-  'E_Upper bound of case range is less than lower bound'#000+
+  'E_Upper bound of case range is less than lower bound'#000,
   'E_typed constants of classes are not allowed'#000+
   'E_typed constants of classes are not allowed'#000+
-  'E_fun','ctions variables of overloaded functions are not allowed'#000+
+  'E_functions variables of overloaded functions are not allowed'#000+
   'E_string length must be a value from 1 to 255'#000+
   'E_string length must be a value from 1 to 255'#000+
   'W_use extended syntax of NEW and DISPOSE for instances of objects'#000+
   'W_use extended syntax of NEW and DISPOSE for instances of objects'#000+
-  'W_use of NEW or DISPOSE for untyped pointers is meaningless'#000+
-  'E_use of NE','W or DISPOSE is not possible for untyped pointers'#000+
+  'W_use of NEW or DISPO','SE for untyped pointers is meaningless'#000+
+  'E_use of NEW or DISPOSE is not possible for untyped pointers'#000+
   'E_class identifier expected'#000+
   'E_class identifier expected'#000+
   'E_type identifier not allowed here'#000+
   'E_type identifier not allowed here'#000+
   'E_method identifier expected'#000+
   'E_method identifier expected'#000+
-  'E_function header doesn'#039't match any method of this class'#000+
+  'E_function header doesn'#039't match any method of th','is class'#000+
   'P_procedure/function $1'#000+
   'P_procedure/function $1'#000+
-  'E_Illegal floatin','g point constant'#000+
+  'E_Illegal floating point constant'#000+
   'E_FAIL can be used in constructors only'#000+
   'E_FAIL can be used in constructors only'#000+
   'E_Destructors can'#039't have parameters'#000+
   'E_Destructors can'#039't have parameters'#000+
   'E_Only class methods can be referred with class references'#000+
   'E_Only class methods can be referred with class references'#000+
-  'E_Only class methods can be accessed in class methods'#000+
-  'E_Constant and CASE types do not m','atch'#000+
+  'E_Only class methods can be accessed i','n class methods'#000+
+  'E_Constant and CASE types do not match'#000+
   'E_The symbol can'#039't be exported from a library'#000+
   'E_The symbol can'#039't be exported from a library'#000+
   'W_An inherited method is hidden by $1'#000+
   'W_An inherited method is hidden by $1'#000+
   'E_There is no method in an ancestor class to be overridden: $1'#000+
   'E_There is no method in an ancestor class to be overridden: $1'#000+
-  'E_No member is provided to access property'#000+
-  'W_Stored prorperty directive is not yet imple','mented'#000+
+  'E_No member is provided to access prop','erty'#000+
+  'W_Stored prorperty directive is not yet implemented'#000+
   'E_Illegal symbol for property access'#000+
   'E_Illegal symbol for property access'#000+
   'E_Cannot access a protected field of an object here'#000+
   'E_Cannot access a protected field of an object here'#000+
   'E_Cannot access a private field of an object here'#000+
   'E_Cannot access a private field of an object here'#000+
-  'W_overloaded method of virtual method should be virtual: $1'#000+
-  'W_overloaded method of non-virtual',' method should be non-virtual: $1'#000+
+  'W_overloaded method of virtual method should',' be virtual: $1'#000+
+  'W_overloaded method of non-virtual method should be non-virtual: $1'#000+
   'E_overloaded methods which are virtual must have the same return type:'+
   'E_overloaded methods which are virtual must have the same return type:'+
   ' $1'#000+
   ' $1'#000+
   'E_EXPORT declared functions can'#039't be nested'#000+
   'E_EXPORT declared functions can'#039't be nested'#000+
   'E_methods can'#039't be EXPORTed'#000+
   'E_methods can'#039't be EXPORTed'#000+
-  'E_call by var parameters have to match exactly'#000+
-  'E_Class isn'#039't',' a parent class of the current class'#000+
+  'E_call by ','var parameters have to match exactly'#000+
+  'E_Class isn'#039't a parent class of the current class'#000+
   'E_SELF is only allowed in methods'#000+
   'E_SELF is only allowed in methods'#000+
   'E_methods can be only in other methods called direct with type identif'+
   'E_methods can be only in other methods called direct with type identif'+
   'ier of the class'#000+
   'ier of the class'#000+
   'E_Illegal use of '#039':'#039#000+
   'E_Illegal use of '#039':'#039#000+
-  'E_range check error in set constructor or duplicate set eleme','nt'#000+
+  'E_range che','ck error in set constructor or duplicate set element'#000+
   'E_Pointer to object expected'#000+
   'E_Pointer to object expected'#000+
   'E_Expression must be constructor call'#000+
   'E_Expression must be constructor call'#000+
   'E_Expression must be destructor call'#000+
   'E_Expression must be destructor call'#000+
   'E_Illegal order of record elements'#000+
   'E_Illegal order of record elements'#000+
   'E_Expression type must be class or record type'#000+
   'E_Expression type must be class or record type'#000+
-  'E_Procedures can'#039't return a value'#000+
-  'E_constructors an','d destructors must be methods'#000+
+  'E','_Procedures can'#039't return a value'#000+
+  'E_constructors and destructors must be methods'#000+
   'E_Operator is not overloaded'#000+
   'E_Operator is not overloaded'#000+
   'E_Re-raise isn'#039't possible there'#000+
   'E_Re-raise isn'#039't possible there'#000+
   'E_The extended syntax of new or dispose isn'#039't allowed for a class'#000+
   'E_The extended syntax of new or dispose isn'#039't allowed for a class'#000+
-  'E_Assembler incompatible with function return type'#000+
-  'E_Procedure overloading is switc','hed off'#000+
+  'E_Assembler incompatible with fun','ction return type'#000+
+  'E_Procedure overloading is switched off'#000+
   'E_It is not possible to overload this operator (overload = instead)'#000+
   'E_It is not possible to overload this operator (overload = instead)'#000+
   'E_Comparative operator must return a boolean value'#000+
   'E_Comparative operator must return a boolean value'#000+
   'E_Only virtual methods can be abstract'#000+
   'E_Only virtual methods can be abstract'#000+
-  'F_Use of unsupported feature!'#000+
-  'E_The mix of CLASSES and OBJECTS isn'#039't allow','ed'#000+
+  'F_Use of unsupported fea','ture!'#000+
+  'E_The mix of CLASSES and OBJECTS isn'#039't allowed'#000+
   'W_Unknown procedure directive had to be ignored: $1'#000+
   'W_Unknown procedure directive had to be ignored: $1'#000+
   'E_absolute can only be associated to ONE variable'#000+
   'E_absolute can only be associated to ONE variable'#000+
   'E_absolute can only be associated a var or const'#000+
   'E_absolute can only be associated a var or const'#000+
-  'E_Only ONE variable can be initialized'#000+
-  'E_Abstract methods shouldn'#039't have any definitio','n (with function '+
-  'body)'#000+
+  'E_Only ONE variable can be initializ','ed'#000+
+  'E_Abstract methods shouldn'#039't have any definition (with function bo'+
+  'dy)'#000+
   'E_This overloaded function can'#039't be local (must be exported)'#000+
   'E_This overloaded function can'#039't be local (must be exported)'#000+
   'W_Virtual methods are used without a constructor in $1'#000+
   'W_Virtual methods are used without a constructor in $1'#000+
   'M_Macro defined: $1'#000+
   'M_Macro defined: $1'#000+
   'M_Macro undefined: $1'#000+
   'M_Macro undefined: $1'#000+
-  'M_Macro $1 set to $2'#000+
+  'M_Macro $','1 set to $2'#000+
   'I_Compiling $1'#000+
   'I_Compiling $1'#000+
-  'D_Compiling $1 for the ','second time'#000+
+  'D_Compiling $1 for the second time'#000+
   'E_Array properties aren'#039't allowed at this point'#000+
   'E_Array properties aren'#039't allowed at this point'#000+
   'E_No property found to override'#000+
   'E_No property found to override'#000+
   'E_Only one default property is allowed, found inherited default proper'+
   'E_Only one default property is allowed, found inherited default proper'+
   'ty in class $1'#000+
   'ty in class $1'#000+
-  'E_The default property must be an array property'#000+
-  'E_Virtual cons','tructors are only supported in class object model'#000+
+  'E_The default',' property must be an array property'#000+
+  'E_Virtual constructors are only supported in class object model'#000+
   'E_No default property available'#000+
   'E_No default property available'#000+
   'E_The class can'#039't have a published section, use the {$M+} switch'#000+
   'E_The class can'#039't have a published section, use the {$M+} switch'#000+
-  'E_Forward declaration of class $1 must be resolved here to use the cla'+
-  'ss as ancestor'#000+
-  'E_Local ','operators not supported'#000+
+  'E_Forward declaration of class $1 must be r','esolved here to use the c'+
+  'lass as ancestor'#000+
+  'E_Local operators not supported'#000+
   'E_Procedure directive $1 not allowed in interface section'#000+
   'E_Procedure directive $1 not allowed in interface section'#000+
   'E_Procedure directive $1 not allowed in implementation section'#000+
   'E_Procedure directive $1 not allowed in implementation section'#000+
-  'E_Procedure directive $1 not allowed in procvar declaration'#000+
-  'E_Function is already declared Publ','ic/Forward $1'#000+
+  'E_Procedure directive $1 not allowed in procv','ar declaration'#000+
+  'E_Function is already declared Public/Forward $1'#000+
   'E_Can'#039't use both EXPORT and EXTERNAL'#000+
   'E_Can'#039't use both EXPORT and EXTERNAL'#000+
   'E_NAME keyword expected'#000+
   'E_NAME keyword expected'#000+
   'W_$1 not yet supported inside inline procedure/function'#000+
   'W_$1 not yet supported inside inline procedure/function'#000+
   'W_Inlining disabled'#000+
   'W_Inlining disabled'#000+
   'I_Writing Browser log $1'#000+
   'I_Writing Browser log $1'#000+
-  'H_may be pointer dereference is missing'#000+
-  'F_Selected assembler rea','der not supported'#000+
+  'H_may be point','er dereference is missing'#000+
+  'F_Selected assembler reader not supported'#000+
   'E_Procedure directive $1 has conflicts with other directives'#000+
   'E_Procedure directive $1 has conflicts with other directives'#000+
   'E_Calling convention doesn'#039't match forward'#000+
   'E_Calling convention doesn'#039't match forward'#000+
   'E_Register calling (fastcall) not supported'#000+
   'E_Register calling (fastcall) not supported'#000+
-  'E_Property can'#039't have a default value'#000+
-  'E_The default value of a property mu','st be constant'#000+
+  'E_Property can'#039't have a ','default value'#000+
+  'E_The default value of a property must be constant'#000+
   'E_Symbol can'#039't be published, can be only a class'#000+
   'E_Symbol can'#039't be published, can be only a class'#000+
   'E_That kind of property can'#039't be published'#000+
   'E_That kind of property can'#039't be published'#000+
   'W_Empty import name specified'#000+
   'W_Empty import name specified'#000+
   'W_Empty import name specified'#000+
   'W_Empty import name specified'#000+
-  'E_Function internal name changed after use of function'#000+
-  'E_Division by zero',#000+
+  'E_Function internal nam','e changed after use of function'#000+
+  'E_Division by zero'#000+
   'E_Invalid floating point operation'#000+
   'E_Invalid floating point operation'#000+
   'E_Upper bound of range is less than lower bound'#000+
   'E_Upper bound of range is less than lower bound'#000+
   'E_string length is larger than array of char length'#000+
   'E_string length is larger than array of char length'#000+
   'E_Illegal expression after message directive'#000+
   'E_Illegal expression after message directive'#000+
-  'E_Message handlers can take only one call by ref. parameter',#000+
+  'E_Message',' handlers can take only one call by ref. parameter'#000+
   'E_Duplicate message label: $1'#000+
   'E_Duplicate message label: $1'#000+
   'E_Self can be only an explicit parameter in message handlers'#000+
   'E_Self can be only an explicit parameter in message handlers'#000+
   'E_Threadvars can be only static or global'#000+
   'E_Threadvars can be only static or global'#000+
-  'F_Direct assembler not supported for binary output format'#000+
-  'W_Don'#039't load OBJPAS unit manual, use {$mode objf','pc} or {$mode de'+
-  'lphi} instead'#000+
+  'F_Direct assembler not supported for binary output forma','t'#000+
+  'W_Don'#039't load OBJPAS unit manual, use {$mode objfpc} or {$mode delp'+
+  'hi} instead'#000+
   'E_OVERRIDE can'#039't be used in objects'#000+
   'E_OVERRIDE can'#039't be used in objects'#000+
   'E_Data types which requires initialization/finalization can'#039't be u'+
   'E_Data types which requires initialization/finalization can'#039't be u'+
   'sed in variant records'#000+
   'sed in variant records'#000+
-  'E_Resourcestrings can be only static or global'#000+
-  'E_Exit with argument can'#039't be used her','e'#000+
+  'E_Resourcestrings can be only stati','c or global'#000+
+  'E_Exit with argument can'#039't be used here'#000+
   'E_Type mismatch'#000+
   'E_Type mismatch'#000+
   'E_Incompatible types: got "$1" expected "$2"'#000+
   'E_Incompatible types: got "$1" expected "$2"'#000+
   'E_Type mismatch between $1 and $2'#000+
   'E_Type mismatch between $1 and $2'#000+
-  'E_Integer expression expected'#000+
-  'E_Ordinal expression expected'#000+
   'E_Type identifier expected'#000+
   'E_Type identifier expected'#000+
   'E_Variable identifier expected'#000+
   'E_Variable identifier expected'#000+
-  'E_pointer type expected'#000+
-  'E','_class type expected'#000+
+  'E_Integer expression expected, but ','got "$1"'#000+
+  'E_Boolean expression expected, but got "$1"'#000+
+  'E_Ordinal expression expected'#000+
+  'E_pointer type expected, but got "$1"'#000+
+  'E_class type expected, but got "$1"'#000+
   'E_Variable or type indentifier expected'#000+
   'E_Variable or type indentifier expected'#000+
   'E_Can'#039't evaluate constant expression'#000+
   'E_Can'#039't evaluate constant expression'#000+
-  'E_Set elements are not compatible'#000+
+  'E_Set ','elements are not compatible'#000+
   'E_Operation not implemented for sets'#000+
   'E_Operation not implemented for sets'#000+
   'W_Automatic type conversion from floating type to COMP which is an int'+
   'W_Automatic type conversion from floating type to COMP which is an int'+
-  'e','ger type'#000+
+  'eger type'#000+
   'H_use DIV instead to get an integer result'#000+
   'H_use DIV instead to get an integer result'#000+
   'E_string types doesn'#039't match, because of $V+ mode'#000+
   'E_string types doesn'#039't match, because of $V+ mode'#000+
-  'E_succ or pred on enums with assignments not possible'#000+
+  'E_','succ or pred on enums with assignments not possible'#000+
   'E_Can'#039't read or write variables of this type'#000+
   'E_Can'#039't read or write variables of this type'#000+
   'E_Type conflict between set elements'#000+
   'E_Type conflict between set elements'#000+
-  'W_','lo/hi(dword/qword) returns the upper/lower word/dword'#000+
+  'W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+
   'E_Integer or real expression expected'#000+
   'E_Integer or real expression expected'#000+
-  'E_Wrong type in array constructor'#000+
+  'E_Wrong type',' in array constructor'#000+
   'E_Incompatible type for arg no. $1: Got $2, expected $3'#000+
   'E_Incompatible type for arg no. $1: Got $2, expected $3'#000+
-  'E_Method (variable) and Procedure (variable) are not compa','tible'#000+
+  'E_Method (variable) and Procedure (variable) are not compatible'#000+
   'E_Illegal constant passed to internal math function'#000+
   'E_Illegal constant passed to internal math function'#000+
   'E_Can'#039't get the address of constants'#000+
   'E_Can'#039't get the address of constants'#000+
-  'E_Argument must be l-value'#000+
+  'E_Argumen','t must be l-value'#000+
+  'E_Can'#039't assign local procedure/function to procedure variable'#000+
   'E_Identifier not found $1'#000+
   'E_Identifier not found $1'#000+
   'F_Internal Error in SymTableStack()'#000+
   'F_Internal Error in SymTableStack()'#000+
   'E_Duplicate identifier $1'#000+
   'E_Duplicate identifier $1'#000+
-  'H_Identifier already defined i','n $1 at line $2'#000+
+  'H_Identifier already defined in $1 at line $2'#000+
   'E_Unknown identifier $1'#000+
   'E_Unknown identifier $1'#000+
-  'E_Forward declaration not solved $1'#000+
+  'E_','Forward declaration not solved $1'#000+
   'F_Identifier type already defined as type'#000+
   'F_Identifier type already defined as type'#000+
   'E_Error in type definition'#000+
   'E_Error in type definition'#000+
   'E_Type identifier not defined'#000+
   'E_Type identifier not defined'#000+
   'E_Forward type not resolved $1'#000+
   'E_Forward type not resolved $1'#000+
-  'E_Only static variables can be use','d in static methods or outside met'+
-  'hods'#000+
-  'E_Invalid call to tvarsym.mangledname()'#000+
+  'E_Only static variables can be used in static methods or outside metho'+
+  'ds'#000+
+  'E_I','nvalid call to tvarsym.mangledname()'#000+
   'F_record or class type expected'#000+
   'F_record or class type expected'#000+
   'E_Instances of classes or objects with an abstract method are not allo'+
   'E_Instances of classes or objects with an abstract method are not allo'+
   'wed'#000+
   'wed'#000+
   'W_Label not defined $1'#000+
   'W_Label not defined $1'#000+
   'E_Illegal label declaration'#000+
   'E_Illegal label declaration'#000+
-  'E_GO','TO and LABEL are not supported (use switch -Sg)'#000+
+  'E_GOTO and LABEL are not supported (use switch',' -Sg)'#000+
   'E_Label not found'#000+
   'E_Label not found'#000+
   'E_identifier isn'#039't a label'#000+
   'E_identifier isn'#039't a label'#000+
   'E_label already defined'#000+
   'E_label already defined'#000+
   'E_illegal type declaration of set elements'#000+
   'E_illegal type declaration of set elements'#000+
   'E_Forward class definition not resolved $1'#000+
   'E_Forward class definition not resolved $1'#000+
   'H_Parameter not used $1'#000+
   'H_Parameter not used $1'#000+
-  'N_Local varia','ble not used $1'#000+
+  'N_Local variable not used $1'#000+
   'E_Set type expected'#000+
   'E_Set type expected'#000+
-  'W_Function result does not seem to be set'#000+
+  'W_Func','tion result does not seem to be set'#000+
   'E_Unknown record field identifier $1'#000+
   'E_Unknown record field identifier $1'#000+
   'W_Local variable $1 does not seem to be initialized'#000+
   'W_Local variable $1 does not seem to be initialized'#000+
   'W_Variable $1 does not seem to be initialized'#000+
   'W_Variable $1 does not seem to be initialized'#000+
-  'E_identifier idents no memb','er $1'#000+
+  'E_identifier idents no member $1'#000+
   'B_Found declaration: $1'#000+
   'B_Found declaration: $1'#000+
-  'E_BREAK not allowed'#000+
+  'E_BREAK not ','allowed'#000+
   'E_CONTINUE not allowed'#000+
   'E_CONTINUE not allowed'#000+
   'E_Expression too complicated - FPU stack overflow'#000+
   'E_Expression too complicated - FPU stack overflow'#000+
   'E_Illegal expression'#000+
   'E_Illegal expression'#000+
   'E_Invalid integer expression'#000+
   'E_Invalid integer expression'#000+
   'E_Illegal qualifier'#000+
   'E_Illegal qualifier'#000+
   'E_High range limit < low range limit'#000+
   'E_High range limit < low range limit'#000+
-  'E_Illegal ','counter variable'#000+
-  'E_Can'#039't determine which overloaded function to call'#000+
+  'E_Illegal counter variable'#000+
+  'E_Can'#039't determine which o','verloaded function to call'#000+
   'E_Parameter list size exceeds 65535 bytes'#000+
   'E_Parameter list size exceeds 65535 bytes'#000+
   'E_Illegal type conversion'#000+
   'E_Illegal type conversion'#000+
   'D_Conversion between ordinals and pointers is not portable across plat'+
   'D_Conversion between ordinals and pointers is not portable across plat'+
   'forms'#000+
   'forms'#000+
-  'E_File types must be var pa','rameters'#000+
-  'E_The use of a far pointer isn'#039't allowed there'#000+
+  'E_File types must be var parameters'#000+
+  'E_The use of a far pointer isn'#039't ','allowed there'#000+
   'E_illegal call by reference parameters'#000+
   'E_illegal call by reference parameters'#000+
   'E_EXPORT declared functions can'#039't be called'#000+
   'E_EXPORT declared functions can'#039't be called'#000+
   'W_Possible illegal call of constructor or destructor (doesn'#039't matc'+
   'W_Possible illegal call of constructor or destructor (doesn'#039't matc'+
   'h to this context)'#000+
   'h to this context)'#000+
-  'N_Inefficient co','de'#000+
+  'N_Inefficient code'#000+
   'W_unreachable code'#000+
   'W_unreachable code'#000+
-  'E_procedure call with stackframe ESP/SP'#000+
+  'E_procedure call wit','h stackframe ESP/SP'#000+
   'E_Abstract methods can'#039't be called directly'#000+
   'E_Abstract methods can'#039't be called directly'#000+
   'F_Internal Error in getfloatreg(), allocation failure'#000+
   'F_Internal Error in getfloatreg(), allocation failure'#000+
   'F_Unknown float type'#000+
   'F_Unknown float type'#000+
   'F_SecondVecn() base defined twice'#000+
   'F_SecondVecn() base defined twice'#000+
-  'F_Extended cg68k not supp','orted'#000+
-  'F_32-bit unsigned not supported in MC68000 mode'#000+
+  'F_Extended cg68k not supported'#000+
+  'F_32-bit unsigned not supported in M','C68000 mode'#000+
   'F_Internal Error in secondinline()'#000+
   'F_Internal Error in secondinline()'#000+
   'D_Register $1 weight $2 $3'#000+
   'D_Register $1 weight $2 $3'#000+
   'E_Stack limit excedeed in local routine'#000+
   'E_Stack limit excedeed in local routine'#000+
   'D_Stack frame is omitted'#000+
   'D_Stack frame is omitted'#000+
   'E_Object or class methods can'#039't be inline.'#000+
   'E_Object or class methods can'#039't be inline.'#000+
-  'E_Procvar calls ','can'#039't be inline.'#000+
-  'E_No code for inline procedure stored'#000+
+  'E_Procvar calls can'#039't be inline.'#000+
+  'E_No code for inline proc','edure stored'#000+
   'E_Element zero of an ansi/wide- or longstring can'#039't be accessed, u'+
   'E_Element zero of an ansi/wide- or longstring can'#039't be accessed, u'+
   'se (set)length instead'#000+
   'se (set)length instead'#000+
   'E_Include and exclude not implemented in this case'#000+
   'E_Include and exclude not implemented in this case'#000+
-  'E_Constructors or destructors can not be call','ed inside a '#039'with'#039+
+  'E_Constructors or destructors can not be called inside a '#039'with'#039+
   ' clause'#000+
   ' clause'#000+
-  'E_Cannot call message handler method directly'#000+
+  'E_Cannot call me','ssage handler method directly'#000+
   'D_Starting $1 styled assembler parsing'#000+
   'D_Starting $1 styled assembler parsing'#000+
   'D_Finished $1 styled assembler parsing'#000+
   'D_Finished $1 styled assembler parsing'#000+
   'E_Non-label pattern contains @'#000+
   'E_Non-label pattern contains @'#000+
   'W_Override operator not supported'#000+
   'W_Override operator not supported'#000+
-  'E_Error building record o','ffset'#000+
+  'E_Error building record offset'#000+
   'E_OFFSET used without identifier'#000+
   'E_OFFSET used without identifier'#000+
-  'E_Cannot use local variable or parameters here'#000+
+  'E_C','annot use local variable or parameters here'#000+
   'E_need to use OFFSET here'#000+
   'E_need to use OFFSET here'#000+
   'E_Cannot use multiple relocatable symbols'#000+
   'E_Cannot use multiple relocatable symbols'#000+
   'E_Relocatable symbol can only be added'#000+
   'E_Relocatable symbol can only be added'#000+
   'E_Invalid constant expression'#000+
   'E_Invalid constant expression'#000+
-  'E_Relocatable sym','bol is not allowed'#000+
-  'E_Invalid reference syntax'#000+
+  'E_Relocatable symbol is not allowed'#000+
+  'E_Invalid reference syn','tax'#000+
   'E_Local symbols not allowed as references'#000+
   'E_Local symbols not allowed as references'#000+
   'E_Invalid base and index register usage'#000+
   'E_Invalid base and index register usage'#000+
   'E_Wrong scale factor specified'#000+
   'E_Wrong scale factor specified'#000+
   'E_Multiple index register usage'#000+
   'E_Multiple index register usage'#000+
   'E_Invalid operand type'#000+
   'E_Invalid operand type'#000+
-  'E_Invalid string as opcode',' operand: $1'#000+
-  'W_@CODE and @DATA not supported'#000+
+  'E_Invalid string as opcode operand: $1'#000+
+  'W_@CODE and @DATA not support','ed'#000+
   'E_Null label references are not allowed'#000+
   'E_Null label references are not allowed'#000+
   'F_Divide by zero in asm evaluator'#000+
   'F_Divide by zero in asm evaluator'#000+
   'F_Evaluator stack overflow'#000+
   'F_Evaluator stack overflow'#000+
   'F_Evaluator stack underflow'#000+
   'F_Evaluator stack underflow'#000+
   'F_Invalid numeric format in asm evaluator'#000+
   'F_Invalid numeric format in asm evaluator'#000+
-  'F_Invalid Operator in as','m evaluator'#000+
-  'E_escape sequence ignored: $1'#000+
+  'F_Invalid Operator in asm evaluator'#000+
+  'E_escape sequence ignored: $1'#000,
   'E_Invalid symbol reference'#000+
   'E_Invalid symbol reference'#000+
   'W_Fwait can cause emulation problems with emu387'#000+
   'W_Fwait can cause emulation problems with emu387'#000+
   'W_Calling an overload function in assembler'#000+
   'W_Calling an overload function in assembler'#000+
   'E_Unsupported symbol type for operand'#000+
   'E_Unsupported symbol type for operand'#000+
   'E_Constant value out of bounds'#000+
   'E_Constant value out of bounds'#000+
-  'E_Error c','onverting decimal $1'#000+
-  'E_Error converting octal $1'#000+
+  'E_Error converting decimal $1'#000+
+  'E_Error converting oc','tal $1'#000+
   'E_Error converting binary $1'#000+
   'E_Error converting binary $1'#000+
   'E_Error converting hexadecimal $1'#000+
   'E_Error converting hexadecimal $1'#000+
   'H_$1 translated to $2'#000+
   'H_$1 translated to $2'#000+
   'W_$1 is associated to an overloaded function'#000+
   'W_$1 is associated to an overloaded function'#000+
   'E_Cannot use SELF outside a method'#000+
   'E_Cannot use SELF outside a method'#000+
-  'E_Cannot use OLDEBP outsid','e a nested procedure'#000+
-  'W_Functions with void return value can'#039't return any value in asm c'+
-  'ode'#000+
+  'E_Cannot use OLDEBP outside a nested procedure'#000+
+  'W_Functions with void',' return value can'#039't return any value in asm'+
+  ' code'#000+
   'E_SEG not supported'#000+
   'E_SEG not supported'#000+
   'E_Size suffix and destination or source size do not match'#000+
   'E_Size suffix and destination or source size do not match'#000+
   'W_Size suffix and destination or source size do not match'#000+
   'W_Size suffix and destination or source size do not match'#000+
-  'E_Assembler s','yntax error'#000+
-  'E_Invalid combination of opcode and operands'#000+
+  'E_Assembler syntax error'#000+
+  'E_Invalid combination of opcod','e and operands'#000+
   'E_Assemler syntax error in operand'#000+
   'E_Assemler syntax error in operand'#000+
   'E_Assemler syntax error in constant'#000+
   'E_Assemler syntax error in constant'#000+
   'E_Invalid String expression'#000+
   'E_Invalid String expression'#000+
   '32bit constant created for address'#000+
   '32bit constant created for address'#000+
   'E_Invalid or missing opcode'#000+
   'E_Invalid or missing opcode'#000+
-  'E_Invalid combination',' of prefix and opcode: $1'#000+
-  'E_Invalid combination of override and opcode: $1'#000+
+  'E_Invalid combination of prefix and opcode: $1'#000+
+  'E_Invalid combin','ation of override and opcode: $1'#000+
   'E_Too many operands on line'#000+
   'E_Too many operands on line'#000+
   'W_NEAR ignored'#000+
   'W_NEAR ignored'#000+
   'W_FAR ignored'#000+
   'W_FAR ignored'#000+
   'E_Duplicate local symbol $1'#000+
   'E_Duplicate local symbol $1'#000+
   'E_Undefined local symbol $1'#000+
   'E_Undefined local symbol $1'#000+
   'E_Unknown label identifier $1'#000+
   'E_Unknown label identifier $1'#000+
-  'E_Invalid floating poi','nt register name'#000+
+  'E_Invalid floating point register name'#000+
   'E_NOR not supported'#000+
   'E_NOR not supported'#000+
-  'W_Modulo not supported'#000+
+  'W_Mod','ulo not supported'#000+
   'E_Invalid floating point constant $1'#000+
   'E_Invalid floating point constant $1'#000+
   'E_Invalid floating point expression'#000+
   'E_Invalid floating point expression'#000+
   'E_Wrong symbol type'#000+
   'E_Wrong symbol type'#000+
   'E_Cannot index a local var or parameter with a register'#000+
   'E_Cannot index a local var or parameter with a register'#000+
-  'E_Invalid segment override expr','ession'#000+
+  'E_Invalid segment override expression'#000+
   'W_Identifier $1 supposed external'#000+
   'W_Identifier $1 supposed external'#000+
-  'E_Strings not allowed as constants'#000+
+  'E','_Strings not allowed as constants'#000+
   'No type of variable specified'#000+
   'No type of variable specified'#000+
   'E_assembler code not returned to text section'#000+
   'E_assembler code not returned to text section'#000+
   'E_Not a directive or local symbol $1'#000+
   'E_Not a directive or local symbol $1'#000+
   'E_Using a defined name as a local label'#000+
   'E_Using a defined name as a local label'#000+
-  'F_Too many ','assembler files'#000+
+  'E_Dollar token is used without an identifier'#000+
+  'W_32bit ','constant created for address'#000+
+  'N_.align is target specific, use .balign or .p2align'#000+
+  'F_Too many assembler files'#000+
   'F_Selected assembler output not supported'#000+
   'F_Selected assembler output not supported'#000+
   'F_Comp not supported'#000+
   'F_Comp not supported'#000+
   'F_Direct not support for binary writers'#000+
   'F_Direct not support for binary writers'#000+
-  'E_Allocating of data is only allowed in bss section'#000+
+  'E_Allocating of data is only',' allowed in bss section'#000+
   'F_No binary writer selected'#000+
   'F_No binary writer selected'#000+
   'E_Asm: Opcode $1 not in table'#000+
   'E_Asm: Opcode $1 not in table'#000+
-  'E_Asm: $1 i','nvalid combination of opcode and operands'#000+
+  'E_Asm: $1 invalid combination of opcode and operands'#000+
   'E_Asm: 16 Bit references not supported'#000+
   'E_Asm: 16 Bit references not supported'#000+
   'E_Asm: Invalid effective address'#000+
   'E_Asm: Invalid effective address'#000+
-  'E_Asm: Immediate or reference expected'#000+
+  'E_Asm: Immediate or reference exp','ected'#000+
   'E_Asm: $1 value exceeds bounds $2'#000+
   'E_Asm: $1 value exceeds bounds $2'#000+
   'E_Asm: Short jump is out of range $1'#000+
   'E_Asm: Short jump is out of range $1'#000+
-  'W_Source operati','ng system redefined'#000+
+  'W_Source operating system redefined'#000+
   'I_Assembling (pipe) $1'#000+
   'I_Assembling (pipe) $1'#000+
   'E_Can'#039't create assember file $1'#000+
   'E_Can'#039't create assember file $1'#000+
   'W_Assembler $1 not found, switching to external assembling'#000+
   'W_Assembler $1 not found, switching to external assembling'#000+
-  'T_Using assembler: $1'#000+
+  'T_Using assem','bler: $1'#000+
   'W_Error while assembling exitcode $1'#000+
   'W_Error while assembling exitcode $1'#000+
-  'W_Can'#039't call the assembler, error $1 switching ','to external assem'+
-  'bling'#000+
+  'W_Can'#039't call the assembler, error $1 switching to external assembl'+
+  'ing'#000+
   'I_Assembling $1'#000+
   'I_Assembling $1'#000+
   'I_Assembling smartlink $1'#000+
   'I_Assembling smartlink $1'#000+
   'W_Linker $1 not found, switching to external linking'#000+
   'W_Linker $1 not found, switching to external linking'#000+
   'T_Using linker: $1'#000+
   'T_Using linker: $1'#000+
-  'W_Object $1 not found, Linking may fail !'#000+
+  'W_Object $','1 not found, Linking may fail !'#000+
   'W_Library $1 not found, Linking may fail !'#000+
   'W_Library $1 not found, Linking may fail !'#000+
-  'W_Error while link','ing'#000+
+  'W_Error while linking'#000+
   'W_Can'#039't call the linker, switching to external linking'#000+
   'W_Can'#039't call the linker, switching to external linking'#000+
   'I_Linking $1'#000+
   'I_Linking $1'#000+
   'W_binder not found, switching to external binding'#000+
   'W_binder not found, switching to external binding'#000+
-  'W_ar not found, switching to external ar'#000+
+  'W_ar not found, switching',' to external ar'#000+
   'E_Dynamic Libraries not supported'#000+
   'E_Dynamic Libraries not supported'#000+
   'I_Closing script $1'#000+
   'I_Closing script $1'#000+
-  'W_resource compiler not',' found, switching to external mode'#000+
+  'W_resource compiler not found, switching to external mode'#000+
   'I_Compiling resource $1'#000+
   'I_Compiling resource $1'#000+
   'F_Can'#039't post process executable $1'#000+
   'F_Can'#039't post process executable $1'#000+
   'F_Can'#039't open executable $1'#000+
   'F_Can'#039't open executable $1'#000+
   'X_Size of Code: $1 bytes'#000+
   'X_Size of Code: $1 bytes'#000+
-  'X_Size of initialized data: $1 bytes'#000+
+  'X','_Size of initialized data: $1 bytes'#000+
   'X_Size of uninitialized data: $1 bytes'#000+
   'X_Size of uninitialized data: $1 bytes'#000+
-  'X_Stack space rese','rved: $1 bytes'#000+
+  'X_Stack space reserved: $1 bytes'#000+
   'X_Stack space commited: $1 bytes'#000+
   'X_Stack space commited: $1 bytes'#000+
   'T_Unitsearch: $1'#000+
   'T_Unitsearch: $1'#000+
   'T_PPU Loading $1'#000+
   'T_PPU Loading $1'#000+
@@ -443,211 +449,211 @@ const msgtxt : array[0..000098,1..240] of char=(
   'U_PPU Flags: $1'#000+
   'U_PPU Flags: $1'#000+
   'U_PPU Crc: $1'#000+
   'U_PPU Crc: $1'#000+
   'U_PPU Time: $1'#000+
   'U_PPU Time: $1'#000+
-  'U_PPU File too short'#000+
+  'U_PPU',' File too short'#000+
   'U_PPU Invalid Header (no PPU at the begin)'#000+
   'U_PPU Invalid Header (no PPU at the begin)'#000+
   'U_PPU Invalid Version $1'#000+
   'U_PPU Invalid Version $1'#000+
-  'U_PPU is ','compiled for an other processor'#000+
+  'U_PPU is compiled for an other processor'#000+
   'U_PPU is compiled for an other target'#000+
   'U_PPU is compiled for an other target'#000+
   'U_PPU Source: $1'#000+
   'U_PPU Source: $1'#000+
   'U_Writing $1'#000+
   'U_Writing $1'#000+
   'F_Can'#039't Write PPU-File'#000+
   'F_Can'#039't Write PPU-File'#000+
   'F_reading PPU-File'#000+
   'F_reading PPU-File'#000+
-  'F_unexpected end of PPU-File'#000+
+  'F_une','xpected end of PPU-File'#000+
   'F_Invalid PPU-File entry: $1'#000+
   'F_Invalid PPU-File entry: $1'#000+
   'F_PPU Dbx count problem'#000+
   'F_PPU Dbx count problem'#000+
-  'E_Illegal unit n','ame: $1'#000+
+  'E_Illegal unit name: $1'#000+
   'F_Too much units'#000+
   'F_Too much units'#000+
   'F_Circular unit reference between $1 and $2'#000+
   'F_Circular unit reference between $1 and $2'#000+
   'F_Can'#039't compile unit $1, no sources available'#000+
   'F_Can'#039't compile unit $1, no sources available'#000+
   'F_Can'#039't find unit $1'#000+
   'F_Can'#039't find unit $1'#000+
-  'W_Compiling the system unit requires the -Us switch'#000+
+  'W_Compiling',' the system unit requires the -Us switch'#000+
   'F_There were $1 errors compiling module, stopping'#000+
   'F_There were $1 errors compiling module, stopping'#000+
-  'U_','Load from $1 ($2) unit $3'#000+
+  'U_Load from $1 ($2) unit $3'#000+
   'U_Recompiling $1, checksum changed for $2'#000+
   'U_Recompiling $1, checksum changed for $2'#000+
   'U_Recompiling $1, source found only'#000+
   'U_Recompiling $1, source found only'#000+
-  'U_Recompiling unit, static lib is older than ppufile'#000+
+  'U_Recompiling unit, static lib is older tha','n ppufile'#000+
   'U_Recompiling unit, shared lib is older than ppufile'#000+
   'U_Recompiling unit, shared lib is older than ppufile'#000+
-  'U_Recompiling unit, obj and as','m are older than ppufile'#000+
+  'U_Recompiling unit, obj and asm are older than ppufile'#000+
   'U_Recompiling unit, obj is older than asm'#000+
   'U_Recompiling unit, obj is older than asm'#000+
   'U_Parsing interface of $1'#000+
   'U_Parsing interface of $1'#000+
   'U_Parsing implementation of $1'#000+
   'U_Parsing implementation of $1'#000+
-  'U_Second load for unit $1'#000+
+  'U_Second load for unit ','$1'#000+
   'U_PPU Check file $1 time $2'#000+
   'U_PPU Check file $1 time $2'#000+
   '$1 [options] <inputfile> [options]'#000+
   '$1 [options] <inputfile> [options]'#000+
-  'W_Only one source file supp','orted'#000+
+  'W_Only one source file supported'#000+
   'W_DEF file can be created only for OS/2'#000+
   'W_DEF file can be created only for OS/2'#000+
   'E_nested response files are not supported'#000+
   'E_nested response files are not supported'#000+
   'F_No source file name in command line'#000+
   'F_No source file name in command line'#000+
-  'E_Illegal parameter: $1'#000+
+  'E_Illegal parameter: ','$1'#000+
   'H_-? writes help pages'#000+
   'H_-? writes help pages'#000+
   'F_Too many config files nested'#000+
   'F_Too many config files nested'#000+
   'F_Unable to open file $1'#000+
   'F_Unable to open file $1'#000+
-  'N_Reading f','urther options from $1'#000+
+  'N_Reading further options from $1'#000+
   'W_Target is already set to: $1'#000+
   'W_Target is already set to: $1'#000+
   'W_Shared libs not supported on DOS platform, reverting to static'#000+
   'W_Shared libs not supported on DOS platform, reverting to static'#000+
   'F_too many IF(N)DEFs'#000+
   'F_too many IF(N)DEFs'#000+
-  'F_too many ENDIFs'#000+
+  'F_too m','any ENDIFs'#000+
   'F_open conditional at the end of the file'#000+
   'F_open conditional at the end of the file'#000+
-  'W_Debug information generation is not su','pported by this executable'#000+
+  'W_Debug information generation is not supported by this executable'#000+
   'H_Try recompiling with -dGDB'#000+
   'H_Try recompiling with -dGDB'#000+
   'E_You are using the obsolete switch $1'#000+
   'E_You are using the obsolete switch $1'#000+
-  'E_You are using the obsolete switch $1, please use $2'#000+
+  'E_You are using the obsolete switch $1, please use $','2'#000+
   'N_Switching assembler to default source writing assembler'#000+
   'N_Switching assembler to default source writing assembler'#000+
-  'Free Pascal Compiler version $FPC','VER [$FPCDATE] for $FPCTARGET'#000+
+  'Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'#000+
   'Copyright (c) 1993-98 by Florian Klaempfl'#000+
   'Copyright (c) 1993-98 by Florian Klaempfl'#000+
   'Free Pascal Compiler version $FPCVER'#000+
   'Free Pascal Compiler version $FPCVER'#000+
   #000+
   #000+
   'Compiler Date  : $FPCDATE'#000+
   'Compiler Date  : $FPCDATE'#000+
-  'Compiler Target: $FPCTARGET'#000+
+  'Compiler Ta','rget: $FPCTARGET'#000+
   #000+
   #000+
   'This program comes under the GNU General Public Licence'#000+
   'This program comes under the GNU General Public Licence'#000+
-  'For more informatio','n read COPYING.FPC'#000+
+  'For more information read COPYING.FPC'#000+
   #000+
   #000+
   'Report bugs,suggestions etc to:'#000+
   'Report bugs,suggestions etc to:'#000+
   '                 [email protected]'#000+
   '                 [email protected]'#000+
-  '**0*_put + after a boolean switch option to enable it, - to disable it'+
-  #000+
+  '**0*_put + after a boolean switch option to ','enable it, - to disable '+
+  'it'#000+
   '**1a_the compiler doesn'#039't delete the generated assembler file'#000+
   '**1a_the compiler doesn'#039't delete the generated assembler file'#000+
-  '**2a','l_list sourcecode lines in assembler file'#000+
+  '**2al_list sourcecode lines in assembler file'#000+
   '**2ar_list register allocation/release info in assembler file'#000+
   '**2ar_list register allocation/release info in assembler file'#000+
-  '**2at_list temp allocation/release info in assembler file'#000+
+  '**2at_list temp allocation/release info in ','assembler file'#000+
   '**1b_generate browser info'#000+
   '**1b_generate browser info'#000+
   '**2bl_generate local symbol info'#000+
   '**2bl_generate local symbol info'#000+
-  '**1B_build all mod','ules'#000+
+  '**1B_build all modules'#000+
   '**1C<x>_code generation options:'#000+
   '**1C<x>_code generation options:'#000+
   '3*2CD_create dynamic library'#000+
   '3*2CD_create dynamic library'#000+
   '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#000+
   '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#000+
   '**2Ci_IO-checking'#000+
   '**2Ci_IO-checking'#000+
-  '**2Cn_omit linking stage'#000+
+  '**2Cn_omit',' linking stage'#000+
   '**2Co_check overflow of integer operations'#000+
   '**2Co_check overflow of integer operations'#000+
   '**2Cr_range checking'#000+
   '**2Cr_range checking'#000+
-  '**2Cs<n>_set s','tack size to <n>'#000+
+  '**2Cs<n>_set stack size to <n>'#000+
   '**2Ct_stack checking'#000+
   '**2Ct_stack checking'#000+
   '3*2CS_create static library'#000+
   '3*2CS_create static library'#000+
   '3*2Cx_use smartlinking'#000+
   '3*2Cx_use smartlinking'#000+
   '**1d<x>_defines the symbol <x>'#000+
   '**1d<x>_defines the symbol <x>'#000+
   '*O1D_generate a DEF file'#000+
   '*O1D_generate a DEF file'#000+
-  '*O2Dd<x>_set description to <x>'#000+
+  '*O','2Dd<x>_set description to <x>'#000+
   '*O2Dw_PM application'#000+
   '*O2Dw_PM application'#000+
   '**1e<x>_set path to executable'#000+
   '**1e<x>_set path to executable'#000+
-  '**1E_same a','s -Cn'#000+
+  '**1E_same as -Cn'#000+
   '**1F<x>_set file names and paths:'#000+
   '**1F<x>_set file names and paths:'#000+
   '**2FD<x>_sets the directory where to search for compiler utilities'#000+
   '**2FD<x>_sets the directory where to search for compiler utilities'#000+
   '**2Fe<x>_redirect error output to <x>'#000+
   '**2Fe<x>_redirect error output to <x>'#000+
-  '**2FE<x>_set exe/unit output path to <x>'#000+
+  '**','2FE<x>_set exe/unit output path to <x>'#000+
   '**2Fi<x>_adds <x> to include path'#000+
   '**2Fi<x>_adds <x> to include path'#000+
-  '**2Fl<x>_adds <x> to',' library path'#000+
+  '**2Fl<x>_adds <x> to library path'#000+
   '*L2FL<x>_uses <x> as dynamic linker'#000+
   '*L2FL<x>_uses <x> as dynamic linker'#000+
   '**2Fo<x>_adds <x> to object path'#000+
   '**2Fo<x>_adds <x> to object path'#000+
   '**2Fr<x>_load error message file <x>'#000+
   '**2Fr<x>_load error message file <x>'#000+
-  '**2Fu<x>_adds <x> to unit path'#000+
+  '**2Fu<x>_adds <x> to unit p','ath'#000+
   '**2FU<x>_set unit output path to <x>, overrides -FE'#000+
   '**2FU<x>_set unit output path to <x>, overrides -FE'#000+
-  '*g1g<x>_generate debugger information',':'#000+
+  '*g1g<x>_generate debugger information:'#000+
   '*g2gg_use gsym'#000+
   '*g2gg_use gsym'#000+
   '*g2gd_use dbx'#000+
   '*g2gd_use dbx'#000+
   '*g2gh_use heap trace unit'#000+
   '*g2gh_use heap trace unit'#000+
   '*g2gc_generate checks for pointers'#000+
   '*g2gc_generate checks for pointers'#000+
   '**1i_information'#000+
   '**1i_information'#000+
   '**2iD_return compiler date'#000+
   '**2iD_return compiler date'#000+
-  '**2iV_return compiler version'#000+
+  '**2iV_retur','n compiler version'#000+
   '**2iSO_return compiler OS'#000+
   '**2iSO_return compiler OS'#000+
   '**2iSP_return compiler processor'#000+
   '**2iSP_return compiler processor'#000+
-  '**2iTO_return t','arget OS'#000+
+  '**2iTO_return target OS'#000+
   '**2iTP_return target processor'#000+
   '**2iTP_return target processor'#000+
   '**1I<x>_adds <x> to include path'#000+
   '**1I<x>_adds <x> to include path'#000+
   '**1k<x>_Pass <x> to the linker'#000+
   '**1k<x>_Pass <x> to the linker'#000+
   '**1l_write logo'#000+
   '**1l_write logo'#000+
-  '**1n_don'#039't read the default config file'#000+
+  '**1n_don'#039't read the default',' config file'#000+
   '**1o<x>_change the name of the executable produced to <x>'#000+
   '**1o<x>_change the name of the executable produced to <x>'#000+
-  '**1pg_generate profile',' code for gprof'#000+
+  '**1pg_generate profile code for gprof'#000+
   '*L1P_use pipes instead of creating temporary assembler files'#000+
   '*L1P_use pipes instead of creating temporary assembler files'#000+
   '**1S<x>_syntax options:'#000+
   '**1S<x>_syntax options:'#000+
   '**2S2_switch some Delphi 2 extensions on'#000+
   '**2S2_switch some Delphi 2 extensions on'#000+
-  '**2Sc_supports operators like C (*=,+=,/= and -=)'#000+
+  '**2Sc','_supports operators like C (*=,+=,/= and -=)'#000+
   '**2Sd_tries to be Delphi compatible'#000+
   '**2Sd_tries to be Delphi compatible'#000+
-  '**2Se<x>_com','piler stops after the <x> errors (default is 1)'#000+
+  '**2Se<x>_compiler stops after the <x> errors (default is 1)'#000+
   '**2Sg_allow LABEL and GOTO'#000+
   '**2Sg_allow LABEL and GOTO'#000+
   '**2Sh_Use ansistrings'#000+
   '**2Sh_Use ansistrings'#000+
   '**2Si_support C++ styled INLINE'#000+
   '**2Si_support C++ styled INLINE'#000+
-  '**2Sm_support macros like C (global)'#000+
+  '**2Sm_support macr','os like C (global)'#000+
   '**2So_tries to be TP/BP 7.0 compatible'#000+
   '**2So_tries to be TP/BP 7.0 compatible'#000+
   '**2Sp_tries to be gpc compatible'#000+
   '**2Sp_tries to be gpc compatible'#000+
-  '**','2Ss_constructor name must be init (destructor must be done)'#000+
+  '**2Ss_constructor name must be init (destructor must be done)'#000+
   '**2St_allow static keyword in objects'#000+
   '**2St_allow static keyword in objects'#000+
-  '**1s_don'#039't call assembler and linker (only with -a)'#000+
+  '**1s_don'#039't call assembler and linker (only with -','a)'#000+
   '**1u<x>_undefines the symbol <x>'#000+
   '**1u<x>_undefines the symbol <x>'#000+
   '**1U_unit options:'#000+
   '**1U_unit options:'#000+
   '**2Un_don'#039't check the unit name'#000+
   '**2Un_don'#039't check the unit name'#000+
-  '**2Us_','compile a system unit'#000+
+  '**2Us_compile a system unit'#000+
   '**1v<x>_Be verbose. <x> is a combination of the following letters:'#000+
   '**1v<x>_Be verbose. <x> is a combination of the following letters:'#000+
   '**2*_e : Show errors (default)       d : Show debug info'#000+
   '**2*_e : Show errors (default)       d : Show debug info'#000+
-  '**2*_w : Show warnings               u : Show unit info'#000+
-  '**2*_n : Show notes                  t',' : Show tried/used files'#000+
+  '*','*2*_w : Show warnings               u : Show unit info'#000+
+  '**2*_n : Show notes                  t : Show tried/used files'#000+
   '**2*_h : Show hints                  m : Show defined macros'#000+
   '**2*_h : Show hints                  m : Show defined macros'#000+
-  '**2*_i : Show general info           p : Show compiled procedures'#000+
+  '**2*_i : Show general info           p : Show compiled proced','ures'#000+
   '**2*_l : Show linenumbers            c : Show conditionals'#000+
   '**2*_l : Show linenumbers            c : Show conditionals'#000+
-  '**2*_a : Show everything     ','        0 : Show nothing (except errors'+
-  ')'#000+
+  '**2*_a : Show everything             0 : Show nothing (except errors)'#000+
   '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#000+
   '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#000+
-  '**2*_    declarations if an error    x : Executable info (Win32 only)'#000+
+  '**2*_    declarations if an error   ',' x : Executable info (Win32 only'+
+  ')'#000+
   '**2*_    occurs'#000+
   '**2*_    occurs'#000+
   '**1X_executable options:'#000+
   '**1X_executable options:'#000+
-  '*L2Xc_link with th','e c library'#000+
+  '*L2Xc_link with the c library'#000+
   '**2XD_link with dynamic libraries (defines FPC_LINK_DYNAMIC)'#000+
   '**2XD_link with dynamic libraries (defines FPC_LINK_DYNAMIC)'#000+
   '**2Xs_strip all symbols from executable'#000+
   '**2Xs_strip all symbols from executable'#000+
-  '**2XS_link with static libraries (defines FPC_LINK_STATIC)'#000+
+  '**2XS_link with static libraries (','defines FPC_LINK_STATIC)'#000+
   '**0*_Processor specific options:'#000+
   '**0*_Processor specific options:'#000+
   '3*1A<x>_output format:'#000+
   '3*1A<x>_output format:'#000+
-  '3*2Aas_assem','ble using GNU AS'#000+
+  '3*2Aas_assemble using GNU AS'#000+
   '3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#000+
   '3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#000+
   '3*2Anasmcoff_coff (Go32v2) file using Nasm'#000+
   '3*2Anasmcoff_coff (Go32v2) file using Nasm'#000+
-  '3*2Anasmelf_elf32 (Linux) file using Nasm'#000+
+  '3*2Anasmelf_elf32 (Linux) file using',' Nasm'#000+
   '3*2Anasmobj_obj file using Nasm'#000+
   '3*2Anasmobj_obj file using Nasm'#000+
   '3*2Amasm_obj file using Masm (Microsoft)'#000+
   '3*2Amasm_obj file using Masm (Microsoft)'#000+
-  '3*2Atasm_obj f','ile using Tasm (Borland)'#000+
+  '3*2Atasm_obj file using Tasm (Borland)'#000+
   '3*2Acoff_coff (Go32v2) using internal writer'#000+
   '3*2Acoff_coff (Go32v2) using internal writer'#000+
   '3*2Apecoff_pecoff (Win32) using internal writer'#000+
   '3*2Apecoff_pecoff (Win32) using internal writer'#000+
-  '3*1R<x>_assembler reading style:'#000+
+  '3*1R<x>_assembler reading sty','le:'#000+
   '3*2Ratt_read AT&T style assembler'#000+
   '3*2Ratt_read AT&T style assembler'#000+
   '3*2Rintel_read Intel style assembler'#000+
   '3*2Rintel_read Intel style assembler'#000+
-  '3*2Rdirect_copy as','sembler text directly to assembler file'#000+
+  '3*2Rdirect_copy assembler text directly to assembler file'#000+
   '3*1O<x>_optimizations:'#000+
   '3*1O<x>_optimizations:'#000+
   '3*2Og_generate smaller code'#000+
   '3*2Og_generate smaller code'#000+
   '3*2OG_generate faster code (default)'#000+
   '3*2OG_generate faster code (default)'#000+
-  '3*2Or_keep certain variables in registers (still BUGGY!!!)'#000+
+  '3*2Or_keep certain ','variables in registers (still BUGGY!!!)'#000+
   '3*2Ou_enable uncertain optimizations (see docs)'#000+
   '3*2Ou_enable uncertain optimizations (see docs)'#000+
-  '3*2O1','_level 1 optimizations (quick optimizations)'#000+
+  '3*2O1_level 1 optimizations (quick optimizations)'#000+
   '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#000+
   '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#000+
   '3*2O3_level 3 optimizations (same as -O2u)'#000+
   '3*2O3_level 3 optimizations (same as -O2u)'#000+
-  '3*2Op<x>_target processor:'#000+
+  '3*','2Op<x>_target processor:'#000+
   '3*3Op1_set target processor to 386/486'#000+
   '3*3Op1_set target processor to 386/486'#000+
-  '3*3Op2_set target processor t','o Pentium/PentiumMMX (tm)'#000+
+  '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#000+
   '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#000+
   '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#000+
   '3*1T<x>_Target operating system:'#000+
   '3*1T<x>_Target operating system:'#000+
-  '3*2TGO32V1_version 1 of DJ Delorie DOS extender'#000+
+  '3*2TGO32V1_version 1 of DJ Delorie',' DOS extender'#000+
   '3*2TGO32V2_version 2 of DJ Delorie DOS extender'#000+
   '3*2TGO32V2_version 2 of DJ Delorie DOS extender'#000+
   '3*2TLINUX_Linux'#000+
   '3*2TLINUX_Linux'#000+
-  '3*2TOS2_OS/2 2.','x'#000+
+  '3*2TOS2_OS/2 2.x'#000+
   '3*2TWin32_Windows 32 Bit'#000+
   '3*2TWin32_Windows 32 Bit'#000+
   '6*1A<x>_output format'#000+
   '6*1A<x>_output format'#000+
   '6*2Aas_Unix o-file using GNU AS'#000+
   '6*2Aas_Unix o-file using GNU AS'#000+
   '6*2Agas_GNU Motorola assembler'#000+
   '6*2Agas_GNU Motorola assembler'#000+
   '6*2Amit_MIT Syntax (old GAS)'#000+
   '6*2Amit_MIT Syntax (old GAS)'#000+
-  '6*2Amot_Standard Motorola assembler'#000+
+  '6*2Amo','t_Standard Motorola assembler'#000+
   '6*1O_optimizations:'#000+
   '6*1O_optimizations:'#000+
   '6*2Oa_turn on the optimizer'#000+
   '6*2Oa_turn on the optimizer'#000+
-  '6*2Og_generate ','smaller code'#000+
+  '6*2Og_generate smaller code'#000+
   '6*2OG_generate faster code (default)'#000+
   '6*2OG_generate faster code (default)'#000+
   '6*2Ox_optimize maximum (still BUGGY!!!)'#000+
   '6*2Ox_optimize maximum (still BUGGY!!!)'#000+
   '6*2O2_set target processor to a MC68020+'#000+
   '6*2O2_set target processor to a MC68020+'#000+
-  '6*1R<x>_assembler reading style:'#000+
+  '6*1R<x>_assemble','r reading style:'#000+
   '6*2RMOT_read motorola style assembler'#000+
   '6*2RMOT_read motorola style assembler'#000+
   '6*1T<x>_Target operating system:'#000+
   '6*1T<x>_Target operating system:'#000+
-  '6*2TA','MIGA_Commodore Amiga'#000+
+  '6*2TAMIGA_Commodore Amiga'#000+
   '6*2TATARI_Atari ST/STe/TT'#000+
   '6*2TATARI_Atari ST/STe/TT'#000+
   '6*2TMACOS_Macintosh m68k'#000+
   '6*2TMACOS_Macintosh m68k'#000+
   '6*2TLINUX_Linux-68k'#000+
   '6*2TLINUX_Linux-68k'#000+
   '**1*_'#000+
   '**1*_'#000+
   '**1?_shows this help'#000+
   '**1?_shows this help'#000+
-  '**1h_shows this help without waiting'#000
+  '**1h_shows this help without',' waiting'#000
 );
 );

+ 11 - 4
compiler/pdecl.pas

@@ -1305,8 +1305,8 @@ unit pdecl;
                      end
                      end
                    else
                    else
                      begin
                      begin
-                        Message(type_e_class_type_expected);
-                        object_dec:=new(perrordef,init);
+                        object_dec:=generrordef;
+                        Message1(type_e_class_type_expected,generrordef^.typename);
                      end;
                      end;
                    typecanbeforward:=storetypeforwardsallowed;
                    typecanbeforward:=storetypeforwardsallowed;
                    exit;
                    exit;
@@ -1352,7 +1352,7 @@ unit pdecl;
               childof:=pobjectdef(id_type(pattern));
               childof:=pobjectdef(id_type(pattern));
               if (childof^.deftype<>objectdef) then
               if (childof^.deftype<>objectdef) then
                begin
                begin
-                 Message(type_e_class_type_expected);
+                 Message1(type_e_class_type_expected,childof^.typename);
                  childof:=nil;
                  childof:=nil;
                end
                end
               else
               else
@@ -2385,7 +2385,14 @@ unit pdecl;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.141  1999-08-04 13:02:51  jonas
+  Revision 1.142  1999-08-05 16:53:02  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.141  1999/08/04 13:02:51  jonas
     * all tokens now start with an underscore
     * all tokens now start with an underscore
     * PowerPC compiles!!
     * PowerPC compiles!!
 
 

+ 9 - 2
compiler/pexpr.pas

@@ -1548,7 +1548,7 @@ unit pexpr;
                  pd2:=pd;
                  pd2:=pd;
 
 
                  if (pd^.deftype<>pointerdef) then
                  if (pd^.deftype<>pointerdef) then
-                   Message(type_e_pointer_type_expected)
+                   Message1(type_e_pointer_type_expected,pd^.typename)
                  else if {(ppointerdef(pd)^.definition^.deftype<>objectdef)}
                  else if {(ppointerdef(pd)^.definition^.deftype<>objectdef)}
                        token=_RKLAMMER then
                        token=_RKLAMMER then
                   begin
                   begin
@@ -2062,7 +2062,14 @@ _LECKKLAMMER : begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.132  1999-08-04 13:49:45  florian
+  Revision 1.133  1999-08-05 16:53:04  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.132  1999/08/04 13:49:45  florian
     * new(...)^. is now allowed
     * new(...)^. is now allowed
 
 
   Revision 1.131  1999/08/04 13:02:55  jonas
   Revision 1.131  1999/08/04 13:02:55  jonas

+ 24 - 7
compiler/pstatmnt.pas

@@ -577,8 +577,11 @@ unit pstatmnt;
                                  ot:=pobjectdef(ptypesym(srsym)^.definition)
                                  ot:=pobjectdef(ptypesym(srsym)^.definition)
                                else
                                else
                                  begin
                                  begin
-                                    message(type_e_class_type_expected);
                                     ot:=pobjectdef(generrordef);
                                     ot:=pobjectdef(generrordef);
+                                    if (srsym^.typ=typesym) then
+                                      Message1(type_e_class_type_expected,ptypesym(srsym)^.definition^.typename)
+                                    else
+                                      Message1(type_e_class_type_expected,ot^.typename);
                                  end;
                                  end;
                                sym:=new(pvarsym,init(objname,ot));
                                sym:=new(pvarsym,init(objname,ot));
                                exceptsymtable:=new(psymtable,init(stt_exceptsymtable));
                                exceptsymtable:=new(psymtable,init(stt_exceptsymtable));
@@ -602,8 +605,11 @@ unit pstatmnt;
                                  ot:=pobjectdef(ptypesym(srsym)^.definition)
                                  ot:=pobjectdef(ptypesym(srsym)^.definition)
                                else
                                else
                                  begin
                                  begin
-                                    message(type_e_class_type_expected);
                                     ot:=pobjectdef(generrordef);
                                     ot:=pobjectdef(generrordef);
+                                    if (srsym^.typ=typesym) then
+                                      Message1(type_e_class_type_expected,ptypesym(srsym)^.definition^.typename)
+                                    else
+                                      Message1(type_e_class_type_expected,ot^.typename);
                                  end;
                                  end;
                                exceptsymtable:=nil;
                                exceptsymtable:=nil;
                             end;
                             end;
@@ -850,10 +856,12 @@ unit pstatmnt;
                    consume(_ID);
                    consume(_ID);
 
 
                    pd:=p^.resulttype;
                    pd:=p^.resulttype;
+                   if pd=nil then
+                    pd:=generrordef;
                    pd2:=pd;
                    pd2:=pd;
-                   if (p^.resulttype = nil) or (pd^.deftype<>pointerdef) then
+                   if (pd^.deftype<>pointerdef) then
                      begin
                      begin
-                        Message(type_e_pointer_type_expected);
+                        Message1(type_e_pointer_type_expected,pd^.typename);
                         p:=factor(false);
                         p:=factor(false);
                         consume(_RKLAMMER);
                         consume(_RKLAMMER);
                         new_dispose_statement:=genzeronode(errorn);
                         new_dispose_statement:=genzeronode(errorn);
@@ -922,9 +930,11 @@ unit pstatmnt;
             end
             end
           else
           else
             begin
             begin
-               if (p^.resulttype=nil) or (p^.resulttype^.deftype<>pointerdef) then
+               if p^.resulttype=nil then
+                p^.resulttype:=generrordef;
+               if (p^.resulttype^.deftype<>pointerdef) then
                  Begin
                  Begin
-                    Message(type_e_pointer_type_expected);
+                    Message1(type_e_pointer_type_expected,p^.resulttype^.typename);
                     new_dispose_statement:=genzeronode(errorn);
                     new_dispose_statement:=genzeronode(errorn);
                  end
                  end
                else
                else
@@ -1291,7 +1301,14 @@ unit pstatmnt;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.97  1999-08-04 13:02:59  jonas
+  Revision 1.98  1999-08-05 16:53:05  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.97  1999/08/04 13:02:59  jonas
     * all tokens now start with an underscore
     * all tokens now start with an underscore
     * PowerPC compiles!!
     * PowerPC compiles!!
 
 

+ 10 - 12
compiler/psub.pas

@@ -437,18 +437,9 @@ begin
      symtablestack^.insert(aktprocsym);
      symtablestack^.insert(aktprocsym);
    end;
    end;
 
 
-  { create a new procdef }
-  { register object/class methods in symtable symtable }
-  { but not internal functions !!! }
   st:=symtablestack;
   st:=symtablestack;
-  if assigned(procinfo._class) and
-     (symtablestack^.symtabletype in [globalsymtable,staticsymtable]) then
-    begin
-      { change symtablestack to get correct definition registration }
-      pd:=new(pprocdef,init);
-    end
-  else
-    pd:=new(pprocdef,init);
+  pd:=new(pprocdef,init);
+  pd^.symtablelevel:=symtablestack^.symtablelevel;
 
 
   if assigned(procinfo._class) then
   if assigned(procinfo._class) then
     pd^._class := procinfo._class;
     pd^._class := procinfo._class;
@@ -2033,7 +2024,14 @@ end.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.11  1999-08-04 13:03:01  jonas
+  Revision 1.12  1999-08-05 16:53:06  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.11  1999/08/04 13:03:01  jonas
     * all tokens now start with an underscore
     * all tokens now start with an underscore
     * PowerPC compiles!!
     * PowerPC compiles!!
 
 

+ 11 - 4
compiler/ra386att.pas

@@ -859,7 +859,7 @@ Begin
         begin
         begin
           Consume(AS_DOLLAR);
           Consume(AS_DOLLAR);
           if actasmtoken<>AS_ID then
           if actasmtoken<>AS_ID then
-           Comment(V_Error,'assem_e_dollar_without_identifier');
+           Message(asmr_e_dollar_without_identifier);
         end;
         end;
       AS_STRING:
       AS_STRING:
         Begin
         Begin
@@ -1564,7 +1564,7 @@ Begin
           if asmsym<>'' then
           if asmsym<>'' then
            begin
            begin
              if maxvalue<>$ffffffff then
              if maxvalue<>$ffffffff then
-              Comment(V_Warning,'32bit constant created for address');
+              Message(asmr_w_32bit_const_for_address);
              ConcatConstSymbol(curlist,asmsym,value)
              ConcatConstSymbol(curlist,asmsym,value)
            end
            end
           else
           else
@@ -1825,7 +1825,7 @@ Begin
                l1:=l2;
                l1:=l2;
             end;
             end;
           ConcatAlign(curlist,l1);
           ConcatAlign(curlist,l1);
-          Comment(V_Note,'.align is target specific, use .balign or .p2align');
+          Message(asmr_n_align_is_target_specific);
           if actasmtoken<>AS_SEPARATOR then
           if actasmtoken<>AS_SEPARATOR then
            Consume(AS_SEPARATOR);
            Consume(AS_SEPARATOR);
         end;
         end;
@@ -1954,7 +1954,14 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.56  1999-08-04 00:23:25  florian
+  Revision 1.57  1999-08-05 16:53:08  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.56  1999/08/04 00:23:25  florian
     * renamed i386asm and i386base to cpuasm and cpubase
     * renamed i386asm and i386base to cpuasm and cpubase
 
 
   Revision 1.55  1999/08/03 22:03:09  peter
   Revision 1.55  1999/08/03 22:03:09  peter

+ 16 - 10
compiler/scandir.inc

@@ -541,12 +541,12 @@ const
          begin
          begin
          { case insensitive }
          { case insensitive }
            hs:=upper(hs);
            hs:=upper(hs);
-         { save old }
-           path:=hs;
          { remove %'s }
          { remove %'s }
            Delete(hs,1,1);
            Delete(hs,1,1);
            if hs[length(hs)]='%' then
            if hs[length(hs)]='%' then
             Delete(hs,length(hs),1);
             Delete(hs,length(hs),1);
+         { save old }
+           path:=hs;
          { first check for internal macros }
          { first check for internal macros }
            if hs='TIME' then
            if hs='TIME' then
             hs:=gettimestr
             hs:=gettimestr
@@ -568,13 +568,10 @@ const
            else
            else
             hs:=getenv(hs);
             hs:=getenv(hs);
            if hs='' then
            if hs='' then
-            Comment(V_Warning,'Include environment '+path+' not found in environment')
-           else
-            begin
-              { make it a stringconst }
-              hs:=''''+hs+'''';
-              current_scanner^.insertmacro(@hs[1],length(hs));
-            end;
+            Message1(scan_w_include_env_not_found,path);
+           { make it a stringconst }
+           hs:=''''+hs+'''';
+           current_scanner^.insertmacro(@hs[1],length(hs));
          end
          end
         else
         else
          begin
          begin
@@ -1085,12 +1082,21 @@ const
           { conditionals already read the comment }
           { conditionals already read the comment }
             if (current_scanner^.comment_level>0) then
             if (current_scanner^.comment_level>0) then
              current_scanner^.readcomment;
              current_scanner^.readcomment;
+            { we've read the whole comment }
+            aktcommentstyle:=comment_none;
           end;
           end;
       end;
       end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.58  1999-08-04 13:03:03  jonas
+  Revision 1.59  1999-08-05 16:53:10  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.58  1999/08/04 13:03:03  jonas
     * all tokens now start with an underscore
     * all tokens now start with an underscore
     * PowerPC compiles!!
     * PowerPC compiles!!
 
 

+ 42 - 5
compiler/scanner.pas

@@ -840,9 +840,11 @@ implementation
       var
       var
         found : longint;
         found : longint;
         next_char_loaded : boolean;
         next_char_loaded : boolean;
+        oldcommentstyle : tcommentstyle;
       begin
       begin
          found:=0;
          found:=0;
          next_char_loaded:=false;
          next_char_loaded:=false;
+         oldcommentstyle:=aktcommentstyle;
          repeat
          repeat
            case c of
            case c of
              #26 :
              #26 :
@@ -851,7 +853,10 @@ implementation
                begin
                begin
                  if not(m_nested_comment in aktmodeswitches) or
                  if not(m_nested_comment in aktmodeswitches) or
                     (comment_level=0) then
                     (comment_level=0) then
-                  found:=1;
+                  begin
+                    found:=1;
+                    aktcommentstyle:=comment_tp;
+                  end;
                  inc_comment_level;
                  inc_comment_level;
                end;
                end;
              '}' :
              '}' :
@@ -885,12 +890,23 @@ implementation
                   until false;
                   until false;
                 end;
                 end;
              '(' :
              '(' :
-               if (m_tp in aktmodeswitches) or
-                  (m_delphi in aktmodeswitches) then
                 begin
                 begin
                   readchar;
                   readchar;
                   if c='*' then
                   if c='*' then
-                    skipoldtpcomment
+                    begin
+                      readchar;
+                      if c='$' then
+                       begin
+                         found:=2;
+                         inc_comment_level;
+                         aktcommentstyle:=comment_oldtp;
+                       end
+                      else
+                       begin
+                         skipoldtpcomment;
+                         aktcommentstyle:=oldcommentstyle;
+                       end;
+                    end
                   else
                   else
                     next_char_loaded:=true;
                     next_char_loaded:=true;
                 end;
                 end;
@@ -915,8 +931,18 @@ implementation
          until (found=2);
          until (found=2);
       end;
       end;
 
 
+
+{****************************************************************************
+                      Include directive scanning/parsing
+****************************************************************************}
+
 {$i scandir.inc}
 {$i scandir.inc}
 
 
+
+{****************************************************************************
+                             Comment Handling
+****************************************************************************}
+
     procedure tscannerfile.skipcomment;
     procedure tscannerfile.skipcomment;
       begin
       begin
         aktcommentstyle:=comment_tp;
         aktcommentstyle:=comment_tp;
@@ -1088,6 +1114,10 @@ implementation
       end;
       end;
 
 
 
 
+{****************************************************************************
+                               Token Scanner
+****************************************************************************}
+
     procedure tscannerfile.readtoken;
     procedure tscannerfile.readtoken;
       var
       var
         code    : integer;
         code    : integer;
@@ -1733,7 +1763,14 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.90  1999-08-04 13:03:05  jonas
+  Revision 1.91  1999-08-05 16:53:11  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.90  1999/08/04 13:03:05  jonas
     * all tokens now start with an underscore
     * all tokens now start with an underscore
     * PowerPC compiles!!
     * PowerPC compiles!!
 
 

+ 36 - 1
compiler/symdef.inc

@@ -2142,6 +2142,7 @@
          proccalloptions:=[];
          proccalloptions:=[];
          procoptions:=[];
          procoptions:=[];
          retdef:=voiddef;
          retdef:=voiddef;
+         symtablelevel:=0;
          savesize:=target_os.size_of_pointer;
          savesize:=target_os.size_of_pointer;
       end;
       end;
 
 
@@ -2757,6 +2758,33 @@ Const local_symtable_index : longint = $8001;
       end;
       end;
 
 
 
 
+    function tprocdef.procname: string;
+      var
+        s : string;
+        l : longint;
+      begin
+         s:=mangledname;
+         { delete leading $$'s }
+         l:=pos('$$',s);
+         while l<>0 do
+           begin
+              delete(s,1,l+1);
+              l:=pos('$$',s);
+           end;
+         { delete leading _$'s }
+         l:=pos('_$',s);
+         while l<>0 do
+           begin
+              delete(s,1,l+1);
+              l:=pos('_$',s);
+           end;
+         l:=pos('$',s);
+         if l=0 then
+          procname:=s
+         else
+          procname:=Copy(s,1,l-1);
+      end;
+
 {$IfDef GDB}
 {$IfDef GDB}
     function tprocdef.cplusplusmangledname : string;
     function tprocdef.cplusplusmangledname : string;
       var
       var
@@ -3557,7 +3585,14 @@ Const local_symtable_index : longint = $8001;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.140  1999-08-04 13:03:07  jonas
+  Revision 1.141  1999-08-05 16:53:13  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.140  1999/08/04 13:03:07  jonas
     * all tokens now start with an underscore
     * all tokens now start with an underscore
     * PowerPC compiles!!
     * PowerPC compiles!!
 
 

+ 10 - 1
compiler/symdefh.inc

@@ -330,6 +330,7 @@
           proccalloptions : tproccalloptions;
           proccalloptions : tproccalloptions;
           procoptions     : tprocoptions;
           procoptions     : tprocoptions;
           para1           : pdefcoll;
           para1           : pdefcoll;
+          symtablelevel   : byte;
           fpu_used        : byte;    { how many stack fpu must be empty }
           fpu_used        : byte;    { how many stack fpu must be empty }
           constructor init;
           constructor init;
           constructor load;
           constructor load;
@@ -421,6 +422,7 @@
           procedure setmangledname(const s : string);
           procedure setmangledname(const s : string);
           procedure load_references;
           procedure load_references;
           function  write_references : boolean;
           function  write_references : boolean;
+          function  procname: string;
           { debug }
           { debug }
 {$ifdef GDB}
 {$ifdef GDB}
           function  cplusplusmangledname : string;
           function  cplusplusmangledname : string;
@@ -515,7 +517,14 @@
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.37  1999-08-03 22:03:16  peter
+  Revision 1.38  1999-08-05 16:53:15  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.37  1999/08/03 22:03:16  peter
     * moved bitmask constants to sets
     * moved bitmask constants to sets
     * some other type/const renamings
     * some other type/const renamings
 
 

+ 10 - 4
compiler/symsym.inc

@@ -393,10 +393,9 @@
               if pd^.forwarddef then
               if pd^.forwarddef then
                 begin
                 begin
                    if assigned(pd^._class) then
                    if assigned(pd^._class) then
-                     MessagePos1(fileinfo,sym_e_forward_not_resolved,pd^._class^.objname^+'.'+name+
-                       demangledparas(pd^.demangled_paras))
+                     MessagePos1(fileinfo,sym_e_forward_not_resolved,pd^._class^.objname^+'.'+demangledname)
                    else
                    else
-                     MessagePos1(fileinfo,sym_e_forward_not_resolved,name+pd^.demangled_paras);
+                     MessagePos1(fileinfo,sym_e_forward_not_resolved,demangledname);
                    { Turn futher error messages off }
                    { Turn futher error messages off }
                    pd^.forwarddef:=false;
                    pd^.forwarddef:=false;
                 end;
                 end;
@@ -2117,7 +2116,14 @@
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.107  1999-08-04 13:45:30  florian
+  Revision 1.108  1999-08-05 16:53:17  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.107  1999/08/04 13:45:30  florian
     + floating point register variables !!
     + floating point register variables !!
     * pairegalloc is now generated for register variables
     * pairegalloc is now generated for register variables
 
 

+ 24 - 8
compiler/symtable.pas

@@ -473,6 +473,7 @@ implementation
                              Helper Routines
                              Helper Routines
 *****************************************************************************}
 *****************************************************************************}
 
 
+{$ifdef unused}
     function demangledparas(s : string) : string;
     function demangledparas(s : string) : string;
       var
       var
          r : string;
          r : string;
@@ -487,22 +488,30 @@ implementation
               delete(s,1,l+1);
               delete(s,1,l+1);
               l:=pos('$$',s);
               l:=pos('$$',s);
            end;
            end;
+         { delete leading _$'s }
+         l:=pos('_$',s);
+         while l<>0 do
+           begin
+              delete(s,1,l+1);
+              l:=pos('_$',s);
+           end;
          l:=pos('$',s);
          l:=pos('$',s);
          if l=0 then
          if l=0 then
            exit;
            exit;
          delete(s,1,l);
          delete(s,1,l);
-         l:=pos('$',s);
-         if l=0 then
-           l:=length(s)+1;
          while s<>'' do
          while s<>'' do
-           begin
-              r:=r+copy(s,1,l-1)+',';
-              delete(s,1,l);
-           end;
+          begin
+            l:=pos('$',s);
+            if l=0 then
+             l:=length(s)+1;
+            r:=r+copy(s,1,l-1)+',';
+            delete(s,1,l);
+          end;
          delete(r,1,1);
          delete(r,1,1);
          delete(r,length(r),1);
          delete(r,length(r),1);
          demangledparas:=r;
          demangledparas:=r;
       end;
       end;
+{$endif}
 
 
 
 
     procedure numberunits;
     procedure numberunits;
@@ -2335,7 +2344,14 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.37  1999-08-04 13:03:09  jonas
+  Revision 1.38  1999-08-05 16:53:18  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.37  1999/08/04 13:03:09  jonas
     * all tokens now start with an underscore
     * all tokens now start with an underscore
     * PowerPC compiles!!
     * PowerPC compiles!!
 
 

+ 11 - 1
compiler/tccal.pas

@@ -194,6 +194,9 @@ implementation
                  allow_array_constructor:=old_array_constructor;
                  allow_array_constructor:=old_array_constructor;
                  must_be_valid:=store_valid;
                  must_be_valid:=store_valid;
                end;
                end;
+              { check if local proc/func is assigned to procvar }
+              if p^.left^.resulttype^.deftype=procvardef then
+                test_local_to_procvar(pprocvardef(p^.left^.resulttype),defcoll^.data);
               { generate the high() value tree }
               { generate the high() value tree }
               if push_high_param(defcoll^.data) then
               if push_high_param(defcoll^.data) then
                 gen_high_tree(p,is_open_string(defcoll^.data));
                 gen_high_tree(p,is_open_string(defcoll^.data));
@@ -1192,7 +1195,14 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.56  1999-08-04 00:23:34  florian
+  Revision 1.57  1999-08-05 16:53:19  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.56  1999/08/04 00:23:34  florian
     * renamed i386asm and i386base to cpuasm and cpubase
     * renamed i386asm and i386base to cpuasm and cpubase
 
 
   Revision 1.55  1999/08/03 22:03:27  peter
   Revision 1.55  1999/08/03 22:03:27  peter

+ 9 - 2
compiler/tcflw.pas

@@ -121,7 +121,7 @@ implementation
            exit;
            exit;
          if not is_boolean(p^.left^.resulttype) then
          if not is_boolean(p^.left^.resulttype) then
           begin
           begin
-            Comment(V_Error,'Expected boolean type but got "'+p^.left^.resulttype^.typename+'"');
+            Message1(type_e_boolean_expr_expected,p^.left^.resulttype^.typename);
             exit;
             exit;
           end;
           end;
 
 
@@ -488,7 +488,14 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.15  1999-08-04 00:23:39  florian
+  Revision 1.16  1999-08-05 16:53:20  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.15  1999/08/04 00:23:39  florian
     * renamed i386asm and i386base to cpuasm and cpubase
     * renamed i386asm and i386base to cpuasm and cpubase
 
 
   Revision 1.14  1999/08/03 22:03:30  peter
   Revision 1.14  1999/08/03 22:03:30  peter

+ 14 - 7
compiler/tcinl.pas

@@ -216,14 +216,14 @@ implementation
                  in_const_odd :
                  in_const_odd :
                    begin
                    begin
                      if isreal then
                      if isreal then
-                      CGMessage(type_e_integer_expr_expected)
+                      CGMessage1(type_e_integer_expr_expected,p^.left^.resulttype^.typename)
                      else
                      else
                       hp:=genordinalconstnode(byte(odd(vl)),booldef);
                       hp:=genordinalconstnode(byte(odd(vl)),booldef);
                    end;
                    end;
                  in_const_swap_word :
                  in_const_swap_word :
                    begin
                    begin
                      if isreal then
                      if isreal then
-                      CGMessage(type_e_integer_expr_expected)
+                      CGMessage1(type_e_integer_expr_expected,p^.left^.resulttype^.typename)
                      else
                      else
                       hp:=genordinalconstnode((vl and $ff) shl 8+(vl shr 8),p^.left^.resulttype);
                       hp:=genordinalconstnode((vl and $ff) shl 8+(vl shr 8),p^.left^.resulttype);
                    end;
                    end;
@@ -710,7 +710,7 @@ implementation
                                            end;
                                            end;
                                          isreal:=(hpp^.left^.resulttype^.deftype=floatdef);
                                          isreal:=(hpp^.left^.resulttype^.deftype=floatdef);
                                          if (not is_integer(length_para^.left^.resulttype)) then
                                          if (not is_integer(length_para^.left^.resulttype)) then
-                                          CGMessage(type_e_integer_expr_expected)
+                                          CGMessage1(type_e_integer_expr_expected,length_para^.left^.resulttype^.typename)
                                         else
                                         else
                                           length_para^.left:=gentypeconvnode(length_para^.left,s32bitdef);
                                           length_para^.left:=gentypeconvnode(length_para^.left,s32bitdef);
                                         if assigned(frac_para) then
                                         if assigned(frac_para) then
@@ -718,7 +718,7 @@ implementation
                                             if isreal then
                                             if isreal then
                                              begin
                                              begin
                                                if (not is_integer(frac_para^.left^.resulttype)) then
                                                if (not is_integer(frac_para^.left^.resulttype)) then
-                                                 CGMessage(type_e_integer_expr_expected)
+                                                 CGMessage1(type_e_integer_expr_expected,frac_para^.left^.resulttype^.typename)
                                                else
                                                else
                                                  frac_para^.left:=gentypeconvnode(frac_para^.left,s32bitdef);
                                                  frac_para^.left:=gentypeconvnode(frac_para^.left,s32bitdef);
                                              end
                                              end
@@ -841,7 +841,7 @@ implementation
                   if assigned(hpp) and hpp^.is_colon_para then
                   if assigned(hpp) and hpp^.is_colon_para then
                     begin
                     begin
                       if (not is_integer(hpp^.resulttype)) then
                       if (not is_integer(hpp^.resulttype)) then
-                        CGMessage(type_e_integer_expr_expected)
+                        CGMessage1(type_e_integer_expr_expected,hpp^.resulttype^.typename)
                       else
                       else
                         hpp^.left:=gentypeconvnode(hpp^.left,s32bitdef);
                         hpp^.left:=gentypeconvnode(hpp^.left,s32bitdef);
                       hpp:=hpp^.right;
                       hpp:=hpp^.right;
@@ -850,7 +850,7 @@ implementation
                           if isreal then
                           if isreal then
                            begin
                            begin
                              if (not is_integer(hpp^.resulttype)) then
                              if (not is_integer(hpp^.resulttype)) then
-                               CGMessage(type_e_integer_expr_expected)
+                               CGMessage1(type_e_integer_expr_expected,hpp^.resulttype^.typename)
                              else
                              else
                                hpp^.left:=gentypeconvnode(hpp^.left,s32bitdef);
                                hpp^.left:=gentypeconvnode(hpp^.left,s32bitdef);
                            end
                            end
@@ -1119,7 +1119,14 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.45  1999-08-04 00:23:40  florian
+  Revision 1.46  1999-08-05 16:53:23  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.45  1999/08/04 00:23:40  florian
     * renamed i386asm and i386base to cpuasm and cpubase
     * renamed i386asm and i386base to cpuasm and cpubase
 
 
   Revision 1.44  1999/08/03 22:03:32  peter
   Revision 1.44  1999/08/03 22:03:32  peter

+ 11 - 1
compiler/tcld.pas

@@ -307,6 +307,9 @@ implementation
             (pvarsym(p^.left^.symtableentry)^.varstate=vs_declared) then
             (pvarsym(p^.left^.symtableentry)^.varstate=vs_declared) then
            pvarsym(p^.left^.symtableentry)^.varstate:=vs_assigned;
            pvarsym(p^.left^.symtableentry)^.varstate:=vs_assigned;
 
 
+         { check if local proc/func is assigned to procvar }
+         if p^.right^.resulttype^.deftype=procvardef then
+           test_local_to_procvar(pprocvardef(p^.right^.resulttype),p^.left^.resulttype);
 
 
 
 
          p^.resulttype:=voiddef;
          p^.resulttype:=voiddef;
@@ -477,7 +480,14 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.38  1999-08-04 00:23:41  florian
+  Revision 1.39  1999-08-05 16:53:24  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.38  1999/08/04 00:23:41  florian
     * renamed i386asm and i386base to cpuasm and cpubase
     * renamed i386asm and i386base to cpuasm and cpubase
 
 
   Revision 1.37  1999/08/03 22:03:33  peter
   Revision 1.37  1999/08/03 22:03:33  peter

+ 41 - 31
compiler/tcmem.pas

@@ -138,8 +138,10 @@ implementation
           exit;
           exit;
 
 
          { check the type }
          { check the type }
-         if (p^.left^.resulttype=nil) or (p^.left^.resulttype^.deftype<>pointerdef) then
-           CGMessage(type_e_pointer_type_expected);
+         if p^.left^.resulttype=nil then
+          p^.left^.resulttype:=generrordef;
+         if (p^.left^.resulttype^.deftype<>pointerdef) then
+           CGMessage1(type_e_pointer_type_expected,p^.left^.resulttype^.typename);
 
 
          if (p^.left^.location.loc<>LOC_REFERENCE) {and
          if (p^.left^.location.loc<>LOC_REFERENCE) {and
             (p^.left^.location.loc<>LOC_CREGISTER)} then
             (p^.left^.location.loc<>LOC_CREGISTER)} then
@@ -172,34 +174,34 @@ implementation
               { proc/procvar 2 procvar ? }
               { proc/procvar 2 procvar ? }
               if p^.left^.treetype=calln then
               if p^.left^.treetype=calln then
                 begin
                 begin
-                     { is it a procvar, this is needed for @procvar in tp mode ! }
-                     if assigned(p^.left^.right) then
-                       begin
-                         { just return the load of the procvar, remove the
-                           addrn and calln nodes }
-                         hp:=p^.left^.right;
-                         putnode(p^.left);
-                         putnode(p);
-                         firstpass(hp);
-                         p:=hp;
-                         exit;
-                       end
-                     else
-                        begin
-                          { generate a methodcallnode or proccallnode }
-                          if (p^.left^.symtableprocentry^.owner^.symtabletype=objectsymtable) and
-                             (pobjectdef(p^.left^.symtableprocentry^.owner^.defowner)^.is_class) then
-                           begin
-                             hp:=genloadmethodcallnode(pprocsym(p^.left^.symtableprocentry),p^.left^.symtableproc,
-                               getcopy(p^.left^.methodpointer));
-                             disposetree(p);
-                             firstpass(hp);
-                             p:=hp;
-                             exit;
-                           end
-                          else
-                           hp:=genloadcallnode(pprocsym(p^.left^.symtableprocentry),p^.left^.symtableproc);
-                        end;
+                   { is it a procvar, this is needed for @procvar in tp mode ! }
+                   if assigned(p^.left^.right) then
+                     begin
+                       { just return the load of the procvar, remove the
+                         addrn and calln nodes }
+                       hp:=p^.left^.right;
+                       putnode(p^.left);
+                       putnode(p);
+                       firstpass(hp);
+                       p:=hp;
+                       exit;
+                     end
+                   else
+                      begin
+                        { generate a methodcallnode or proccallnode }
+                        if (p^.left^.symtableprocentry^.owner^.symtabletype=objectsymtable) and
+                           (pobjectdef(p^.left^.symtableprocentry^.owner^.defowner)^.is_class) then
+                         begin
+                           hp:=genloadmethodcallnode(pprocsym(p^.left^.symtableprocentry),p^.left^.symtableproc,
+                             getcopy(p^.left^.methodpointer));
+                           disposetree(p);
+                           firstpass(hp);
+                           p:=hp;
+                           exit;
+                         end
+                        else
+                         hp:=genloadcallnode(pprocsym(p^.left^.symtableprocentry),p^.left^.symtableproc);
+                      end;
 
 
                    { result is a procedure variable }
                    { result is a procedure variable }
                    { No, to be TP compatible, you must return a pointer to
                    { No, to be TP compatible, you must return a pointer to
@@ -218,6 +220,7 @@ implementation
                         pprocvardef(p^.resulttype)^.proccalloptions:=hp3^.proccalloptions;
                         pprocvardef(p^.resulttype)^.proccalloptions:=hp3^.proccalloptions;
                         pprocvardef(p^.resulttype)^.procoptions:=hp3^.procoptions;
                         pprocvardef(p^.resulttype)^.procoptions:=hp3^.procoptions;
                         pprocvardef(p^.resulttype)^.retdef:=hp3^.retdef;
                         pprocvardef(p^.resulttype)^.retdef:=hp3^.retdef;
+                        pprocvardef(p^.resulttype)^.symtablelevel:=hp3^.symtablelevel;
 
 
                       { method ? then set the methodpointer flag }
                       { method ? then set the methodpointer flag }
                         if (hp3^.owner^.symtabletype=objectsymtable) and
                         if (hp3^.owner^.symtabletype=objectsymtable) and
@@ -589,7 +592,14 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.23  1999-08-04 00:23:44  florian
+  Revision 1.24  1999-08-05 16:53:25  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.23  1999/08/04 00:23:44  florian
     * renamed i386asm and i386base to cpuasm and cpubase
     * renamed i386asm and i386base to cpuasm and cpubase
 
 
   Revision 1.22  1999/08/03 22:03:35  peter
   Revision 1.22  1999/08/03 22:03:35  peter

+ 15 - 7
compiler/verbose.pas

@@ -39,12 +39,13 @@ uses
 
 
 Const
 Const
 { <$10000 will show file and line }
 { <$10000 will show file and line }
-  V_Fatal        = $0;
-  V_Error        = $1;
-  V_Normal       = $2; { doesn't show a text like Error: }
-  V_Warning      = $4;
-  V_Note         = $8;
-  V_Hint         = $10;
+  V_None         = $0;
+  V_Fatal        = $1;
+  V_Error        = $2;
+  V_Normal       = $4; { doesn't show a text like Error: }
+  V_Warning      = $8;
+  V_Note         = $10;
+  V_Hint         = $20;
   V_Macro        = $100;
   V_Macro        = $100;
   V_Procedure    = $200;
   V_Procedure    = $200;
   V_Conditional  = $400;
   V_Conditional  = $400;
@@ -506,7 +507,14 @@ end.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.41  1999-07-10 10:26:22  peter
+  Revision 1.42  1999-08-05 16:53:28  peter
+    * V_Fatal=1, all other V_ are also increased
+    * Check for local procedure when assigning procvar
+    * fixed comment parsing because directives
+    * oldtp mode directives better supported
+    * added some messages to errore.msg
+
+  Revision 1.41  1999/07/10 10:26:22  peter
     * merged
     * merged
 
 
   Revision 1.40  1999/06/18 11:03:09  peter
   Revision 1.40  1999/06/18 11:03:09  peter