Browse Source

* @procvar fixes for tp mode
* @<id>:= gives now an error

peter 26 years ago
parent
commit
7f63615b43
10 changed files with 1501 additions and 1395 deletions
  1. 14 1
      compiler/cg386mem.pas
  2. 4 0
      compiler/errore.msg
  3. 15 2
      compiler/htypechk.pas
  4. 648 647
      compiler/msgidx.inc
  5. 672 671
      compiler/msgtxt.inc
  6. 6 5
      compiler/pp.pas
  7. 21 1
      compiler/tccnv.pas
  8. 10 1
      compiler/tcld.pas
  9. 105 66
      compiler/tcmem.pas
  10. 6 1
      compiler/tree.pas

+ 14 - 1
compiler/cg386mem.pas

@@ -222,6 +222,15 @@ implementation
     procedure secondaddr(var p : ptree);
     procedure secondaddr(var p : ptree);
       begin
       begin
          secondpass(p^.left);
          secondpass(p^.left);
+
+         { when loading procvar we do nothing with this node, so load the
+           location of left }
+         if p^.procvarload then
+          begin
+            set_location(p^.location,p^.left^.location);
+            exit;
+          end;
+
          p^.location.loc:=LOC_REGISTER;
          p^.location.loc:=LOC_REGISTER;
          del_reference(p^.left^.location.reference);
          del_reference(p^.left^.location.reference);
          p^.location.register:=getregister32;
          p^.location.register:=getregister32;
@@ -859,7 +868,11 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.57  1999-09-14 07:59:46  florian
+  Revision 1.58  1999-09-17 17:14:02  peter
+    * @procvar fixes for tp mode
+    * @<id>:= gives now an error
+
+  Revision 1.57  1999/09/14 07:59:46  florian
     * finally!? fixed
     * finally!? fixed
          with <function with result in temp> do
          with <function with result in temp> do
       My last and also Peter's fix before were wrong :(
       My last and also Peter's fix before were wrong :(

+ 4 - 0
compiler/errore.msg

@@ -914,6 +914,10 @@ type_e_cannot_local_proc_to_procvar=E_Can't assign local procedure/function to p
 % It's not allowed to assign a local procedure/function to a
 % It's not allowed to assign a local procedure/function to a
 % procedure variable, because the calling of local procedure/function is
 % procedure variable, because the calling of local procedure/function is
 % different. You can only assign local procedure/function to a void pointer.
 % different. You can only assign local procedure/function to a void pointer.
+type_e_no_assign_to_addr=E_Can't assign values to an address
+% It's not allowed to assign a value to an address of a variable,constant,
+% procedure or function. You can try compiling with -So if the identifier
+% is a procedure variable.
 % \end{description}
 % \end{description}
 #
 #
 # Symtable
 # Symtable

+ 15 - 2
compiler/htypechk.pas

@@ -107,9 +107,18 @@ implementation
             exit;
             exit;
           end;
           end;
 
 
-         b:=0;
+       { tp7 procvar def support, in tp7 a procvar is always called, if the
+         procvar is passed explicit a addrn would be there }
+         if (m_tp_procvar in aktmodeswitches) and
+            (def_from^.deftype=procvardef) and
+            (fromtreetype=loadn) then
+          begin
+            def_from:=pprocvardef(def_from)^.retdef;
+          end;
+
        { we walk the wanted (def_to) types and check then the def_from
        { we walk the wanted (def_to) types and check then the def_from
          types if there is a conversion possible }
          types if there is a conversion possible }
+         b:=0;
          case def_to^.deftype of
          case def_to^.deftype of
            orddef :
            orddef :
              begin
              begin
@@ -696,7 +705,11 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.38  1999-08-17 13:26:07  peter
+  Revision 1.39  1999-09-17 17:14:04  peter
+    * @procvar fixes for tp mode
+    * @<id>:= gives now an error
+
+  Revision 1.38  1999/08/17 13:26:07  peter
     * arrayconstructor -> arrayofconst fixed when arraycosntructor was not
     * arrayconstructor -> arrayofconst fixed when arraycosntructor was not
       variant.
       variant.
 
 

+ 648 - 647
compiler/msgidx.inc

@@ -1,647 +1,648 @@
-type tmsgconst=(
-  general_t_compilername,
-  general_d_sourceos,
-  general_i_targetos,
-  general_t_exepath,
-  general_t_unitpath,
-  general_t_includepath,
-  general_t_librarypath,
-  general_t_objectpath,
-  general_i_abslines_compiled,
-  general_f_no_memory_left,
-  general_i_writingresourcefile,
-  general_e_errorwritingresourcefile,
-  scan_f_end_of_file,
-  scan_f_string_exceeds_line,
-  scan_f_illegal_char,
-  scan_f_syn_expected,
-  scan_t_start_include_file,
-  scan_w_comment_level,
-  scan_n_far_directive_ignored,
-  scan_n_stack_check_global_under_linux,
-  scan_n_ignored_switch,
-  scan_w_illegal_switch,
-  scan_w_switch_is_global,
-  scan_e_illegal_char_const,
-  scan_f_cannot_open_input,
-  scan_f_cannot_open_includefile,
-  scan_e_too_much_endifs,
-  scan_w_only_pack_records,
-  scan_w_only_pack_enum,
-  scan_e_endif_expected,
-  scan_e_preproc_syntax_error,
-  scan_e_error_in_preproc_expr,
-  scan_w_marco_cut_after_255_chars,
-  scan_e_endif_without_if,
-  scan_f_user_defined,
-  scan_e_user_defined,
-  scan_w_user_defined,
-  scan_n_user_defined,
-  scan_h_user_defined,
-  scan_i_user_defined,
-  scan_e_keyword_cant_be_a_macro,
-  scan_f_macro_buffer_overflow,
-  scan_w_macro_deep_ten,
-  scan_e_wrong_styled_switch,
-  scan_d_handling_switch,
-  scan_c_endif_found,
-  scan_c_ifdef_found,
-  scan_c_ifopt_found,
-  scan_c_if_found,
-  scan_c_ifndef_found,
-  scan_c_else_found,
-  scan_c_skipping_until,
-  scan_i_press_enter,
-  scan_w_unsupported_switch,
-  scan_w_illegal_directive,
-  scan_t_back_in,
-  scan_w_unsupported_app_type,
-  scan_w_app_type_not_support,
-  scan_w_unsupported_asmmode_specifier,
-  scan_w_no_asm_reader_switch_inside_asm,
-  scan_e_wrong_switch_toggle,
-  scan_e_resourcefiles_not_supported,
-  scan_w_include_env_not_found,
-  parser_e_syntax_error,
-  parser_w_proc_far_ignored,
-  parser_w_proc_near_ignored,
-  parser_w_proc_register_ignored,
-  parser_e_no_dll_file_specified,
-  parser_e_export_name_double,
-  parser_e_export_ordinal_double,
-  parser_e_export_invalid_index,
-  parser_e_constructorname_must_be_init,
-  parser_e_destructorname_must_be_done,
-  parser_e_illegal_open_parameter,
-  parser_e_proc_inline_not_supported,
-  parser_w_priv_meth_not_virtual,
-  parser_w_constructor_should_be_public,
-  parser_w_destructor_should_be_public,
-  parser_n_only_one_destructor,
-  parser_e_no_local_objects,
-  parser_f_no_anonym_objects,
-  parser_object_has_no_vmt,
-  parser_e_illegal_parameter_list,
-  parser_e_wrong_parameter_type,
-  parser_e_wrong_parameter_size,
-  parser_e_overloaded_no_procedure,
-  parser_e_overloaded_have_same_parameters,
-  parser_e_header_dont_match_forward,
-  parser_e_header_different_var_names,
-  parser_n_duplicate_enum,
-  parser_n_interface_name_diff_implementation_name,
-  parser_e_no_with_for_variable_in_other_segments,
-  parser_e_too_much_lexlevel,
-  parser_e_range_check_error,
-  parser_w_range_check_error,
-  parser_e_double_caselabel,
-  parser_e_case_lower_less_than_upper_bound,
-  parser_e_type_const_not_possible,
-  parser_e_no_overloaded_procvars,
-  parser_e_invalid_string_size,
-  parser_w_use_extended_syntax_for_objects,
-  parser_w_no_new_dispose_on_void_pointers,
-  parser_e_no_new_dispose_on_void_pointers,
-  parser_e_class_id_expected,
-  parser_e_no_type_not_allowed_here,
-  parser_e_methode_id_expected,
-  parser_e_header_dont_match_any_member,
-  parser_p_procedure_start,
-  parser_e_error_in_real,
-  parser_e_fail_only_in_constructor,
-  parser_e_no_paras_for_destructor,
-  parser_e_only_class_methods_via_class_ref,
-  parser_e_only_class_methods,
-  parser_e_case_mismatch,
-  parser_e_illegal_symbol_exported,
-  parser_w_should_use_override,
-  parser_e_nothing_to_be_overridden,
-  parser_e_no_procedure_to_access_property,
-  parser_w_stored_not_implemented,
-  parser_e_ill_property_access_sym,
-  parser_e_cant_access_protected_member,
-  parser_e_cant_access_private_member,
-  parser_w_overloaded_are_not_both_virtual,
-  parser_w_overloaded_are_not_both_non_virtual,
-  parser_e_overloaded_methodes_not_same_ret,
-  parser_e_dont_nest_export,
-  parser_e_methods_dont_be_export,
-  parser_e_call_by_ref_without_typeconv,
-  parser_e_no_super_class,
-  parser_e_self_not_in_method,
-  parser_e_generic_methods_only_in_methods,
-  parser_e_illegal_colon_qualifier,
-  parser_e_illegal_set_expr,
-  parser_e_pointer_to_class_expected,
-  parser_e_expr_have_to_be_constructor_call,
-  parser_e_expr_have_to_be_destructor_call,
-  parser_e_invalid_record_const,
-  parser_e_false_with_expr,
-  parser_e_void_function,
-  parser_e_constructors_always_objects,
-  parser_e_operator_not_overloaded,
-  parser_e_no_reraise_possible,
-  parser_e_no_new_or_dispose_for_classes,
-  parser_e_asm_incomp_with_function_return,
-  parser_e_procedure_overloading_is_off,
-  parser_e_overload_operator_failed,
-  parser_e_comparative_operator_return_boolean,
-  parser_e_only_virtual_methods_abstract,
-  parser_f_unsupported_feature,
-  parser_e_mix_of_classes_and_objects,
-  parser_w_unknown_proc_directive_ignored,
-  parser_e_absolute_only_one_var,
-  parser_e_absolute_only_to_var_or_const,
-  parser_e_initialized_only_one_var,
-  parser_e_abstract_no_definition,
-  parser_e_overloaded_must_be_all_global,
-  parser_w_virtual_without_constructor,
-  parser_m_macro_defined,
-  parser_m_macro_undefined,
-  parser_m_macro_set_to,
-  parser_i_compiling,
-  parser_u_parsing_interface,
-  parser_u_parsing_implementation,
-  parser_d_compiling_second_time,
-  parser_e_no_paras_allowed,
-  parser_e_no_property_found_to_override,
-  parser_e_only_one_default_property,
-  parser_e_property_need_paras,
-  parser_e_constructor_cannot_be_not_virtual,
-  parser_e_no_default_property_available,
-  parser_e_cant_have_published,
-  parser_e_forward_declaration_must_be_resolved,
-  parser_e_no_local_operator,
-  parser_e_proc_dir_not_allowed_in_interface,
-  parser_e_proc_dir_not_allowed_in_implementation,
-  parser_e_proc_dir_not_allowed_in_procvar,
-  parser_e_function_already_declared_public_forward,
-  parser_e_not_external_and_export,
-  parser_e_name_keyword_expected,
-  parser_w_not_supported_for_inline,
-  parser_w_inlining_disabled,
-  parser_i_writing_browser_log,
-  parser_h_maybe_deref_caret_missing,
-  parser_f_assembler_reader_not_supported,
-  parser_e_proc_dir_conflict,
-  parser_e_call_convention_dont_match_forward,
-  parser_e_register_calling_not_supported,
-  parser_e_property_cant_have_a_default_value,
-  parser_e_property_default_value_must_const,
-  parser_e_cant_publish_that,
-  parser_e_cant_publish_that_property,
-  parser_w_empty_import_name,
-  parser_e_empty_import_name,
-  parser_e_used_proc_name_changed,
-  parser_e_division_by_zero,
-  parser_e_invalid_float_operation,
-  parser_e_array_lower_less_than_upper_bound,
-  parser_e_string_larger_array,
-  parser_e_ill_msg_expr,
-  parser_e_ill_msg_param,
-  parser_e_duplicate_message_label,
-  parser_e_self_in_non_message_handler,
-  parser_e_threadvars_only_sg,
-  parser_f_direct_assembler_not_allowed,
-  parser_w_no_objpas_use_mode,
-  parser_e_no_object_override,
-  parser_e_cant_use_inittable_here,
-  parser_e_resourcestring_only_sg,
-  parser_e_exit_with_argument_not__possible,
-  parser_e_stored_property_must_be_boolean,
-  parser_e_ill_property_storage_sym,
-  parser_e_only_publishable_classes_can__be_published,
-  type_e_mismatch,
-  type_e_incompatible_types,
-  type_e_not_equal_types,
-  type_e_type_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_class_type_expected,
-  type_e_varid_or_typeid_expected,
-  type_e_cant_eval_constant_expr,
-  type_e_set_element_are_not_comp,
-  type_e_set_operation_unknown,
-  type_w_convert_real_2_comp,
-  type_h_use_div_for_int,
-  type_e_strict_var_string_violation,
-  type_e_succ_and_pred_enums_with_assign_not_possible,
-  type_e_cant_read_write_type,
-  type_e_typeconflict_in_set,
-  type_w_maybe_wrong_hi_lo,
-  type_e_integer_or_real_expr_expected,
-  type_e_wrong_type_in_array_constructor,
-  type_e_wrong_parameter_type,
-  type_e_no_method_and_procedure_not_compatible,
-  type_e_wrong_math_argument,
-  type_e_no_addr_of_constant,
-  type_e_argument_must_be_lvalue,
-  type_e_cannot_local_proc_to_procvar,
-  sym_e_id_not_found,
-  sym_f_internal_error_in_symtablestack,
-  sym_e_duplicate_id,
-  sym_h_duplicate_id_where,
-  sym_e_unknown_id,
-  sym_e_forward_not_resolved,
-  sym_f_id_already_typed,
-  sym_e_error_in_type_def,
-  sym_e_type_id_not_defined,
-  sym_e_forward_type_not_resolved,
-  sym_e_only_static_in_static,
-  sym_e_invalid_call_tvarsymmangledname,
-  sym_f_type_must_be_rec_or_class,
-  sym_e_no_instance_of_abstract_object,
-  sym_w_label_not_defined,
-  sym_e_ill_label_decl,
-  sym_e_goto_and_label_not_supported,
-  sym_e_label_not_found,
-  sym_e_id_is_no_label_id,
-  sym_e_label_already_defined,
-  sym_e_ill_type_decl_set,
-  sym_e_class_forward_not_resolved,
-  sym_h_para_identifier_not_used,
-  sym_n_local_identifier_not_used,
-  sym_e_set_expected,
-  sym_w_function_result_not_set,
-  sym_e_illegal_field,
-  sym_n_uninitialized_local_variable,
-  sym_n_uninitialized_variable,
-  sym_e_id_no_member,
-  sym_b_param_list,
-  sym_e_segment_too_large,
-  cg_e_break_not_allowed,
-  cg_e_continue_not_allowed,
-  cg_e_too_complex_expr,
-  cg_e_illegal_expression,
-  cg_e_invalid_integer,
-  cg_e_invalid_qualifier,
-  cg_e_upper_lower_than_lower,
-  cg_e_illegal_count_var,
-  cg_e_cant_choose_overload_function,
-  cg_e_parasize_too_big,
-  cg_e_illegal_type_conversion,
-  cg_d_pointer_to_longint_conv_not_portable,
-  cg_e_file_must_call_by_reference,
-  cg_e_cant_use_far_pointer_there,
-  cg_e_var_must_be_reference,
-  cg_e_dont_call_exported_direct,
-  cg_w_member_cd_call_from_method,
-  cg_n_inefficient_code,
-  cg_w_unreachable_code,
-  cg_e_stackframe_with_esp,
-  cg_e_cant_call_abstract_method,
-  cg_f_internal_error_in_getfloatreg,
-  cg_f_unknown_float_type,
-  cg_f_secondvecn_base_defined_twice,
-  cg_f_extended_cg68k_not_supported,
-  cg_f_32bit_not_supported_in_68000,
-  cg_f_internal_error_in_secondinline,
-  cg_d_register_weight,
-  cg_e_stacklimit_in_local_routine,
-  cg_d_stackframe_omited,
-  cg_e_unable_inline_object_methods,
-  cg_e_unable_inline_procvar,
-  cg_e_no_code_for_inline_stored,
-  cg_e_can_access_element_zero,
-  cg_e_include_not_implemented,
-  cg_e_cannot_call_cons_dest_inside_with,
-  cg_e_cannot_call_message_direct,
-  asmr_d_start_reading,
-  asmr_d_finish_reading,
-  asmr_e_none_label_contain_at,
-  asmr_w_override_op_not_supported,
-  asmr_e_building_record_offset,
-  asmr_e_offset_without_identifier,
-  asmr_e_type_without_identifier,
-  asmr_e_no_local_or_para_allowed,
-  asmr_e_need_offset,
-  asmr_e_cant_have_multiple_relocatable_symbols,
-  asmr_e_only_add_relocatable_symbol,
-  asmr_e_invalid_constant_expression,
-  asmr_e_relocatable_symbol_not_allowed,
-  asmr_e_invalid_reference_syntax,
-  asmr_e_local_symbol_not_allowed_as_ref,
-  asmr_e_wrong_base_index,
-  asmr_e_wrong_scale_factor,
-  asmr_e_multiple_index,
-  asmr_e_invalid_operand_type,
-  asmr_e_invalid_string_as_opcode_operand,
-  asmr_w_CODE_and_DATA_not_supported,
-  asmr_e_null_label_ref_not_allowed,
-  asmr_e_ev_zero_divide,
-  asmr_e_ev_stack_overflow,
-  asmr_e_ev_stack_underflow,
-  asmr_e_ev_invalid_number,
-  asmr_e_ev_invalid_op,
-  asmr_e_escape_seq_ignored,
-  asmr_e_invalid_symbol_ref,
-  asmr_w_fwait_emu_prob,
-  asmr_w_calling_overload_func,
-  asmr_e_unsupported_symbol_type,
-  asmr_e_constant_out_of_bounds,
-  asmr_e_error_converting_decimal,
-  asmr_e_error_converting_octal,
-  asmr_e_error_converting_binary,
-  asmr_e_error_converting_hexadecimal,
-  asmr_h_direct_global_to_mangled,
-  asmr_w_direct_global_is_overloaded_func,
-  asmr_e_cannot_use_SELF_outside_a_method,
-  asmr_e_cannot_use_OLDEBP_outside_nested_procedure,
-  asmr_e_void_function,
-  asmr_e_SEG_not_supported,
-  asmr_e_size_suffix_and_dest_dont_match,
-  asmr_w_size_suffix_and_dest_dont_match,
-  asmr_e_syntax_error,
-  asmr_e_invalid_opcode_and_operand,
-  asmr_e_syn_operand,
-  asmr_e_syn_constant,
-  asmr_e_invalid_string_expression,
-  asmr_w_const32bit_for_address,
-  asmr_e_invalid_or_missing_opcode,
-  asmr_e_invalid_prefix_and_opcode,
-  asmr_e_invalid_override_and_opcode,
-  asmr_e_too_many_operands,
-  asmr_w_near_ignored,
-  asmr_w_far_ignored,
-  asmr_e_dup_local_sym,
-  asmr_e_unknown_local_sym,
-  asmr_e_unknown_label_identifier,
-  asmr_e_invalid_fpu_register,
-  asmr_e_nor_not_supported,
-  asmr_w_modulo_not_supported,
-  asmr_e_invalid_float_const,
-  asmr_e_invalid_float_expr,
-  asmr_e_wrong_sym_type,
-  asmr_e_cannot_index_relative_var,
-  asmr_e_invalid_seg_override,
-  asmr_w_id_supposed_external,
-  asmr_e_string_not_allowed_as_const,
-  asmr_e_no_var_type_specified,
-  asmr_w_assembler_code_not_returned_to_text,
-  asmr_e_not_directive_or_local_symbol,
-  asmr_w_using_defined_as_local,
-  asmr_e_dollar_without_identifier,
-  asmr_w_32bit_const_for_address,
-  asmr_n_align_is_target_specific,
-  asmr_e_cannot_access_field_directly_for_parameters,
-  asmr_e_cannot_access_object_field_directly,
-  asmw_f_too_many_asm_files,
-  asmw_f_assembler_output_not_supported,
-  asmw_f_comp_not_supported,
-  asmw_f_direct_not_supported,
-  asmw_e_alloc_data_only_in_bss,
-  asmw_f_no_binary_writer_selected,
-  asmw_e_opcode_not_in_table,
-  asmw_e_invalid_opcode_and_operands,
-  asmw_e_16bit_not_supported,
-  asmw_e_invalid_effective_address,
-  asmw_e_immediate_or_reference_expected,
-  asmw_e_value_exceeds_bounds,
-  asmw_e_short_jmp_out_of_range,
-  exec_w_source_os_redefined,
-  exec_i_assembling_pipe,
-  exec_d_cant_create_asmfile,
-  exec_w_assembler_not_found,
-  exec_t_using_assembler,
-  exec_w_error_while_assembling,
-  exec_w_cant_call_assembler,
-  exec_i_assembling,
-  exec_i_assembling_smart,
-  exec_w_linker_not_found,
-  exec_t_using_linker,
-  exec_w_objfile_not_found,
-  exec_w_libfile_not_found,
-  exec_w_error_while_linking,
-  exec_w_cant_call_linker,
-  exec_i_linking,
-  exec_w_binder_not_found,
-  exec_w_ar_not_found,
-  exec_e_dll_not_supported,
-  exec_i_closing_script,
-  exec_w_res_not_found,
-  exec_i_compilingresource,
-  execinfo_f_cant_process_executable,
-  execinfo_f_cant_open_executable,
-  execinfo_x_codesize,
-  execinfo_x_initdatasize,
-  execinfo_x_uninitdatasize,
-  execinfo_x_stackreserve,
-  execinfo_x_stackcommit,
-  unit_t_unitsearch,
-  unit_t_ppu_loading,
-  unit_u_ppu_name,
-  unit_u_ppu_flags,
-  unit_u_ppu_crc,
-  unit_u_ppu_time,
-  unit_u_ppu_file_too_short,
-  unit_u_ppu_invalid_header,
-  unit_u_ppu_invalid_version,
-  unit_u_ppu_invalid_processor,
-  unit_u_ppu_invalid_target,
-  unit_u_ppu_source,
-  unit_u_ppu_write,
-  unit_f_ppu_cannot_write,
-  unit_f_ppu_read_error,
-  unit_f_ppu_read_unexpected_end,
-  unit_f_ppu_invalid_entry,
-  unit_f_ppu_dbx_count_problem,
-  unit_e_illegal_unit_name,
-  unit_f_too_much_units,
-  unit_f_circular_unit_reference,
-  unit_f_cant_compile_unit,
-  unit_f_cant_find_ppu,
-  unit_w_unit_name_error,
-  unit_f_unit_name_error,
-  unit_w_switch_us_missed,
-  unit_f_errors_in_unit,
-  unit_u_load_unit,
-  unit_u_recompile_crc_change,
-  unit_u_recompile_source_found_alone,
-  unit_u_recompile_staticlib_is_older,
-  unit_u_recompile_sharedlib_is_older,
-  unit_u_recompile_obj_and_asm_older,
-  unit_u_recompile_obj_older_than_asm,
-  unit_u_start_parse_interface,
-  unit_u_start_parse_implementation,
-  unit_u_second_load_unit,
-  unit_u_check_time,
-  option_usage,
-  option_only_one_source_support,
-  option_def_only_for_os2,
-  option_no_nested_response_file,
-  option_no_source_found,
-  option_illegal_para,
-  option_help_pages_para,
-  option_too_many_cfg_files,
-  option_unable_open_file,
-  option_reading_further_from,
-  option_target_is_already_set,
-  option_no_shared_lib_under_dos,
-  option_too_many_ifdef,
-  option_too_many_endif,
-  option_too_less_endif,
-  option_no_debug_support,
-  option_no_debug_support_recompile_fpc,
-  option_obsolete_switch,
-  option_obsolete_switch_use_new,
-  option_switch_bin_to_src_assembler,
-  option_logo_start,
-  option_logo_end,
-  option_info_start,
-  option_info1,
-  option_info2,
-  option_info3,
-  option_info4,
-  option_info5,
-  option_info6,
-  option_info7,
-  option_info8,
-  option_info_end,
-  ol_begin,
-  ol001,
-  ol002,
-  ol003,
-  ol004,
-  ol005,
-  ol006,
-  ol007,
-  ol008,
-  ol009,
-  ol010,
-  ol011,
-  ol012,
-  ol013,
-  ol014,
-  ol015,
-  ol016,
-  ol017,
-  ol018,
-  ol019,
-  ol020,
-  ol021,
-  ol022,
-  ol023,
-  ol024,
-  ol025,
-  ol026,
-  ol027,
-  ol028,
-  ol029,
-  ol030,
-  ol031,
-  ol032,
-  ol033,
-  ol034,
-  ol035,
-  ol036,
-  ol037,
-  ol038,
-  ol039,
-  ol040,
-  ol041,
-  ol042,
-  ol043,
-  ol044,
-  ol045,
-  ol046,
-  ol047,
-  ol048,
-  ol049,
-  ol050,
-  ol051,
-  ol052,
-  ol053,
-  ol054,
-  ol055,
-  ol056,
-  ol057,
-  ol058,
-  ol059,
-  ol060,
-  ol061,
-  ol062,
-  ol063,
-  ol064,
-  ol065,
-  ol066,
-  ol067,
-  ol068,
-  ol069,
-  ol070,
-  ol071,
-  ol072,
-  ol073,
-  ol074,
-  ol075,
-  ol076,
-  ol077,
-  ol078,
-  ol079,
-  ol080,
-  ol081,
-  ol082,
-  ol083,
-  ol084,
-  ol085,
-  ol086,
-  ol087,
-  ol088,
-  ol089,
-  ol090,
-  ol091,
-  ol092,
-  ol093,
-  ol094,
-  ol095,
-  ol096,
-  ol097,
-  ol098,
-  ol099,
-  ol100,
-  ol101,
-  ol102,
-  ol103,
-  ol104,
-  ol105,
-  ol106,
-  ol107,
-  ol108,
-  ol109,
-  ol110,
-  ol111,
-  ol112,
-  ol113,
-  ol114,
-  ol115,
-  ol116,
-  ol117,
-  ol118,
-  ol119,
-  ol120,
-  ol121,
-  ol122,
-  ol123,
-  ol124,
-  ol125,
-  ol126,
-  ol127,
-  ol128,
-  ol129,
-  ol130,
-  ol131,
-  ol132,
-  ol133,
-  ol134,
-  ol135,
-  ol136,
-  ol137,
-  ol138,
-  ol139,
-  ol140,
-  ol141,
-  ol_end,
-endmsgconst
-);
+type tmsgconst=(
+  general_t_compilername,
+  general_d_sourceos,
+  general_i_targetos,
+  general_t_exepath,
+  general_t_unitpath,
+  general_t_includepath,
+  general_t_librarypath,
+  general_t_objectpath,
+  general_i_abslines_compiled,
+  general_f_no_memory_left,
+  general_i_writingresourcefile,
+  general_e_errorwritingresourcefile,
+  scan_f_end_of_file,
+  scan_f_string_exceeds_line,
+  scan_f_illegal_char,
+  scan_f_syn_expected,
+  scan_t_start_include_file,
+  scan_w_comment_level,
+  scan_n_far_directive_ignored,
+  scan_n_stack_check_global_under_linux,
+  scan_n_ignored_switch,
+  scan_w_illegal_switch,
+  scan_w_switch_is_global,
+  scan_e_illegal_char_const,
+  scan_f_cannot_open_input,
+  scan_f_cannot_open_includefile,
+  scan_e_too_much_endifs,
+  scan_w_only_pack_records,
+  scan_w_only_pack_enum,
+  scan_e_endif_expected,
+  scan_e_preproc_syntax_error,
+  scan_e_error_in_preproc_expr,
+  scan_w_marco_cut_after_255_chars,
+  scan_e_endif_without_if,
+  scan_f_user_defined,
+  scan_e_user_defined,
+  scan_w_user_defined,
+  scan_n_user_defined,
+  scan_h_user_defined,
+  scan_i_user_defined,
+  scan_e_keyword_cant_be_a_macro,
+  scan_f_macro_buffer_overflow,
+  scan_w_macro_deep_ten,
+  scan_e_wrong_styled_switch,
+  scan_d_handling_switch,
+  scan_c_endif_found,
+  scan_c_ifdef_found,
+  scan_c_ifopt_found,
+  scan_c_if_found,
+  scan_c_ifndef_found,
+  scan_c_else_found,
+  scan_c_skipping_until,
+  scan_i_press_enter,
+  scan_w_unsupported_switch,
+  scan_w_illegal_directive,
+  scan_t_back_in,
+  scan_w_unsupported_app_type,
+  scan_w_app_type_not_support,
+  scan_w_unsupported_asmmode_specifier,
+  scan_w_no_asm_reader_switch_inside_asm,
+  scan_e_wrong_switch_toggle,
+  scan_e_resourcefiles_not_supported,
+  scan_w_include_env_not_found,
+  parser_e_syntax_error,
+  parser_w_proc_far_ignored,
+  parser_w_proc_near_ignored,
+  parser_w_proc_register_ignored,
+  parser_e_no_dll_file_specified,
+  parser_e_export_name_double,
+  parser_e_export_ordinal_double,
+  parser_e_export_invalid_index,
+  parser_e_constructorname_must_be_init,
+  parser_e_destructorname_must_be_done,
+  parser_e_illegal_open_parameter,
+  parser_e_proc_inline_not_supported,
+  parser_w_priv_meth_not_virtual,
+  parser_w_constructor_should_be_public,
+  parser_w_destructor_should_be_public,
+  parser_n_only_one_destructor,
+  parser_e_no_local_objects,
+  parser_f_no_anonym_objects,
+  parser_object_has_no_vmt,
+  parser_e_illegal_parameter_list,
+  parser_e_wrong_parameter_type,
+  parser_e_wrong_parameter_size,
+  parser_e_overloaded_no_procedure,
+  parser_e_overloaded_have_same_parameters,
+  parser_e_header_dont_match_forward,
+  parser_e_header_different_var_names,
+  parser_n_duplicate_enum,
+  parser_n_interface_name_diff_implementation_name,
+  parser_e_no_with_for_variable_in_other_segments,
+  parser_e_too_much_lexlevel,
+  parser_e_range_check_error,
+  parser_w_range_check_error,
+  parser_e_double_caselabel,
+  parser_e_case_lower_less_than_upper_bound,
+  parser_e_type_const_not_possible,
+  parser_e_no_overloaded_procvars,
+  parser_e_invalid_string_size,
+  parser_w_use_extended_syntax_for_objects,
+  parser_w_no_new_dispose_on_void_pointers,
+  parser_e_no_new_dispose_on_void_pointers,
+  parser_e_class_id_expected,
+  parser_e_no_type_not_allowed_here,
+  parser_e_methode_id_expected,
+  parser_e_header_dont_match_any_member,
+  parser_p_procedure_start,
+  parser_e_error_in_real,
+  parser_e_fail_only_in_constructor,
+  parser_e_no_paras_for_destructor,
+  parser_e_only_class_methods_via_class_ref,
+  parser_e_only_class_methods,
+  parser_e_case_mismatch,
+  parser_e_illegal_symbol_exported,
+  parser_w_should_use_override,
+  parser_e_nothing_to_be_overridden,
+  parser_e_no_procedure_to_access_property,
+  parser_w_stored_not_implemented,
+  parser_e_ill_property_access_sym,
+  parser_e_cant_access_protected_member,
+  parser_e_cant_access_private_member,
+  parser_w_overloaded_are_not_both_virtual,
+  parser_w_overloaded_are_not_both_non_virtual,
+  parser_e_overloaded_methodes_not_same_ret,
+  parser_e_dont_nest_export,
+  parser_e_methods_dont_be_export,
+  parser_e_call_by_ref_without_typeconv,
+  parser_e_no_super_class,
+  parser_e_self_not_in_method,
+  parser_e_generic_methods_only_in_methods,
+  parser_e_illegal_colon_qualifier,
+  parser_e_illegal_set_expr,
+  parser_e_pointer_to_class_expected,
+  parser_e_expr_have_to_be_constructor_call,
+  parser_e_expr_have_to_be_destructor_call,
+  parser_e_invalid_record_const,
+  parser_e_false_with_expr,
+  parser_e_void_function,
+  parser_e_constructors_always_objects,
+  parser_e_operator_not_overloaded,
+  parser_e_no_reraise_possible,
+  parser_e_no_new_or_dispose_for_classes,
+  parser_e_asm_incomp_with_function_return,
+  parser_e_procedure_overloading_is_off,
+  parser_e_overload_operator_failed,
+  parser_e_comparative_operator_return_boolean,
+  parser_e_only_virtual_methods_abstract,
+  parser_f_unsupported_feature,
+  parser_e_mix_of_classes_and_objects,
+  parser_w_unknown_proc_directive_ignored,
+  parser_e_absolute_only_one_var,
+  parser_e_absolute_only_to_var_or_const,
+  parser_e_initialized_only_one_var,
+  parser_e_abstract_no_definition,
+  parser_e_overloaded_must_be_all_global,
+  parser_w_virtual_without_constructor,
+  parser_m_macro_defined,
+  parser_m_macro_undefined,
+  parser_m_macro_set_to,
+  parser_i_compiling,
+  parser_u_parsing_interface,
+  parser_u_parsing_implementation,
+  parser_d_compiling_second_time,
+  parser_e_no_paras_allowed,
+  parser_e_no_property_found_to_override,
+  parser_e_only_one_default_property,
+  parser_e_property_need_paras,
+  parser_e_constructor_cannot_be_not_virtual,
+  parser_e_no_default_property_available,
+  parser_e_cant_have_published,
+  parser_e_forward_declaration_must_be_resolved,
+  parser_e_no_local_operator,
+  parser_e_proc_dir_not_allowed_in_interface,
+  parser_e_proc_dir_not_allowed_in_implementation,
+  parser_e_proc_dir_not_allowed_in_procvar,
+  parser_e_function_already_declared_public_forward,
+  parser_e_not_external_and_export,
+  parser_e_name_keyword_expected,
+  parser_w_not_supported_for_inline,
+  parser_w_inlining_disabled,
+  parser_i_writing_browser_log,
+  parser_h_maybe_deref_caret_missing,
+  parser_f_assembler_reader_not_supported,
+  parser_e_proc_dir_conflict,
+  parser_e_call_convention_dont_match_forward,
+  parser_e_register_calling_not_supported,
+  parser_e_property_cant_have_a_default_value,
+  parser_e_property_default_value_must_const,
+  parser_e_cant_publish_that,
+  parser_e_cant_publish_that_property,
+  parser_w_empty_import_name,
+  parser_e_empty_import_name,
+  parser_e_used_proc_name_changed,
+  parser_e_division_by_zero,
+  parser_e_invalid_float_operation,
+  parser_e_array_lower_less_than_upper_bound,
+  parser_e_string_larger_array,
+  parser_e_ill_msg_expr,
+  parser_e_ill_msg_param,
+  parser_e_duplicate_message_label,
+  parser_e_self_in_non_message_handler,
+  parser_e_threadvars_only_sg,
+  parser_f_direct_assembler_not_allowed,
+  parser_w_no_objpas_use_mode,
+  parser_e_no_object_override,
+  parser_e_cant_use_inittable_here,
+  parser_e_resourcestring_only_sg,
+  parser_e_exit_with_argument_not__possible,
+  parser_e_stored_property_must_be_boolean,
+  parser_e_ill_property_storage_sym,
+  parser_e_only_publishable_classes_can__be_published,
+  type_e_mismatch,
+  type_e_incompatible_types,
+  type_e_not_equal_types,
+  type_e_type_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_class_type_expected,
+  type_e_varid_or_typeid_expected,
+  type_e_cant_eval_constant_expr,
+  type_e_set_element_are_not_comp,
+  type_e_set_operation_unknown,
+  type_w_convert_real_2_comp,
+  type_h_use_div_for_int,
+  type_e_strict_var_string_violation,
+  type_e_succ_and_pred_enums_with_assign_not_possible,
+  type_e_cant_read_write_type,
+  type_e_typeconflict_in_set,
+  type_w_maybe_wrong_hi_lo,
+  type_e_integer_or_real_expr_expected,
+  type_e_wrong_type_in_array_constructor,
+  type_e_wrong_parameter_type,
+  type_e_no_method_and_procedure_not_compatible,
+  type_e_wrong_math_argument,
+  type_e_no_addr_of_constant,
+  type_e_argument_must_be_lvalue,
+  type_e_cannot_local_proc_to_procvar,
+  type_e_no_assign_to_addr,
+  sym_e_id_not_found,
+  sym_f_internal_error_in_symtablestack,
+  sym_e_duplicate_id,
+  sym_h_duplicate_id_where,
+  sym_e_unknown_id,
+  sym_e_forward_not_resolved,
+  sym_f_id_already_typed,
+  sym_e_error_in_type_def,
+  sym_e_type_id_not_defined,
+  sym_e_forward_type_not_resolved,
+  sym_e_only_static_in_static,
+  sym_e_invalid_call_tvarsymmangledname,
+  sym_f_type_must_be_rec_or_class,
+  sym_e_no_instance_of_abstract_object,
+  sym_w_label_not_defined,
+  sym_e_ill_label_decl,
+  sym_e_goto_and_label_not_supported,
+  sym_e_label_not_found,
+  sym_e_id_is_no_label_id,
+  sym_e_label_already_defined,
+  sym_e_ill_type_decl_set,
+  sym_e_class_forward_not_resolved,
+  sym_h_para_identifier_not_used,
+  sym_n_local_identifier_not_used,
+  sym_e_set_expected,
+  sym_w_function_result_not_set,
+  sym_e_illegal_field,
+  sym_n_uninitialized_local_variable,
+  sym_n_uninitialized_variable,
+  sym_e_id_no_member,
+  sym_b_param_list,
+  sym_e_segment_too_large,
+  cg_e_break_not_allowed,
+  cg_e_continue_not_allowed,
+  cg_e_too_complex_expr,
+  cg_e_illegal_expression,
+  cg_e_invalid_integer,
+  cg_e_invalid_qualifier,
+  cg_e_upper_lower_than_lower,
+  cg_e_illegal_count_var,
+  cg_e_cant_choose_overload_function,
+  cg_e_parasize_too_big,
+  cg_e_illegal_type_conversion,
+  cg_d_pointer_to_longint_conv_not_portable,
+  cg_e_file_must_call_by_reference,
+  cg_e_cant_use_far_pointer_there,
+  cg_e_var_must_be_reference,
+  cg_e_dont_call_exported_direct,
+  cg_w_member_cd_call_from_method,
+  cg_n_inefficient_code,
+  cg_w_unreachable_code,
+  cg_e_stackframe_with_esp,
+  cg_e_cant_call_abstract_method,
+  cg_f_internal_error_in_getfloatreg,
+  cg_f_unknown_float_type,
+  cg_f_secondvecn_base_defined_twice,
+  cg_f_extended_cg68k_not_supported,
+  cg_f_32bit_not_supported_in_68000,
+  cg_f_internal_error_in_secondinline,
+  cg_d_register_weight,
+  cg_e_stacklimit_in_local_routine,
+  cg_d_stackframe_omited,
+  cg_e_unable_inline_object_methods,
+  cg_e_unable_inline_procvar,
+  cg_e_no_code_for_inline_stored,
+  cg_e_can_access_element_zero,
+  cg_e_include_not_implemented,
+  cg_e_cannot_call_cons_dest_inside_with,
+  cg_e_cannot_call_message_direct,
+  asmr_d_start_reading,
+  asmr_d_finish_reading,
+  asmr_e_none_label_contain_at,
+  asmr_w_override_op_not_supported,
+  asmr_e_building_record_offset,
+  asmr_e_offset_without_identifier,
+  asmr_e_type_without_identifier,
+  asmr_e_no_local_or_para_allowed,
+  asmr_e_need_offset,
+  asmr_e_cant_have_multiple_relocatable_symbols,
+  asmr_e_only_add_relocatable_symbol,
+  asmr_e_invalid_constant_expression,
+  asmr_e_relocatable_symbol_not_allowed,
+  asmr_e_invalid_reference_syntax,
+  asmr_e_local_symbol_not_allowed_as_ref,
+  asmr_e_wrong_base_index,
+  asmr_e_wrong_scale_factor,
+  asmr_e_multiple_index,
+  asmr_e_invalid_operand_type,
+  asmr_e_invalid_string_as_opcode_operand,
+  asmr_w_CODE_and_DATA_not_supported,
+  asmr_e_null_label_ref_not_allowed,
+  asmr_e_ev_zero_divide,
+  asmr_e_ev_stack_overflow,
+  asmr_e_ev_stack_underflow,
+  asmr_e_ev_invalid_number,
+  asmr_e_ev_invalid_op,
+  asmr_e_escape_seq_ignored,
+  asmr_e_invalid_symbol_ref,
+  asmr_w_fwait_emu_prob,
+  asmr_w_calling_overload_func,
+  asmr_e_unsupported_symbol_type,
+  asmr_e_constant_out_of_bounds,
+  asmr_e_error_converting_decimal,
+  asmr_e_error_converting_octal,
+  asmr_e_error_converting_binary,
+  asmr_e_error_converting_hexadecimal,
+  asmr_h_direct_global_to_mangled,
+  asmr_w_direct_global_is_overloaded_func,
+  asmr_e_cannot_use_SELF_outside_a_method,
+  asmr_e_cannot_use_OLDEBP_outside_nested_procedure,
+  asmr_e_void_function,
+  asmr_e_SEG_not_supported,
+  asmr_e_size_suffix_and_dest_dont_match,
+  asmr_w_size_suffix_and_dest_dont_match,
+  asmr_e_syntax_error,
+  asmr_e_invalid_opcode_and_operand,
+  asmr_e_syn_operand,
+  asmr_e_syn_constant,
+  asmr_e_invalid_string_expression,
+  asmr_w_const32bit_for_address,
+  asmr_e_invalid_or_missing_opcode,
+  asmr_e_invalid_prefix_and_opcode,
+  asmr_e_invalid_override_and_opcode,
+  asmr_e_too_many_operands,
+  asmr_w_near_ignored,
+  asmr_w_far_ignored,
+  asmr_e_dup_local_sym,
+  asmr_e_unknown_local_sym,
+  asmr_e_unknown_label_identifier,
+  asmr_e_invalid_fpu_register,
+  asmr_e_nor_not_supported,
+  asmr_w_modulo_not_supported,
+  asmr_e_invalid_float_const,
+  asmr_e_invalid_float_expr,
+  asmr_e_wrong_sym_type,
+  asmr_e_cannot_index_relative_var,
+  asmr_e_invalid_seg_override,
+  asmr_w_id_supposed_external,
+  asmr_e_string_not_allowed_as_const,
+  asmr_e_no_var_type_specified,
+  asmr_w_assembler_code_not_returned_to_text,
+  asmr_e_not_directive_or_local_symbol,
+  asmr_w_using_defined_as_local,
+  asmr_e_dollar_without_identifier,
+  asmr_w_32bit_const_for_address,
+  asmr_n_align_is_target_specific,
+  asmr_e_cannot_access_field_directly_for_parameters,
+  asmr_e_cannot_access_object_field_directly,
+  asmw_f_too_many_asm_files,
+  asmw_f_assembler_output_not_supported,
+  asmw_f_comp_not_supported,
+  asmw_f_direct_not_supported,
+  asmw_e_alloc_data_only_in_bss,
+  asmw_f_no_binary_writer_selected,
+  asmw_e_opcode_not_in_table,
+  asmw_e_invalid_opcode_and_operands,
+  asmw_e_16bit_not_supported,
+  asmw_e_invalid_effective_address,
+  asmw_e_immediate_or_reference_expected,
+  asmw_e_value_exceeds_bounds,
+  asmw_e_short_jmp_out_of_range,
+  exec_w_source_os_redefined,
+  exec_i_assembling_pipe,
+  exec_d_cant_create_asmfile,
+  exec_w_assembler_not_found,
+  exec_t_using_assembler,
+  exec_w_error_while_assembling,
+  exec_w_cant_call_assembler,
+  exec_i_assembling,
+  exec_i_assembling_smart,
+  exec_w_linker_not_found,
+  exec_t_using_linker,
+  exec_w_objfile_not_found,
+  exec_w_libfile_not_found,
+  exec_w_error_while_linking,
+  exec_w_cant_call_linker,
+  exec_i_linking,
+  exec_w_binder_not_found,
+  exec_w_ar_not_found,
+  exec_e_dll_not_supported,
+  exec_i_closing_script,
+  exec_w_res_not_found,
+  exec_i_compilingresource,
+  execinfo_f_cant_process_executable,
+  execinfo_f_cant_open_executable,
+  execinfo_x_codesize,
+  execinfo_x_initdatasize,
+  execinfo_x_uninitdatasize,
+  execinfo_x_stackreserve,
+  execinfo_x_stackcommit,
+  unit_t_unitsearch,
+  unit_t_ppu_loading,
+  unit_u_ppu_name,
+  unit_u_ppu_flags,
+  unit_u_ppu_crc,
+  unit_u_ppu_time,
+  unit_u_ppu_file_too_short,
+  unit_u_ppu_invalid_header,
+  unit_u_ppu_invalid_version,
+  unit_u_ppu_invalid_processor,
+  unit_u_ppu_invalid_target,
+  unit_u_ppu_source,
+  unit_u_ppu_write,
+  unit_f_ppu_cannot_write,
+  unit_f_ppu_read_error,
+  unit_f_ppu_read_unexpected_end,
+  unit_f_ppu_invalid_entry,
+  unit_f_ppu_dbx_count_problem,
+  unit_e_illegal_unit_name,
+  unit_f_too_much_units,
+  unit_f_circular_unit_reference,
+  unit_f_cant_compile_unit,
+  unit_f_cant_find_ppu,
+  unit_w_unit_name_error,
+  unit_f_unit_name_error,
+  unit_w_switch_us_missed,
+  unit_f_errors_in_unit,
+  unit_u_load_unit,
+  unit_u_recompile_crc_change,
+  unit_u_recompile_source_found_alone,
+  unit_u_recompile_staticlib_is_older,
+  unit_u_recompile_sharedlib_is_older,
+  unit_u_recompile_obj_and_asm_older,
+  unit_u_recompile_obj_older_than_asm,
+  unit_u_start_parse_interface,
+  unit_u_start_parse_implementation,
+  unit_u_second_load_unit,
+  unit_u_check_time,
+  option_usage,
+  option_only_one_source_support,
+  option_def_only_for_os2,
+  option_no_nested_response_file,
+  option_no_source_found,
+  option_illegal_para,
+  option_help_pages_para,
+  option_too_many_cfg_files,
+  option_unable_open_file,
+  option_reading_further_from,
+  option_target_is_already_set,
+  option_no_shared_lib_under_dos,
+  option_too_many_ifdef,
+  option_too_many_endif,
+  option_too_less_endif,
+  option_no_debug_support,
+  option_no_debug_support_recompile_fpc,
+  option_obsolete_switch,
+  option_obsolete_switch_use_new,
+  option_switch_bin_to_src_assembler,
+  option_logo_start,
+  option_logo_end,
+  option_info_start,
+  option_info1,
+  option_info2,
+  option_info3,
+  option_info4,
+  option_info5,
+  option_info6,
+  option_info7,
+  option_info8,
+  option_info_end,
+  ol_begin,
+  ol001,
+  ol002,
+  ol003,
+  ol004,
+  ol005,
+  ol006,
+  ol007,
+  ol008,
+  ol009,
+  ol010,
+  ol011,
+  ol012,
+  ol013,
+  ol014,
+  ol015,
+  ol016,
+  ol017,
+  ol018,
+  ol019,
+  ol020,
+  ol021,
+  ol022,
+  ol023,
+  ol024,
+  ol025,
+  ol026,
+  ol027,
+  ol028,
+  ol029,
+  ol030,
+  ol031,
+  ol032,
+  ol033,
+  ol034,
+  ol035,
+  ol036,
+  ol037,
+  ol038,
+  ol039,
+  ol040,
+  ol041,
+  ol042,
+  ol043,
+  ol044,
+  ol045,
+  ol046,
+  ol047,
+  ol048,
+  ol049,
+  ol050,
+  ol051,
+  ol052,
+  ol053,
+  ol054,
+  ol055,
+  ol056,
+  ol057,
+  ol058,
+  ol059,
+  ol060,
+  ol061,
+  ol062,
+  ol063,
+  ol064,
+  ol065,
+  ol066,
+  ol067,
+  ol068,
+  ol069,
+  ol070,
+  ol071,
+  ol072,
+  ol073,
+  ol074,
+  ol075,
+  ol076,
+  ol077,
+  ol078,
+  ol079,
+  ol080,
+  ol081,
+  ol082,
+  ol083,
+  ol084,
+  ol085,
+  ol086,
+  ol087,
+  ol088,
+  ol089,
+  ol090,
+  ol091,
+  ol092,
+  ol093,
+  ol094,
+  ol095,
+  ol096,
+  ol097,
+  ol098,
+  ol099,
+  ol100,
+  ol101,
+  ol102,
+  ol103,
+  ol104,
+  ol105,
+  ol106,
+  ol107,
+  ol108,
+  ol109,
+  ol110,
+  ol111,
+  ol112,
+  ol113,
+  ol114,
+  ol115,
+  ol116,
+  ol117,
+  ol118,
+  ol119,
+  ol120,
+  ol121,
+  ol122,
+  ol123,
+  ol124,
+  ol125,
+  ol126,
+  ol127,
+  ol128,
+  ol129,
+  ol130,
+  ol131,
+  ol132,
+  ol133,
+  ol134,
+  ol135,
+  ol136,
+  ol137,
+  ol138,
+  ol139,
+  ol140,
+  ol141,
+  ol_end,
+endmsgconst
+);

+ 672 - 671
compiler/msgtxt.inc

@@ -1,671 +1,672 @@
-{$ifdef Delphi}
-const msgtxt : array[0..000101] of string[240]=(
-{$else Delphi}
-const msgtxt : array[0..000101,1..240] of char=(
-{$endif Delphi}
-  'T_Compiler: $1'#000+
-  'D_Compiler OS: $1'#000+
-  'I_Target OS: $1'#000+
-  'T_Using executable path: $1'#000+
-  'T_Using unit path: $1'#000+
-  'T_Using include path: $1'#000+
-  'T_Using library path: $1'#000+
-  'T_Using object path: $1'#000+
-  'I_$1 Lines compiled, $2 sec'#000+
-  'F_No memory left'#000+
-  'I_Writing Resource Str','ing Table file: $1'#000+
-  'E_Writing Resource String Table file: $1'#000+
-  'F_Unexpected end of file'#000+
-  'F_String exceeds line'#000+
-  'F_illegal character'#000+
-  'F_Syntax error, $1 expected but $2 found'#000+
-  'T_Start reading includefile $1'#000+
-  'W_Comment level $1 found'#000+
-  'N_$F directive (','FAR) ignored'#000+
-  'N_Stack check is global under Linux'#000+
-  'N_Ignored compiler switch $1'#000+
-  'W_Illegal compiler switch $1'#000+
-  'W_This compiler switch has a global effect'#000+
-  'E_Illegal char constant'#000+
-  'F_Can'#039't open file $1'#000+
-  'F_Can'#039't open include file $1'#000+
-  'E_Too many $ENDI','Fs or $ELSEs'#000+
-  'W_Records fields can be aligned to 1,2,4 or 16 bytes only'#000+
-  'W_Enumerated can be saved in 1,2 or 4 bytes only'#000+
-  'E_$ENDIF expected for $1 $2 defined in line $3'#000+
-  'E_Syntax error while parsing a conditional compiling expression'#000+
-  'E_Evaluat','ing a conditional compiling expression'#000+
-  'W_Macro contents is cut after char 255 to evalute expression'#000+
-  'E_ENDIF without IF(N)DEF'#000+
-  'F_User defined: $1'#000+
-  'E_User defined: $1'#000+
-  'W_User defined: $1'#000+
-  'N_User defined: $1'#000+
-  'H_User defined: $1'#000+
-  'I_User defined: $1'#000+
-  'E','_Keyword redefined as macro has no effect'#000+
-  'F_Macro buffer overflow while reading or expanding a macro'#000+
-  'W_Extension of macros exceeds a deep of 16.'#000+
-  'E_compiler switches aren'#039't allowed in (* ... *) styled comments'#000+
-  'D_Handling switch "$1"'#000+
-  'C_ENDIF ','$1 found'#000+
-  'C_IFDEF $1 found, $2'#000+
-  'C_IFOPT $1 found, $2'#000+
-  'C_IF $1 found, $2'#000+
-  'C_IFNDEF $1 found, $2'#000+
-  'C_ELSE $1 found, $2'#000+
-  'C_Skipping until...'#000+
-  'I_Press <return> to continue'#000+
-  'W_Unsupported switch $1'#000+
-  'W_Illegal compiler directive $1'#000+
-  'T_Back in $1'#000+
-  'W_Unsupport','ed application type: $1'#000+
-  'W_APPTYPE isn'#039't support by the target OS'#000+
-  'W_Unsupported assembler style specified $1'#000+
-  'W_ASM reader switch is not possible inside asm statement, $1 will be e'+
-  'ffective only for next'#000+
-  'E_Wrong switch toggle, use ON/OFF or +/','-'#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+
-  'W_Procedure type FAR ignored'#000+
-  'W_Procedure type NEAR ignored'#000+
-  'W_Procedure type REGISTER ignored'#000+
-  'E_No DLL File specif','ied'#000+
-  'E_Duplicate exported function name $1'#000+
-  'E_Duplicate exported function index $1'#000+
-  'E_Invalid index for exported function'#000+
-  'E_Constructor name must be INIT'#000+
-  'E_Destructor name must be DONE'#000+
-  'E_Illegal open parameter'#000+
-  'E_Procedure type INLINE not suppo','rted'#000+
-  'W_Private methods shouldn'#039't be VIRTUAL'#000+
-  'W_Constructor should be public'#000+
-  'W_Destructor should be public'#000+
-  'N_Class should have one destructor only'#000+
-  'E_Local class definitions are not allowed'#000+
-  'F_Anonym class definitions are not allowed'#000+
-  'E_The obje','ct $1 has no VMT'#000+
-  'E_Illegal parameter list'#000+
-  'E_Wrong parameter type specified for arg no. $1'#000+
-  'E_Wrong amount of parameters specified'#000+
-  'E_overloaded identifier $1 isn'#039't a function'#000+
-  'E_overloaded functions have the same parameter list'#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_Interface and implementation names are different $1 => $2'#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+
-  'W_range check error while evaluating constants'#000+
-  'E_duplicate case label'#000+
-  'E_Upper bound of case range is less than lower bound'#000,
-  'E_typed constants of classes 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+
-  'W_use extended syntax of NEW and DISPOSE for instances of objects'#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_type identifier not allowed here'#000+
-  'E_method identifier expected'#000+
-  'E_function header doesn'#039't match any method of th','is class'#000+
-  'P_procedure/function $1'#000+
-  'E_Illegal floating point constant'#000+
-  'E_FAIL can be used in constructors only'#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 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+
-  'W_An inherited method is hidden by $1'#000+
-  'E_There is no method in an ancestor class to be overridden: $1'#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_Cannot access a protected 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+
-  'E_overloaded methods which are virtual must have the same return type:'+
-  ' $1'#000+
-  'E_EXPORT declared functions can'#039't be nested'#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_SELF is only allowed in methods'#000+
-  'E_methods can be only in other methods called direct with type identif'+
-  'ier of the class'#000+
-  'E_Illegal use of '#039':'#039#000+
-  'E_range che','ck error in set constructor or duplicate set element'#000+
-  'E_Pointer to object expected'#000+
-  'E_Expression must be constructor call'#000+
-  'E_Expression must be destructor call'#000+
-  'E_Illegal order of record elements'#000+
-  'E_Expression type must be class or record type'#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_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_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_Comparative operator must return a boolean value'#000+
-  'E_Only virtual methods can be abstract'#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+
-  'E_absolute can only be associated to ONE variable'#000+
-  'E_absolute can only be associated a var or const'#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+
-  'W_Virtual methods are used without a constructor in $1'#000+
-  'M_Macro defined: $1'#000+
-  'M_Macro undefined: $1'#000+
-  'M_Macro $','1 set to $2'#000+
-  'I_Compiling $1'#000+
-  'U_Parsing interface of unit $1'#000+
-  'U_Parsing implementation of $1'#000+
-  'D_Compiling $1 for the second time'#000+
-  'E_Array properties aren'#039't allowed at this point'#000+
-  'E_No property found to override'#000+
-  'E_Only one default property is allow','ed, found inherited default prop'+
-  'erty in class $1'#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_The class can'#039't have a published section, us','e 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_Procedure directive $1 not allowed in interface section'#000+
-  'E_Procedure directive $1 not allowed in implem','entation section'#000+
-  'E_Procedure directive $1 not allowed in procvar declaration'#000+
-  'E_Function is already declared Public/Forward $1'#000+
-  'E_Can'#039't use both EXPORT and EXTERNAL'#000+
-  'E_NAME keyword expected'#000+
-  'W_$1 not yet supported inside inline procedure/functi','on'#000+
-  'W_Inlining disabled'#000+
-  'I_Writing Browser log $1'#000+
-  'H_may be pointer dereference is missing'#000+
-  'F_Selected assembler reader not supported'#000+
-  'E_Procedure directive $1 has conflicts with other directives'#000+
-  'E_Calling convention doesn'#039't match forward'#000+
-  'E_Regi','ster calling (fastcall) not supported'#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_That kind of property can'#039't be published'#000+
-  'W_Empty import name s','pecified'#000+
-  'W_Empty import name specified'#000+
-  'E_Function internal name changed after use of function'#000+
-  'E_Division by zero'#000+
-  'E_Invalid floating point operation'#000+
-  'E_Upper bound of range is less than lower bound'#000+
-  'E_string length is larger than array of char',' length'#000+
-  'E_Illegal expression after message directive'#000+
-  'E_Message handlers can take only one call by ref. parameter'#000+
-  'E_Duplicate message label: $1'#000+
-  'E_Self can be only an explicit parameter in message handlers'#000+
-  'E_Threadvars can be only static or g','lobal'#000+
-  'F_Direct assembler not supported for binary output format'#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_Data types which requires initialization/finalization can'#039't ','be'+
-  ' used in variant records'#000+
-  'E_Resourcestrings can be only static or global'#000+
-  'E_Exit with argument can'#039't be used here'#000+
-  'E_The type of the storage symbol must be boolean'#000+
-  'E_This symbol isn'#039't allowed as storage symbol'#000+
-  'E_Only class which are compiled',' in $M+ mode can be published'#000+
-  'E_Type mismatch'#000+
-  'E_Incompatible types: got "$1" expected "$2"'#000+
-  'E_Type mismatch between $1 and $2'#000+
-  'E_Type identifier expected'#000+
-  'E_Variable identifier expected'#000+
-  'E_Integer expression expected, but got "$1"'#000+
-  'E_Boolean exp','ression 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_Can'#039't evaluate constant expression'#000+
-  'E_Set elements are not compa','tible'#000+
-  'E_Operation not implemented for sets'#000+
-  'W_Automatic type conversion from floating type to COMP which is an int'+
-  'eger type'#000+
-  'H_use DIV instead to get an integer result'#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_Can'#039't read or write variables of this type'#000+
-  'E_Type conflict between set elements'#000+
-  'W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+
-  'E_Integer or real expression expected'#000+
-  'E_Wrong type in array constructor'#000,
-  'E_Incompatible type for arg no. $1: Got $2, expected $3'#000+
-  'E_Method (variable) and Procedure (variable) are not compatible'#000+
-  'E_Illegal constant passed to internal math function'#000+
-  'E_Can'#039't get the address of constants'#000+
-  'E_Argument must be l-value'#000+
-  'E_Ca','n'#039't assign local procedure/function to procedure variable'#000+
-  'E_Identifier not found $1'#000+
-  'F_Internal Error in SymTableStack()'#000+
-  'E_Duplicate identifier $1'#000+
-  'H_Identifier already defined in $1 at line $2'#000+
-  'E_Unknown identifier $1'#000+
-  'E_Forward declaration no','t solved $1'#000+
-  'F_Identifier type already defined as type'#000+
-  'E_Error in type definition'#000+
-  'E_Type identifier not defined'#000+
-  'E_Forward type not resolved $1'#000+
-  'E_Only static variables can be used in static methods or outside metho'+
-  'ds'#000+
-  'E_Invalid call to tvarsym','.mangledname()'#000+
-  'F_record or class type expected'#000+
-  'E_Instances of classes or objects with an abstract method are not allo'+
-  'wed'#000+
-  'W_Label not defined $1'#000+
-  'E_Illegal label declaration'#000+
-  'E_GOTO and LABEL are not supported (use switch -Sg)'#000+
-  'E_Label not foun','d'#000+
-  'E_identifier isn'#039't a label'#000+
-  'E_label already defined'#000+
-  'E_illegal type declaration of set elements'#000+
-  'E_Forward class definition not resolved $1'#000+
-  'H_Parameter not used $1'#000+
-  'N_Local variable not used $1'#000+
-  'E_Set type expected'#000+
-  'W_Function result does not s','eem to be set'#000+
-  'E_Unknown record field identifier $1'#000+
-  'W_Local variable $1 does not seem to be initialized'#000+
-  'W_Variable $1 does not seem to be initialized'#000+
-  'E_identifier idents no member $1'#000+
-  'B_Found declaration: $1'#000+
-  'E_Data segment too large (max. 2GB',')'#000+
-  'E_BREAK not allowed'#000+
-  'E_CONTINUE not allowed'#000+
-  'E_Expression too complicated - FPU stack overflow'#000+
-  'E_Illegal expression'#000+
-  'E_Invalid integer expression'#000+
-  'E_Illegal qualifier'#000+
-  'E_High range limit < low range limit'#000+
-  'E_Illegal counter variable'#000+
-  'E_Can'#039't det','ermine which overloaded function to call'#000+
-  'E_Parameter list size exceeds 65535 bytes'#000+
-  'E_Illegal type conversion'#000+
-  'D_Conversion between ordinals and pointers is not portable across plat'+
-  'forms'#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_EXPORT declared functions can'#039't be called'#000+
-  'W_Possible illegal call of constructor or destructor (doesn'#039't matc'+
-  'h to this context)'#000+
-  'N_Inefficient code'#000+
-  'W_unreachable code'#000+
-  'E_proc','edure call with stackframe ESP/SP'#000+
-  'E_Abstract methods can'#039't be called directly'#000+
-  'F_Internal Error in getfloatreg(), allocation failure'#000+
-  'F_Unknown float type'#000+
-  'F_SecondVecn() base defined twice'#000+
-  'F_Extended cg68k not supported'#000+
-  'F_32-bit unsigned not ','supported in MC68000 mode'#000+
-  'F_Internal Error in secondinline()'#000+
-  'D_Register $1 weight $2 $3'#000+
-  'E_Stack limit excedeed in local routine'#000+
-  'D_Stack frame is omitted'#000+
-  'E_Object or class methods can'#039't be inline.'#000+
-  'E_Procvar calls can'#039't be inline.'#000+
-  'E_No code f','or inline procedure stored'#000+
-  'E_Element zero of an ansi/wide- or longstring can'#039't be accessed, u'+
-  'se (set)length instead'#000+
-  'E_Include and exclude not implemented in this case'#000+
-  'E_Constructors or destructors can not be called inside a '#039'with'#039+
-  ' clause'#000+
-  'E_','Cannot call message handler method directly'#000+
-  'D_Starting $1 styled assembler parsing'#000+
-  'D_Finished $1 styled assembler parsing'#000+
-  'E_Non-label pattern contains @'#000+
-  'W_Override operator not supported'#000+
-  'E_Error building record offset'#000+
-  'E_OFFSET used without ','identifier'#000+
-  'E_TYPE used without identifier'#000+
-  'E_Cannot use local variable or parameters here'#000+
-  'E_need to use OFFSET here'#000+
-  'E_Cannot use multiple relocatable symbols'#000+
-  'E_Relocatable symbol can only be added'#000+
-  'E_Invalid constant expression'#000+
-  'E_Relocatable ','symbol is not allowed'#000+
-  'E_Invalid reference syntax'#000+
-  'E_Local symbols not allowed as references'#000+
-  'E_Invalid base and index register usage'#000+
-  'E_Wrong scale factor specified'#000+
-  'E_Multiple index register usage'#000+
-  'E_Invalid operand type'#000+
-  'E_Invalid string as opc','ode operand: $1'#000+
-  'W_@CODE and @DATA not supported'#000+
-  'E_Null label references are not allowed'#000+
-  'F_Divide by zero in asm evaluator'#000+
-  'F_Evaluator stack overflow'#000+
-  'F_Evaluator stack underflow'#000+
-  'F_Invalid numeric format in asm evaluator'#000+
-  'F_Invalid Operator in',' asm evaluator'#000+
-  'E_escape sequence ignored: $1'#000+
-  'E_Invalid symbol reference'#000+
-  'W_Fwait can cause emulation problems with emu387'#000+
-  'W_Calling an overload function in assembler'#000+
-  'E_Unsupported symbol type for operand'#000+
-  'E_Constant value out of bounds'#000+
-  'E_Erro','r converting decimal $1'#000+
-  'E_Error converting octal $1'#000+
-  'E_Error converting binary $1'#000+
-  'E_Error converting hexadecimal $1'#000+
-  'H_$1 translated to $2'#000+
-  'W_$1 is associated to an overloaded function'#000+
-  'E_Cannot use SELF outside a method'#000+
-  'E_Cannot use OLDEBP out','side a nested procedure'#000+
-  'W_Functions with void return value can'#039't return any value in asm c'+
-  'ode'#000+
-  'E_SEG not supported'#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+
-  'E_Assemble','r syntax error'#000+
-  'E_Invalid combination of opcode and operands'#000+
-  'E_Assemler syntax error in operand'#000+
-  'E_Assemler syntax error in constant'#000+
-  'E_Invalid String expression'#000+
-  '32bit constant created for address'#000+
-  'E_Invalid or missing opcode'#000+
-  'E_Invalid combinat','ion of prefix and opcode: $1'#000+
-  'E_Invalid combination of override and opcode: $1'#000+
-  'E_Too many operands on line'#000+
-  'W_NEAR ignored'#000+
-  'W_FAR ignored'#000+
-  'E_Duplicate local symbol $1'#000+
-  'E_Undefined local symbol $1'#000+
-  'E_Unknown label identifier $1'#000+
-  'E_Invalid floating ','point register name'#000+
-  'E_NOR not supported'#000+
-  'W_Modulo not supported'#000+
-  'E_Invalid floating point constant $1'#000+
-  'E_Invalid floating point expression'#000+
-  'E_Wrong symbol type'#000+
-  'E_Cannot index a local var or parameter with a register'#000+
-  'E_Invalid segment override e','xpression'#000+
-  'W_Identifier $1 supposed external'#000+
-  'E_Strings not allowed as constants'#000+
-  'No type of variable specified'#000+
-  'E_assembler code not returned to text section'#000+
-  'E_Not a directive or local symbol $1'#000+
-  'E_Using a defined name as a local label'#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+
-  'E_Can'#039't access fields directly for parameters'#000+
-  'E_Can'#039't access fields of objects/classes directly'#000+
-  'F_Too many assemb','ler files'#000+
-  'F_Selected assembler output not supported'#000+
-  'F_Comp not supported'#000+
-  'F_Direct not support for binary writers'#000+
-  'E_Allocating of data is only allowed in bss section'#000+
-  'F_No binary writer selected'#000+
-  'E_Asm: Opcode $1 not in table'#000+
-  'E_Asm: $1 invalid',' combination of opcode and operands'#000+
-  'E_Asm: 16 Bit references not supported'#000+
-  'E_Asm: Invalid effective address'#000+
-  'E_Asm: Immediate or reference expected'#000+
-  'E_Asm: $1 value exceeds bounds $2'#000+
-  'E_Asm: Short jump is out of range $1'#000+
-  'W_Source operating sys','tem redefined'#000+
-  'I_Assembling (pipe) $1'#000+
-  'E_Can'#039't create assember file $1'#000+
-  'W_Assembler $1 not found, switching to external assembling'#000+
-  'T_Using assembler: $1'#000+
-  'W_Error while assembling exitcode $1'#000+
-  'W_Can'#039't call the assembler, error $1 switching to ext','ernal assem'+
-  'bling'#000+
-  'I_Assembling $1'#000+
-  'I_Assembling smartlink $1'#000+
-  'W_Linker $1 not found, switching to external linking'#000+
-  'T_Using linker: $1'#000+
-  'W_Object $1 not found, Linking may fail !'#000+
-  'W_Library $1 not found, Linking may fail !'#000+
-  'W_Error while linking'#000+
-  'W_','Can'#039't call the linker, switching to external linking'#000+
-  'I_Linking $1'#000+
-  'W_binder not found, switching to external binding'#000+
-  'W_ar not found, switching to external ar'#000+
-  'E_Dynamic Libraries not supported'#000+
-  'I_Closing script $1'#000+
-  'W_resource compiler not found',', switching to external mode'#000+
-  'I_Compiling resource $1'#000+
-  'F_Can'#039't post process executable $1'#000+
-  'F_Can'#039't open executable $1'#000+
-  'X_Size of Code: $1 bytes'#000+
-  'X_Size of initialized data: $1 bytes'#000+
-  'X_Size of uninitialized data: $1 bytes'#000+
-  'X_Stack space reserved: ','$1 bytes'#000+
-  'X_Stack space commited: $1 bytes'#000+
-  'T_Unitsearch: $1'#000+
-  'T_PPU Loading $1'#000+
-  'U_PPU Name: $1'#000+
-  'U_PPU Flags: $1'#000+
-  'U_PPU Crc: $1'#000+
-  'U_PPU Time: $1'#000+
-  'U_PPU File too short'#000+
-  'U_PPU Invalid Header (no PPU at the begin)'#000+
-  'U_PPU Invalid Version $1'#000+
-  'U_PPU is compil','ed for an other processor'#000+
-  'U_PPU is compiled for an other target'#000+
-  'U_PPU Source: $1'#000+
-  'U_Writing $1'#000+
-  'F_Can'#039't Write PPU-File'#000+
-  'F_reading PPU-File'#000+
-  'F_unexpected end of PPU-File'#000+
-  'F_Invalid PPU-File entry: $1'#000+
-  'F_PPU Dbx count problem'#000+
-  'E_Illegal unit name: $','1'#000+
-  'F_Too much units'#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 find unit $1'#000+
-  'W_Unit $1 was not found but $2 exists'#000+
-  'F_Unit $1 searched but $2 found'#000+
-  'W_Compiling the system unit requires the',' -Us switch'#000+
-  'F_There were $1 errors compiling module, stopping'#000+
-  'U_Load from $1 ($2) unit $3'#000+
-  'U_Recompiling $1, checksum changed for $2'#000+
-  'U_Recompiling $1, source found only'#000+
-  'U_Recompiling unit, static lib is older than ppufile'#000+
-  'U_Recompiling unit,',' shared lib is 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_Parsing interface of $1'#000+
-  'U_Parsing implementation of $1'#000+
-  'U_Second load for unit $1'#000+
-  'U_PPU Check file $1 time $','2'#000+
-  '$1 [options] <inputfile> [options]'#000+
-  'W_Only one source file supported'#000+
-  'W_DEF file can be created only for OS/2'#000+
-  'E_nested response files are not supported'#000+
-  'F_No source file name in command line'#000+
-  'E_Illegal parameter: $1'#000+
-  'H_-? writes help pages'#000+
-  'F_T','oo many config files nested'#000+
-  'F_Unable to open file $1'#000+
-  'N_Reading further options from $1'#000+
-  'W_Target is already set to: $1'#000+
-  'W_Shared libs not supported on DOS platform, reverting to static'#000+
-  'F_too many IF(N)DEFs'#000+
-  'F_too many ENDIFs'#000+
-  'F_open conditional',' at the end of the file'#000+
-  'W_Debug information generation is not supported by this executable'#000+
-  'H_Try recompiling with -dGDB'#000+
-  'E_You are using the obsolete switch $1'#000+
-  'E_You are using the obsolete switch $1, please use $2'#000+
-  'N_Switching assembler to de','fault source writing assembler'#000+
-  'Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'#000+
-  'Copyright (c) 1993-99 by Florian Klaempfl'#000+
-  'Free Pascal Compiler version $FPCVER'#000+
-  #000+
-  'Compiler Date  : $FPCDATE'#000+
-  'Compiler Target: $FPCTARGET'#000+
-  #000+
-  'This progra','m comes under the GNU General Public Licence'#000+
-  'For more information read COPYING.FPC'#000+
-  #000+
-  'Report bugs,suggestions etc to:'#000+
-  '                 [email protected]'#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+
-  '**2al_list sourcecode lines in assembler file'#000+
-  '**2ar_list register allocation/release info in assembler file'#000+
-  '**2at_list temp allocation/release info in assembler file'#000+
-  '**1b_generate ','browser info'#000+
-  '**2bl_generate local symbol info'#000+
-  '**1B_build all modules'#000+
-  '**1C<x>_code generation options:'#000+
-  '3*2CD_create dynamic library'#000+
-  '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#000+
-  '**2Ci_IO-checking'#000+
-  '**2Cn_omit linking stage'#000+
-  '**2Co_check ov','erflow of integer operations'#000+
-  '**2Cr_range checking'#000+
-  '**2Cs<n>_set stack size to <n>'#000+
-  '**2Ct_stack checking'#000+
-  '3*2CS_create static library'#000+
-  '3*2Cx_use smartlinking'#000+
-  '**1d<x>_defines the symbol <x>'#000+
-  '*O1D_generate a DEF file'#000+
-  '*O2Dd<x>_set description to <x>',#000+
-  '*O2Dw_PM application'#000+
-  '**1e<x>_set path to executable'#000+
-  '**1E_same as -Cn'#000+
-  '**1F<x>_set file names and paths:'#000+
-  '**2FD<x>_sets the directory where to search for compiler utilities'#000+
-  '**2Fe<x>_redirect error output to <x>'#000+
-  '**2FE<x>_set exe/unit output pa','th to <x>'#000+
-  '**2Fi<x>_adds <x> to include path'#000+
-  '**2Fl<x>_adds <x> to library path'#000+
-  '*L2FL<x>_uses <x> as dynamic linker'#000+
-  '**2Fo<x>_adds <x> to object path'#000+
-  '**2Fr<x>_load error message file <x>'#000+
-  '**2Fu<x>_adds <x> to unit path'#000+
-  '**2FU<x>_set unit output ','path to <x>, overrides -FE'#000+
-  '*g1g<x>_generate debugger information:'#000+
-  '*g2gg_use gsym'#000+
-  '*g2gd_use dbx'#000+
-  '*g2gh_use heap trace unit'#000+
-  '*g2gc_generate checks for pointers'#000+
-  '**1i_information'#000+
-  '**2iD_return compiler date'#000+
-  '**2iV_return compiler version'#000+
-  '**2iSO_ret','urn compiler OS'#000+
-  '**2iSP_return compiler processor'#000+
-  '**2iTO_return target OS'#000+
-  '**2iTP_return target processor'#000+
-  '**1I<x>_adds <x> to include path'#000+
-  '**1k<x>_Pass <x> to the linker'#000+
-  '**1l_write logo'#000+
-  '**1n_don'#039't read the default config file'#000+
-  '**1o<x>_change t','he name of the executable produced to <x>'#000+
-  '**1pg_generate profile code for gprof'#000+
-  '*L1P_use pipes instead of creating temporary assembler files'#000+
-  '**1S<x>_syntax options:'#000+
-  '**2S2_switch some Delphi 2 extensions on'#000+
-  '**2Sc_supports operators like C (*','=,+=,/= and -=)'#000+
-  '**2Sd_tries to be Delphi compatible'#000+
-  '**2Se<x>_compiler stops after the <x> errors (default is 1)'#000+
-  '**2Sg_allow LABEL and GOTO'#000+
-  '**2Sh_Use ansistrings'#000+
-  '**2Si_support C++ styled INLINE'#000+
-  '**2Sm_support macros like C (global)'#000+
-  '**2So_trie','s to be TP/BP 7.0 compatible'#000+
-  '**2Sp_tries to be gpc compatible'#000+
-  '**2Ss_constructor name must be init (destructor must be done)'#000+
-  '**2St_allow static keyword in objects'#000+
-  '**1s_don'#039't call assembler and linker (only with -a)'#000+
-  '**1u<x>_undefines the symb','ol <x>'#000+
-  '**1U_unit options:'#000+
-  '**2Un_don'#039't check the unit name'#000+
-  '**2Us_compile a system unit'#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*_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*_i : Show general info           p : Show compiled procedures'#000+
-  '**2*_l : Show linenumber','s            c : Show conditionals'#000+
-  '**2*_a : Show everything             0 : Show nothing (except errors)'#000+
-  '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#000+
-  '**2*_    declarations if an error    x : Executable info (Win32 o','nly'+
-  ')'#000+
-  '**2*_    occurs'#000+
-  '**1X_executable options:'#000+
-  '*L2Xc_link with the c library'#000+
-  '**2XD_link with dynamic libraries (defines FPC_LINK_DYNAMIC)'#000+
-  '**2Xs_strip all symbols from executable'#000+
-  '**2XS_link with static libraries (defines FPC_LINK_STATIC)'#000+
-  '**0*','_Processor specific options:'#000+
-  '3*1A<x>_output format:'#000+
-  '3*2Aas_assemble using GNU AS'#000+
-  '3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#000+
-  '3*2Anasmcoff_coff (Go32v2) file using Nasm'#000+
-  '3*2Anasmelf_elf32 (Linux) file using Nasm'#000+
-  '3*2Anasmobj_obj file us','ing Nasm'#000+
-  '3*2Amasm_obj file using Masm (Microsoft)'#000+
-  '3*2Atasm_obj file using Tasm (Borland)'#000+
-  '3*2Acoff_coff (Go32v2) using internal writer'#000+
-  '3*2Apecoff_pecoff (Win32) using internal writer'#000+
-  '3*1R<x>_assembler reading style:'#000+
-  '3*2Ratt_read AT&T style a','ssembler'#000+
-  '3*2Rintel_read Intel style assembler'#000+
-  '3*2Rdirect_copy assembler text directly to assembler file'#000+
-  '3*1O<x>_optimizations:'#000+
-  '3*2Og_generate smaller code'#000+
-  '3*2OG_generate faster code (default)'#000+
-  '3*2Or_keep certain variables in registers (still',' BUGGY!!!)'#000+
-  '3*2Ou_enable uncertain optimizations (see docs)'#000+
-  '3*2O1_level 1 optimizations (quick optimizations)'#000+
-  '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#000+
-  '3*2O3_level 3 optimizations (same as -O2u)'#000+
-  '3*2Op<x>_target processor:'#000+
-  '3*3O','p1_set target processor to 386/486'#000+
-  '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#000+
-  '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#000+
-  '3*1T<x>_Target operating system:'#000+
-  '3*2TGO32V1_version 1 of DJ Delorie DOS extender'#000+
-  '3*2TGO32V2_vers','ion 2 of DJ Delorie DOS extender'#000+
-  '3*2TLINUX_Linux'#000+
-  '3*2TOS2_OS/2 2.x'#000+
-  '3*2TWin32_Windows 32 Bit'#000+
-  '6*1A<x>_output format'#000+
-  '6*2Aas_Unix o-file using GNU AS'#000+
-  '6*2Agas_GNU Motorola assembler'#000+
-  '6*2Amit_MIT Syntax (old GAS)'#000+
-  '6*2Amot_Standard Motorola assembler',#000+
-  '6*1O_optimizations:'#000+
-  '6*2Oa_turn on the optimizer'#000+
-  '6*2Og_generate smaller code'#000+
-  '6*2OG_generate faster code (default)'#000+
-  '6*2Ox_optimize maximum (still BUGGY!!!)'#000+
-  '6*2O2_set target processor to a MC68020+'#000+
-  '6*1R<x>_assembler reading style:'#000+
-  '6*2RMOT_read',' motorola style assembler'#000+
-  '6*1T<x>_Target operating system:'#000+
-  '6*2TAMIGA_Commodore Amiga'#000+
-  '6*2TATARI_Atari ST/STe/TT'#000+
-  '6*2TMACOS_Macintosh m68k'#000+
-  '6*2TLINUX_Linux-68k'#000+
-  '**1*_'#000+
-  '**1?_shows this help'#000+
-  '**1h_shows this help without waiting'#000
-);
+{$ifdef Delphi}
+const msgtxt : array[0..000102] of string[240]=(
+{$else Delphi}
+const msgtxt : array[0..000102,1..240] of char=(
+{$endif Delphi}
+  'T_Compiler: $1'#000+
+  'D_Compiler OS: $1'#000+
+  'I_Target OS: $1'#000+
+  'T_Using executable path: $1'#000+
+  'T_Using unit path: $1'#000+
+  'T_Using include path: $1'#000+
+  'T_Using library path: $1'#000+
+  'T_Using object path: $1'#000+
+  'I_$1 Lines compiled, $2 sec'#000+
+  'F_No memory left'#000+
+  'I_Writing Resource Str','ing Table file: $1'#000+
+  'E_Writing Resource String Table file: $1'#000+
+  'F_Unexpected end of file'#000+
+  'F_String exceeds line'#000+
+  'F_illegal character'#000+
+  'F_Syntax error, $1 expected but $2 found'#000+
+  'T_Start reading includefile $1'#000+
+  'W_Comment level $1 found'#000+
+  'N_$F directive (','FAR) ignored'#000+
+  'N_Stack check is global under Linux'#000+
+  'N_Ignored compiler switch $1'#000+
+  'W_Illegal compiler switch $1'#000+
+  'W_This compiler switch has a global effect'#000+
+  'E_Illegal char constant'#000+
+  'F_Can'#039't open file $1'#000+
+  'F_Can'#039't open include file $1'#000+
+  'E_Too many $ENDI','Fs or $ELSEs'#000+
+  'W_Records fields can be aligned to 1,2,4 or 16 bytes only'#000+
+  'W_Enumerated can be saved in 1,2 or 4 bytes only'#000+
+  'E_$ENDIF expected for $1 $2 defined in line $3'#000+
+  'E_Syntax error while parsing a conditional compiling expression'#000+
+  'E_Evaluat','ing a conditional compiling expression'#000+
+  'W_Macro contents is cut after char 255 to evalute expression'#000+
+  'E_ENDIF without IF(N)DEF'#000+
+  'F_User defined: $1'#000+
+  'E_User defined: $1'#000+
+  'W_User defined: $1'#000+
+  'N_User defined: $1'#000+
+  'H_User defined: $1'#000+
+  'I_User defined: $1'#000+
+  'E','_Keyword redefined as macro has no effect'#000+
+  'F_Macro buffer overflow while reading or expanding a macro'#000+
+  'W_Extension of macros exceeds a deep of 16.'#000+
+  'E_compiler switches aren'#039't allowed in (* ... *) styled comments'#000+
+  'D_Handling switch "$1"'#000+
+  'C_ENDIF ','$1 found'#000+
+  'C_IFDEF $1 found, $2'#000+
+  'C_IFOPT $1 found, $2'#000+
+  'C_IF $1 found, $2'#000+
+  'C_IFNDEF $1 found, $2'#000+
+  'C_ELSE $1 found, $2'#000+
+  'C_Skipping until...'#000+
+  'I_Press <return> to continue'#000+
+  'W_Unsupported switch $1'#000+
+  'W_Illegal compiler directive $1'#000+
+  'T_Back in $1'#000+
+  'W_Unsupport','ed application type: $1'#000+
+  'W_APPTYPE isn'#039't support by the target OS'#000+
+  'W_Unsupported assembler style specified $1'#000+
+  'W_ASM reader switch is not possible inside asm statement, $1 will be e'+
+  'ffective only for next'#000+
+  'E_Wrong switch toggle, use ON/OFF or +/','-'#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+
+  'W_Procedure type FAR ignored'#000+
+  'W_Procedure type NEAR ignored'#000+
+  'W_Procedure type REGISTER ignored'#000+
+  'E_No DLL File specif','ied'#000+
+  'E_Duplicate exported function name $1'#000+
+  'E_Duplicate exported function index $1'#000+
+  'E_Invalid index for exported function'#000+
+  'E_Constructor name must be INIT'#000+
+  'E_Destructor name must be DONE'#000+
+  'E_Illegal open parameter'#000+
+  'E_Procedure type INLINE not suppo','rted'#000+
+  'W_Private methods shouldn'#039't be VIRTUAL'#000+
+  'W_Constructor should be public'#000+
+  'W_Destructor should be public'#000+
+  'N_Class should have one destructor only'#000+
+  'E_Local class definitions are not allowed'#000+
+  'F_Anonym class definitions are not allowed'#000+
+  'E_The obje','ct $1 has no VMT'#000+
+  'E_Illegal parameter list'#000+
+  'E_Wrong parameter type specified for arg no. $1'#000+
+  'E_Wrong amount of parameters specified'#000+
+  'E_overloaded identifier $1 isn'#039't a function'#000+
+  'E_overloaded functions have the same parameter list'#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_Interface and implementation names are different $1 => $2'#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+
+  'W_range check error while evaluating constants'#000+
+  'E_duplicate case label'#000+
+  'E_Upper bound of case range is less than lower bound'#000,
+  'E_typed constants of classes 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+
+  'W_use extended syntax of NEW and DISPOSE for instances of objects'#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_type identifier not allowed here'#000+
+  'E_method identifier expected'#000+
+  'E_function header doesn'#039't match any method of th','is class'#000+
+  'P_procedure/function $1'#000+
+  'E_Illegal floating point constant'#000+
+  'E_FAIL can be used in constructors only'#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 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+
+  'W_An inherited method is hidden by $1'#000+
+  'E_There is no method in an ancestor class to be overridden: $1'#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_Cannot access a protected 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+
+  'E_overloaded methods which are virtual must have the same return type:'+
+  ' $1'#000+
+  'E_EXPORT declared functions can'#039't be nested'#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_SELF is only allowed in methods'#000+
+  'E_methods can be only in other methods called direct with type identif'+
+  'ier of the class'#000+
+  'E_Illegal use of '#039':'#039#000+
+  'E_range che','ck error in set constructor or duplicate set element'#000+
+  'E_Pointer to object expected'#000+
+  'E_Expression must be constructor call'#000+
+  'E_Expression must be destructor call'#000+
+  'E_Illegal order of record elements'#000+
+  'E_Expression type must be class or record type'#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_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_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_Comparative operator must return a boolean value'#000+
+  'E_Only virtual methods can be abstract'#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+
+  'E_absolute can only be associated to ONE variable'#000+
+  'E_absolute can only be associated a var or const'#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+
+  'W_Virtual methods are used without a constructor in $1'#000+
+  'M_Macro defined: $1'#000+
+  'M_Macro undefined: $1'#000+
+  'M_Macro $','1 set to $2'#000+
+  'I_Compiling $1'#000+
+  'U_Parsing interface of unit $1'#000+
+  'U_Parsing implementation of $1'#000+
+  'D_Compiling $1 for the second time'#000+
+  'E_Array properties aren'#039't allowed at this point'#000+
+  'E_No property found to override'#000+
+  'E_Only one default property is allow','ed, found inherited default prop'+
+  'erty in class $1'#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_The class can'#039't have a published section, us','e 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_Procedure directive $1 not allowed in interface section'#000+
+  'E_Procedure directive $1 not allowed in implem','entation section'#000+
+  'E_Procedure directive $1 not allowed in procvar declaration'#000+
+  'E_Function is already declared Public/Forward $1'#000+
+  'E_Can'#039't use both EXPORT and EXTERNAL'#000+
+  'E_NAME keyword expected'#000+
+  'W_$1 not yet supported inside inline procedure/functi','on'#000+
+  'W_Inlining disabled'#000+
+  'I_Writing Browser log $1'#000+
+  'H_may be pointer dereference is missing'#000+
+  'F_Selected assembler reader not supported'#000+
+  'E_Procedure directive $1 has conflicts with other directives'#000+
+  'E_Calling convention doesn'#039't match forward'#000+
+  'E_Regi','ster calling (fastcall) not supported'#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_That kind of property can'#039't be published'#000+
+  'W_Empty import name s','pecified'#000+
+  'W_Empty import name specified'#000+
+  'E_Function internal name changed after use of function'#000+
+  'E_Division by zero'#000+
+  'E_Invalid floating point operation'#000+
+  'E_Upper bound of range is less than lower bound'#000+
+  'E_string length is larger than array of char',' length'#000+
+  'E_Illegal expression after message directive'#000+
+  'E_Message handlers can take only one call by ref. parameter'#000+
+  'E_Duplicate message label: $1'#000+
+  'E_Self can be only an explicit parameter in message handlers'#000+
+  'E_Threadvars can be only static or g','lobal'#000+
+  'F_Direct assembler not supported for binary output format'#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_Data types which requires initialization/finalization can'#039't ','be'+
+  ' used in variant records'#000+
+  'E_Resourcestrings can be only static or global'#000+
+  'E_Exit with argument can'#039't be used here'#000+
+  'E_The type of the storage symbol must be boolean'#000+
+  'E_This symbol isn'#039't allowed as storage symbol'#000+
+  'E_Only class which are compiled',' in $M+ mode can be published'#000+
+  'E_Type mismatch'#000+
+  'E_Incompatible types: got "$1" expected "$2"'#000+
+  'E_Type mismatch between $1 and $2'#000+
+  'E_Type identifier expected'#000+
+  'E_Variable identifier expected'#000+
+  'E_Integer expression expected, but got "$1"'#000+
+  'E_Boolean exp','ression 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_Can'#039't evaluate constant expression'#000+
+  'E_Set elements are not compa','tible'#000+
+  'E_Operation not implemented for sets'#000+
+  'W_Automatic type conversion from floating type to COMP which is an int'+
+  'eger type'#000+
+  'H_use DIV instead to get an integer result'#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_Can'#039't read or write variables of this type'#000+
+  'E_Type conflict between set elements'#000+
+  'W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+
+  'E_Integer or real expression expected'#000+
+  'E_Wrong type in array constructor'#000,
+  'E_Incompatible type for arg no. $1: Got $2, expected $3'#000+
+  'E_Method (variable) and Procedure (variable) are not compatible'#000+
+  'E_Illegal constant passed to internal math function'#000+
+  'E_Can'#039't get the address of constants'#000+
+  'E_Argument must be l-value'#000+
+  'E_Ca','n'#039't assign local procedure/function to procedure variable'#000+
+  'E_Can'#039't assign values to an address'#000+
+  'E_Identifier not found $1'#000+
+  'F_Internal Error in SymTableStack()'#000+
+  'E_Duplicate identifier $1'#000+
+  'H_Identifier already defined in $1 at line $2'#000+
+  'E_Unknown id','entifier $1'#000+
+  'E_Forward declaration not solved $1'#000+
+  'F_Identifier type already defined as type'#000+
+  'E_Error in type definition'#000+
+  'E_Type identifier not defined'#000+
+  'E_Forward type not resolved $1'#000+
+  'E_Only static variables can be used in static methods or outsi','de met'+
+  'hods'#000+
+  'E_Invalid call to tvarsym.mangledname()'#000+
+  'F_record or class type expected'#000+
+  'E_Instances of classes or objects with an abstract method are not allo'+
+  'wed'#000+
+  'W_Label not defined $1'#000+
+  'E_Illegal label declaration'#000+
+  'E_GOTO and LABEL are not support','ed (use switch -Sg)'#000+
+  'E_Label not found'#000+
+  'E_identifier isn'#039't a label'#000+
+  'E_label already defined'#000+
+  'E_illegal type declaration of set elements'#000+
+  'E_Forward class definition not resolved $1'#000+
+  'H_Parameter not used $1'#000+
+  'N_Local variable not used $1'#000+
+  'E_Set type e','xpected'#000+
+  'W_Function result does not seem to be set'#000+
+  'E_Unknown record field identifier $1'#000+
+  'W_Local variable $1 does not seem to be initialized'#000+
+  'W_Variable $1 does not seem to be initialized'#000+
+  'E_identifier idents no member $1'#000+
+  'B_Found declaration: $','1'#000+
+  'E_Data segment too large (max. 2GB)'#000+
+  'E_BREAK not allowed'#000+
+  'E_CONTINUE not allowed'#000+
+  'E_Expression too complicated - FPU stack overflow'#000+
+  'E_Illegal expression'#000+
+  'E_Invalid integer expression'#000+
+  'E_Illegal qualifier'#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_Parameter list size exceeds 65535 bytes'#000+
+  'E_Illegal type conversion'#000+
+  'D_Conversion between ordinals and pointers is not portable across plat'+
+  'forms'#000+
+  'E_File types must b','e var parameters'#000+
+  'E_The use of a far pointer isn'#039't allowed there'#000+
+  'E_illegal call by reference parameters'#000+
+  'E_EXPORT declared functions can'#039't be called'#000+
+  'W_Possible illegal call of constructor or destructor (doesn'#039't matc'+
+  'h to this context)'#000+
+  'N_Ineffi','cient code'#000+
+  'W_unreachable code'#000+
+  'E_procedure call with stackframe ESP/SP'#000+
+  'E_Abstract methods can'#039't be called directly'#000+
+  'F_Internal Error in getfloatreg(), allocation failure'#000+
+  'F_Unknown float type'#000+
+  'F_SecondVecn() base defined twice'#000+
+  'F_Extended cg68k ','not supported'#000+
+  'F_32-bit unsigned not supported in MC68000 mode'#000+
+  'F_Internal Error in secondinline()'#000+
+  'D_Register $1 weight $2 $3'#000+
+  'E_Stack limit excedeed in local routine'#000+
+  'D_Stack frame is omitted'#000+
+  'E_Object or class methods can'#039't be inline.'#000+
+  'E_Procva','r calls can'#039't be inline.'#000+
+  'E_No code for inline procedure stored'#000+
+  'E_Element zero of an ansi/wide- or longstring can'#039't be accessed, u'+
+  'se (set)length instead'#000+
+  'E_Include and exclude not implemented in this case'#000+
+  'E_Constructors or destructors can not',' be called inside a '#039'with'#039+
+  ' clause'#000+
+  'E_Cannot call message handler method directly'#000+
+  'D_Starting $1 styled assembler parsing'#000+
+  'D_Finished $1 styled assembler parsing'#000+
+  'E_Non-label pattern contains @'#000+
+  'W_Override operator not supported'#000+
+  'E_Error building ','record offset'#000+
+  'E_OFFSET used without identifier'#000+
+  'E_TYPE used without identifier'#000+
+  'E_Cannot use local variable or parameters here'#000+
+  'E_need to use OFFSET here'#000+
+  'E_Cannot use multiple relocatable symbols'#000+
+  'E_Relocatable symbol can only be added'#000+
+  'E_Invali','d constant expression'#000+
+  'E_Relocatable symbol is not allowed'#000+
+  'E_Invalid reference syntax'#000+
+  'E_Local symbols not allowed as references'#000+
+  'E_Invalid base and index register usage'#000+
+  'E_Wrong scale factor specified'#000+
+  'E_Multiple index register usage'#000+
+  'E_Invalid ','operand type'#000+
+  'E_Invalid string as opcode operand: $1'#000+
+  'W_@CODE and @DATA not supported'#000+
+  'E_Null label references are not allowed'#000+
+  'F_Divide by zero in asm evaluator'#000+
+  'F_Evaluator stack overflow'#000+
+  'F_Evaluator stack underflow'#000+
+  'F_Invalid numeric format in',' asm evaluator'#000+
+  'F_Invalid Operator in asm evaluator'#000+
+  'E_escape sequence ignored: $1'#000+
+  'E_Invalid symbol reference'#000+
+  'W_Fwait can cause emulation problems with emu387'#000+
+  'W_Calling an overload function in assembler'#000+
+  'E_Unsupported symbol type for operand'#000+
+  'E','_Constant value out of bounds'#000+
+  'E_Error converting decimal $1'#000+
+  'E_Error converting octal $1'#000+
+  'E_Error converting binary $1'#000+
+  'E_Error converting hexadecimal $1'#000+
+  'H_$1 translated to $2'#000+
+  'W_$1 is associated to an overloaded function'#000+
+  'E_Cannot use SELF outs','ide a method'#000+
+  'E_Cannot use OLDEBP outside a nested procedure'#000+
+  'W_Functions with void return value can'#039't return any value in asm c'+
+  'ode'#000+
+  'E_SEG not supported'#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+
+  'E_Assembler syntax error'#000+
+  'E_Invalid combination of opcode and operands'#000+
+  'E_Assemler syntax error in operand'#000+
+  'E_Assemler syntax error in constant'#000+
+  'E_Invalid String expression'#000+
+  '32bit constant created for address'#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_Too many operands on line'#000+
+  'W_NEAR ignored'#000+
+  'W_FAR ignored'#000+
+  'E_Duplicate local symbol $1'#000+
+  'E_Undefined local symbol $1'#000+
+  'E_Unknown lab','el identifier $1'#000+
+  'E_Invalid floating point register name'#000+
+  'E_NOR not supported'#000+
+  'W_Modulo not supported'#000+
+  'E_Invalid floating point constant $1'#000+
+  'E_Invalid floating point expression'#000+
+  'E_Wrong symbol type'#000+
+  'E_Cannot index a local var or parameter with a r','egister'#000+
+  'E_Invalid segment override expression'#000+
+  'W_Identifier $1 supposed external'#000+
+  'E_Strings not allowed as constants'#000+
+  'No type of variable specified'#000+
+  'E_assembler code not returned to text section'#000+
+  'E_Not a directive or local symbol $1'#000+
+  'E_Using a de','fined name as a local label'#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+
+  'E_Can'#039't access fields directly for parameters'#000+
+  'E_Can'#039't access fields of object','s/classes directly'#000+
+  'F_Too many assembler files'#000+
+  'F_Selected assembler output not supported'#000+
+  'F_Comp not supported'#000+
+  'F_Direct not support for binary writers'#000+
+  'E_Allocating of data is only allowed in bss section'#000+
+  'F_No binary writer selected'#000+
+  'E_Asm: Opco','de $1 not in table'#000+
+  'E_Asm: $1 invalid combination of opcode and operands'#000+
+  'E_Asm: 16 Bit references not supported'#000+
+  'E_Asm: Invalid effective address'#000+
+  'E_Asm: Immediate or reference expected'#000+
+  'E_Asm: $1 value exceeds bounds $2'#000+
+  'E_Asm: Short jump is ou','t of range $1'#000+
+  'W_Source operating system redefined'#000+
+  'I_Assembling (pipe) $1'#000+
+  'E_Can'#039't create assember file $1'#000+
+  'W_Assembler $1 not found, switching to external assembling'#000+
+  'T_Using assembler: $1'#000+
+  'W_Error while assembling exitcode $1'#000+
+  'W_Can'#039't call the ','assembler, error $1 switching to external assem'+
+  'bling'#000+
+  'I_Assembling $1'#000+
+  'I_Assembling smartlink $1'#000+
+  'W_Linker $1 not found, switching to external linking'#000+
+  'T_Using linker: $1'#000+
+  'W_Object $1 not found, Linking may fail !'#000+
+  'W_Library $1 not found, Linking',' may fail !'#000+
+  'W_Error while linking'#000+
+  'W_Can'#039't call the linker, switching to external linking'#000+
+  'I_Linking $1'#000+
+  'W_binder not found, switching to external binding'#000+
+  'W_ar not found, switching to external ar'#000+
+  'E_Dynamic Libraries not supported'#000+
+  'I_Closing scr','ipt $1'#000+
+  'W_resource compiler not found, switching to external mode'#000+
+  'I_Compiling resource $1'#000+
+  'F_Can'#039't post process executable $1'#000+
+  'F_Can'#039't open executable $1'#000+
+  'X_Size of Code: $1 bytes'#000+
+  'X_Size of initialized data: $1 bytes'#000+
+  'X_Size of uninitialized dat','a: $1 bytes'#000+
+  'X_Stack space reserved: $1 bytes'#000+
+  'X_Stack space commited: $1 bytes'#000+
+  'T_Unitsearch: $1'#000+
+  'T_PPU Loading $1'#000+
+  'U_PPU Name: $1'#000+
+  'U_PPU Flags: $1'#000+
+  'U_PPU Crc: $1'#000+
+  'U_PPU Time: $1'#000+
+  'U_PPU File too short'#000+
+  'U_PPU Invalid Header (no PPU at the begin)'#000+
+  'U_PP','U Invalid Version $1'#000+
+  'U_PPU is compiled for an other processor'#000+
+  'U_PPU is compiled for an other target'#000+
+  'U_PPU Source: $1'#000+
+  'U_Writing $1'#000+
+  'F_Can'#039't Write PPU-File'#000+
+  'F_reading PPU-File'#000+
+  'F_unexpected end of PPU-File'#000+
+  'F_Invalid PPU-File entry: $1'#000+
+  'F_PPU Dbx ','count problem'#000+
+  'E_Illegal unit name: $1'#000+
+  'F_Too much units'#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 find unit $1'#000+
+  'W_Unit $1 was not found but $2 exists'#000+
+  'F_Unit $1 searched but $2 found'#000+
+  'W_Co','mpiling the system unit requires the -Us switch'#000+
+  'F_There were $1 errors compiling module, stopping'#000+
+  'U_Load from $1 ($2) unit $3'#000+
+  'U_Recompiling $1, checksum changed for $2'#000+
+  'U_Recompiling $1, source found only'#000+
+  'U_Recompiling unit, static lib is ol','der than ppufile'#000+
+  'U_Recompiling unit, shared lib is 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_Parsing interface of $1'#000+
+  'U_Parsing implementation of $1'#000+
+  'U_Second load fo','r unit $1'#000+
+  'U_PPU Check file $1 time $2'#000+
+  '$1 [options] <inputfile> [options]'#000+
+  'W_Only one source file supported'#000+
+  'W_DEF file can be created only for OS/2'#000+
+  'E_nested response files are not supported'#000+
+  'F_No source file name in command line'#000+
+  'E_Illegal para','meter: $1'#000+
+  'H_-? writes help pages'#000+
+  'F_Too many config files nested'#000+
+  'F_Unable to open file $1'#000+
+  'N_Reading further options from $1'#000+
+  'W_Target is already set to: $1'#000+
+  'W_Shared libs not supported on DOS platform, reverting to static'#000+
+  'F_too many IF(N)DEFs'#000,
+  'F_too many ENDIFs'#000+
+  'F_open conditional at the end of the file'#000+
+  'W_Debug information generation is not supported by this executable'#000+
+  'H_Try recompiling with -dGDB'#000+
+  'E_You are using the obsolete switch $1'#000+
+  'E_You are using the obsolete switch $1, pleas','e use $2'#000+
+  'N_Switching assembler to default source writing assembler'#000+
+  'Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'#000+
+  'Copyright (c) 1993-99 by Florian Klaempfl'#000+
+  'Free Pascal Compiler version $FPCVER'#000+
+  #000+
+  'Compiler Date  : $FPCDATE'#000+
+  'Comp','iler Target: $FPCTARGET'#000+
+  #000+
+  'This program comes under the GNU General Public Licence'#000+
+  'For more information read COPYING.FPC'#000+
+  #000+
+  'Report bugs,suggestions etc to:'#000+
+  '                 [email protected]'#000+
+  '**0*_put + after a boolean switch opt','ion to enable it, - to disable '+
+  'it'#000+
+  '**1a_the compiler doesn'#039't delete the generated assembler file'#000+
+  '**2al_list sourcecode lines in assembler file'#000+
+  '**2ar_list register allocation/release info in assembler file'#000+
+  '**2at_list temp allocation/release i','nfo in assembler file'#000+
+  '**1b_generate browser info'#000+
+  '**2bl_generate local symbol info'#000+
+  '**1B_build all modules'#000+
+  '**1C<x>_code generation options:'#000+
+  '3*2CD_create dynamic library'#000+
+  '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#000+
+  '**2Ci_IO-checking'#000+
+  '**2','Cn_omit linking stage'#000+
+  '**2Co_check overflow of integer operations'#000+
+  '**2Cr_range checking'#000+
+  '**2Cs<n>_set stack size to <n>'#000+
+  '**2Ct_stack checking'#000+
+  '3*2CS_create static library'#000+
+  '3*2Cx_use smartlinking'#000+
+  '**1d<x>_defines the symbol <x>'#000+
+  '*O1D_generate a DEF ','file'#000+
+  '*O2Dd<x>_set description to <x>'#000+
+  '*O2Dw_PM application'#000+
+  '**1e<x>_set path to executable'#000+
+  '**1E_same as -Cn'#000+
+  '**1F<x>_set file names and paths:'#000+
+  '**2FD<x>_sets the directory where to search for compiler utilities'#000+
+  '**2Fe<x>_redirect error output to',' <x>'#000+
+  '**2FE<x>_set exe/unit output path to <x>'#000+
+  '**2Fi<x>_adds <x> to include path'#000+
+  '**2Fl<x>_adds <x> to library path'#000+
+  '*L2FL<x>_uses <x> as dynamic linker'#000+
+  '**2Fo<x>_adds <x> to object path'#000+
+  '**2Fr<x>_load error message file <x>'#000+
+  '**2Fu<x>_adds <x> to',' unit path'#000+
+  '**2FU<x>_set unit output path to <x>, overrides -FE'#000+
+  '*g1g<x>_generate debugger information:'#000+
+  '*g2gg_use gsym'#000+
+  '*g2gd_use dbx'#000+
+  '*g2gh_use heap trace unit'#000+
+  '*g2gc_generate checks for pointers'#000+
+  '**1i_information'#000+
+  '**2iD_return compiler date'#000+
+  '**2i','V_return compiler version'#000+
+  '**2iSO_return compiler OS'#000+
+  '**2iSP_return compiler processor'#000+
+  '**2iTO_return target OS'#000+
+  '**2iTP_return target processor'#000+
+  '**1I<x>_adds <x> to include path'#000+
+  '**1k<x>_Pass <x> to the linker'#000+
+  '**1l_write logo'#000+
+  '**1n_don'#039't read the ','default config file'#000+
+  '**1o<x>_change the name of the executable produced to <x>'#000+
+  '**1pg_generate profile code for gprof'#000+
+  '*L1P_use pipes instead of creating temporary assembler files'#000+
+  '**1S<x>_syntax options:'#000+
+  '**2S2_switch some Delphi 2 extensions o','n'#000+
+  '**2Sc_supports operators like C (*=,+=,/= and -=)'#000+
+  '**2Sd_tries to be Delphi compatible'#000+
+  '**2Se<x>_compiler stops after the <x> errors (default is 1)'#000+
+  '**2Sg_allow LABEL and GOTO'#000+
+  '**2Sh_Use ansistrings'#000+
+  '**2Si_support C++ styled INLINE'#000+
+  '**2Sm_suppo','rt macros like C (global)'#000+
+  '**2So_tries to be TP/BP 7.0 compatible'#000+
+  '**2Sp_tries to be gpc compatible'#000+
+  '**2Ss_constructor name must be init (destructor must be done)'#000+
+  '**2St_allow static keyword in objects'#000+
+  '**1s_don'#039't call assembler and linker (only',' with -a)'#000+
+  '**1u<x>_undefines the symbol <x>'#000+
+  '**1U_unit options:'#000+
+  '**2Un_don'#039't check the unit name'#000+
+  '**2Us_compile a system unit'#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*_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*_i : Show general info           p : Show compiled',' procedures'#000+
+  '**2*_l : Show linenumbers            c : Show conditionals'#000+
+  '**2*_a : Show everything             0 : Show nothing (except errors)'#000+
+  '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#000+
+  '**2*_    declarations if an e','rror    x : Executable info (Win32 only'+
+  ')'#000+
+  '**2*_    occurs'#000+
+  '**1X_executable options:'#000+
+  '*L2Xc_link with the c library'#000+
+  '**2XD_link with dynamic libraries (defines FPC_LINK_DYNAMIC)'#000+
+  '**2Xs_strip all symbols from executable'#000+
+  '**2XS_link with static libr','aries (defines FPC_LINK_STATIC)'#000+
+  '**0*_Processor specific options:'#000+
+  '3*1A<x>_output format:'#000+
+  '3*2Aas_assemble using GNU AS'#000+
+  '3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#000+
+  '3*2Anasmcoff_coff (Go32v2) file using Nasm'#000+
+  '3*2Anasmelf_elf32 (Linux) fil','e using Nasm'#000+
+  '3*2Anasmobj_obj file using Nasm'#000+
+  '3*2Amasm_obj file using Masm (Microsoft)'#000+
+  '3*2Atasm_obj file using Tasm (Borland)'#000+
+  '3*2Acoff_coff (Go32v2) using internal writer'#000+
+  '3*2Apecoff_pecoff (Win32) using internal writer'#000+
+  '3*1R<x>_assembler read','ing style:'#000+
+  '3*2Ratt_read AT&T style assembler'#000+
+  '3*2Rintel_read Intel style assembler'#000+
+  '3*2Rdirect_copy assembler text directly to assembler file'#000+
+  '3*1O<x>_optimizations:'#000+
+  '3*2Og_generate smaller code'#000+
+  '3*2OG_generate faster code (default)'#000+
+  '3*2Or_keep c','ertain variables in registers (still BUGGY!!!)'#000+
+  '3*2Ou_enable uncertain optimizations (see docs)'#000+
+  '3*2O1_level 1 optimizations (quick optimizations)'#000+
+  '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#000+
+  '3*2O3_level 3 optimizations (same as -','O2u)'#000+
+  '3*2Op<x>_target processor:'#000+
+  '3*3Op1_set target processor to 386/486'#000+
+  '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#000+
+  '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#000+
+  '3*1T<x>_Target operating system:'#000+
+  '3*2TGO32V1_version 1 of DJ ','Delorie DOS extender'#000+
+  '3*2TGO32V2_version 2 of DJ Delorie DOS extender'#000+
+  '3*2TLINUX_Linux'#000+
+  '3*2TOS2_OS/2 2.x'#000+
+  '3*2TWin32_Windows 32 Bit'#000+
+  '6*1A<x>_output format'#000+
+  '6*2Aas_Unix o-file using GNU AS'#000+
+  '6*2Agas_GNU Motorola assembler'#000+
+  '6*2Amit_MIT Syntax (old GAS)',#000+
+  '6*2Amot_Standard Motorola assembler'#000+
+  '6*1O_optimizations:'#000+
+  '6*2Oa_turn on the optimizer'#000+
+  '6*2Og_generate smaller code'#000+
+  '6*2OG_generate faster code (default)'#000+
+  '6*2Ox_optimize maximum (still BUGGY!!!)'#000+
+  '6*2O2_set target processor to a MC68020+'#000+
+  '6*1R<x>_a','ssembler reading style:'#000+
+  '6*2RMOT_read motorola style assembler'#000+
+  '6*1T<x>_Target operating system:'#000+
+  '6*2TAMIGA_Commodore Amiga'#000+
+  '6*2TATARI_Atari ST/STe/TT'#000+
+  '6*2TMACOS_Macintosh m68k'#000+
+  '6*2TLINUX_Linux-68k'#000+
+  '**1*_'#000+
+  '**1?_shows this help'#000+
+  '**1h_shows this help ','without waiting'#000
+);

+ 6 - 5
compiler/pp.pas

@@ -268,9 +268,6 @@ end;
 begin
 begin
   oldexit:=exitproc;
   oldexit:=exitproc;
   exitproc:=@myexit;
   exitproc:=@myexit;
-{$ifdef fpc}
-  heapblocks:=true;
-{$endif}
 {$ifdef UseOverlay}
 {$ifdef UseOverlay}
   InitOverlay;
   InitOverlay;
 {$endif}
 {$endif}
@@ -280,7 +277,11 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.49  1999-09-16 23:05:54  florian
+  Revision 1.50  1999-09-17 17:14:10  peter
+    * @procvar fixes for tp mode
+    * @<id>:= gives now an error
+
+  Revision 1.49  1999/09/16 23:05:54  florian
     * m68k compiler is again compilable (only gas writer, no assembler reader)
     * m68k compiler is again compilable (only gas writer, no assembler reader)
 
 
   Revision 1.48  1999/09/10 18:48:08  florian
   Revision 1.48  1999/09/10 18:48:08  florian
@@ -303,7 +304,7 @@ end.
 
 
   Revision 1.43  1999/06/02 22:25:44  pierre
   Revision 1.43  1999/06/02 22:25:44  pierre
   * catch is used for go32v2 also
   * catch is used for go32v2 also
-  
+
   Revision 1.42  1999/05/12 22:36:11  florian
   Revision 1.42  1999/05/12 22:36:11  florian
     * override isn't allowed in objects!
     * override isn't allowed in objects!
 
 

+ 21 - 1
compiler/tccnv.pas

@@ -832,6 +832,22 @@ implementation
             CGMessage2(type_e_incompatible_types,p^.left^.resulttype^.typename,p^.resulttype^.typename);
             CGMessage2(type_e_incompatible_types,p^.left^.resulttype^.typename,p^.resulttype^.typename);
          end;
          end;
 
 
+       { tp7 procvar support, when right is not a procvardef and we got a
+         loadn of a procvar then convert to a calln, the check for the
+         result is already done in is_convertible, also no conflict with
+         @procvar is here because that has an extra addrn }
+         if (m_tp_procvar in aktmodeswitches) and
+            (p^.resulttype^.deftype<>procvardef) and
+            (p^.left^.resulttype^.deftype=procvardef) and
+            (p^.left^.treetype=loadn) then
+          begin
+            hp:=gencallnode(nil,nil);
+            hp^.right:=p^.left;
+            firstpass(hp);
+            p^.left:=hp;
+          end;
+
+
         { ordinal contants can be directly converted }
         { ordinal contants can be directly converted }
         { but not int64/qword                        }
         { but not int64/qword                        }
         if (p^.left^.treetype=ordconstn) and is_ordinal(p^.resulttype) and
         if (p^.left^.treetype=ordconstn) and is_ordinal(p^.resulttype) and
@@ -928,7 +944,11 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.47  1999-09-11 09:08:34  florian
+  Revision 1.48  1999-09-17 17:14:12  peter
+    * @procvar fixes for tp mode
+    * @<id>:= gives now an error
+
+  Revision 1.47  1999/09/11 09:08:34  florian
     * fixed bug 596
     * fixed bug 596
     * fixed some problems with procedure variables and procedures of object,
     * fixed some problems with procedure variables and procedures of object,
       especially in TP mode. Procedure of object doesn't apply only to classes,
       especially in TP mode. Procedure of object doesn't apply only to classes,

+ 10 - 1
compiler/tcld.pas

@@ -238,6 +238,11 @@ implementation
          if is_open_array(p^.left^.resulttype) then
          if is_open_array(p^.left^.resulttype) then
            CGMessage(type_e_mismatch);
            CGMessage(type_e_mismatch);
 
 
+         { assignments to addr aren't allowed, but support @procvar for tp }
+         if (p^.left^.treetype=addrn) and
+            not(p^.left^.procvarload) then
+          CGMessage(type_e_no_assign_to_addr);
+
          { test if we can avoid copying string to temp
          { test if we can avoid copying string to temp
            as in s:=s+...; (PM) }
            as in s:=s+...; (PM) }
 {$ifdef dummyi386}
 {$ifdef dummyi386}
@@ -504,7 +509,11 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.44  1999-09-11 19:47:26  florian
+  Revision 1.45  1999-09-17 17:14:12  peter
+    * @procvar fixes for tp mode
+    * @<id>:= gives now an error
+
+  Revision 1.44  1999/09/11 19:47:26  florian
     * bug fix for @tobject.method, fixes bug 557, 605 and 606
     * bug fix for @tobject.method, fixes bug 557, 605 and 606
 
 
   Revision 1.43  1999/09/11 09:08:34  florian
   Revision 1.43  1999/09/11 09:08:34  florian

+ 105 - 66
compiler/tcmem.pas

@@ -173,78 +173,113 @@ implementation
          make_not_regable(p^.left);
          make_not_regable(p^.left);
          if not(assigned(p^.resulttype)) then
          if not(assigned(p^.resulttype)) then
            begin
            begin
-              { proc/procvar 2 procvar ? }
-              if p^.left^.treetype=calln then
-                begin
-                   { is it a procvar, this is needed for @procvar in tp mode ! }
-                   if assigned(p^.left^.right) then
+              { tp @procvar support (type of @procvar is a void pointer)
+                Note: we need to leave the addrn in the tree,
+                else we can't see the difference between @procvar and procvar.
+                we set the procvarload flag so a secondpass does nothing for
+                this node (PFV) }
+              if (m_tp_procvar in aktmodeswitches) then
+               begin
+                 hp:=p^.left;
+                 case hp^.treetype of
+                   calln :
                      begin
                      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 }
-                        { we shouldn't convert things like @tcollection.load }
-                        if (p^.left^.symtableprocentry^.owner^.symtabletype=objectsymtable) and
-                          not(assigned(p^.left^.methodpointer) and (p^.left^.methodpointer^.treetype=typen)) then
+                       { is it a procvar? }
+                       hp:=hp^.right;
+                       if assigned(hp) then
                          begin
                          begin
-                           hp:=genloadmethodcallnode(pprocsym(p^.left^.symtableprocentry),p^.left^.symtableproc,
-                             getcopy(p^.left^.methodpointer));
-                           disposetree(p);
+                           { remove calln node }
+                           putnode(p^.left);
+                           p^.left:=hp;
                            firstpass(hp);
                            firstpass(hp);
-                           p:=hp;
-                           exit;
-                         end
-                        else
-                         hp:=genloadcallnode(pprocsym(p^.left^.symtableprocentry),p^.left^.symtableproc);
-                      end;
-
-                   { result is a procedure variable }
-                   { No, to be TP compatible, you must return a pointer to
-                     the procedure that is stored in the procvar.}
-                   if not(m_tp_procvar in aktmodeswitches) then
+                           p^.procvarload:=true;
+                         end;
+                     end;
+                   loadn,
+                   vecn,
+                   derefn :
                      begin
                      begin
-                        p^.resulttype:=new(pprocvardef,init);
-
-                     { it could also be a procvar, not only pprocsym ! }
-                        if p^.left^.symtableprocentry^.typ=varsym then
-                         hp3:=pabstractprocdef(pvarsym(p^.left^.symtableentry)^.definition)
-                        else
-                         hp3:=pabstractprocdef(pprocsym(p^.left^.symtableprocentry)^.definition);
-
-                        pprocvardef(p^.resulttype)^.proctypeoption:=hp3^.proctypeoption;
-                        pprocvardef(p^.resulttype)^.proccalloptions:=hp3^.proccalloptions;
-                        pprocvardef(p^.resulttype)^.procoptions:=hp3^.procoptions;
-                        pprocvardef(p^.resulttype)^.retdef:=hp3^.retdef;
-                        pprocvardef(p^.resulttype)^.symtablelevel:=hp3^.symtablelevel;
-
-                      { method ? then set the methodpointer flag }
-                        if (hp3^.owner^.symtabletype=objectsymtable) and
-                           (pobjectdef(hp3^.owner^.defowner)^.is_class) then
+                       firstpass(hp);
+                       if codegenerror then
+                        exit;
+                       if hp^.resulttype^.deftype=procvardef then
+                        begin
+                          p^.procvarload:=true;
+                        end;
+                     end;
+                 end;
+               end;
+              if p^.procvarload then
+               begin
+                 p^.registers32:=p^.left^.registers32;
+                 p^.registersfpu:=p^.left^.registersfpu;
+{$ifdef SUPPORT_MMX}
+                 p^.registersmmx:=p^.left^.registersmmx;
+{$endif SUPPORT_MMX}
+                 if p^.registers32<1 then
+                   p^.registers32:=1;
+                 p^.location.loc:=p^.left^.location.loc;
+                 p^.resulttype:=voidpointerdef;
+                 exit;
+               end;
+
+              { proc 2 procvar ? }
+              if p^.left^.treetype=calln then
+                begin
+                  { generate a methodcallnode or proccallnode }
+                  { we shouldn't convert things like @tcollection.load }
+                  if (p^.left^.symtableprocentry^.owner^.symtabletype=objectsymtable) and
+                    not(assigned(p^.left^.methodpointer) and (p^.left^.methodpointer^.treetype=typen)) 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);
+
+                  { result is a procedure variable }
+                  { No, to be TP compatible, you must return a pointer to
+                    the procedure that is stored in the procvar.}
+                  if not(m_tp_procvar in aktmodeswitches) then
+                    begin
+                       p^.resulttype:=new(pprocvardef,init);
+
+                    { it could also be a procvar, not only pprocsym ! }
+                       if p^.left^.symtableprocentry^.typ=varsym then
+                        hp3:=pabstractprocdef(pvarsym(p^.left^.symtableentry)^.definition)
+                       else
+                        hp3:=pabstractprocdef(pprocsym(p^.left^.symtableprocentry)^.definition);
+
+                       pprocvardef(p^.resulttype)^.proctypeoption:=hp3^.proctypeoption;
+                       pprocvardef(p^.resulttype)^.proccalloptions:=hp3^.proccalloptions;
+                       pprocvardef(p^.resulttype)^.procoptions:=hp3^.procoptions;
+                       pprocvardef(p^.resulttype)^.retdef:=hp3^.retdef;
+                       pprocvardef(p^.resulttype)^.symtablelevel:=hp3^.symtablelevel;
+
+                     { method ? then set the methodpointer flag }
+                       if (hp3^.owner^.symtabletype=objectsymtable) and
+                          (pobjectdef(hp3^.owner^.defowner)^.is_class) then
 {$ifdef INCLUDEOK}
 {$ifdef INCLUDEOK}
-                          include(pprocvardef(p^.resulttype)^.procoptions,po_methodpointer);
+                         include(pprocvardef(p^.resulttype)^.procoptions,po_methodpointer);
 {$else}
 {$else}
-                          pprocvardef(p^.resulttype)^.procoptions:=pprocvardef(p^.resulttype)^.procoptions+[po_methodpointer];
+                         pprocvardef(p^.resulttype)^.procoptions:=pprocvardef(p^.resulttype)^.procoptions+[po_methodpointer];
 {$endif}
 {$endif}
-                        hp2:=hp3^.para1;
-                        while assigned(hp2) do
-                          begin
-                             pprocvardef(p^.resulttype)^.concatdef(hp2^.data,hp2^.paratyp);
-                             hp2:=hp2^.next;
-                          end;
-                     end
-                   else
-                     p^.resulttype:=voidpointerdef;
-
-                   disposetree(p^.left);
-                   p^.left:=hp;
+                       hp2:=hp3^.para1;
+                       while assigned(hp2) do
+                         begin
+                            pprocvardef(p^.resulttype)^.concatdef(hp2^.data,hp2^.paratyp);
+                            hp2:=hp2^.next;
+                         end;
+                    end
+                  else
+                    p^.resulttype:=voidpointerdef;
+
+                  disposetree(p^.left);
+                  p^.left:=hp;
                 end
                 end
               else
               else
                 begin
                 begin
@@ -595,7 +630,11 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.27  1999-09-11 11:10:39  florian
+  Revision 1.28  1999-09-17 17:14:12  peter
+    * @procvar fixes for tp mode
+    * @<id>:= gives now an error
+
+  Revision 1.27  1999/09/11 11:10:39  florian
     * fix of my previous commit, make cycle was broken
     * fix of my previous commit, make cycle was broken
 
 
   Revision 1.26  1999/09/11 09:08:34  florian
   Revision 1.26  1999/09/11 09:08:34  florian

+ 6 - 1
compiler/tree.pas

@@ -218,6 +218,7 @@ unit tree;
                       methodpointer : ptree;
                       methodpointer : ptree;
                       no_check,unit_specific,
                       no_check,unit_specific,
                       return_value_used,static_call : boolean);
                       return_value_used,static_call : boolean);
+             addrn : (procvarload:boolean);
              ordconstn : (value : longint);
              ordconstn : (value : longint);
              realconstn : (value_real : bestreal;lab_real : pasmlabel);
              realconstn : (value_real : bestreal;lab_real : pasmlabel);
              fixconstn : (value_fix: longint);
              fixconstn : (value_fix: longint);
@@ -1765,7 +1766,11 @@ unit tree;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.96  1999-09-16 11:34:59  pierre
+  Revision 1.97  1999-09-17 17:14:13  peter
+    * @procvar fixes for tp mode
+    * @<id>:= gives now an error
+
+  Revision 1.96  1999/09/16 11:34:59  pierre
    * typo correction
    * typo correction
 
 
   Revision 1.95  1999/09/10 18:48:11  florian
   Revision 1.95  1999/09/10 18:48:11  florian