Browse Source

msg/errore.msg:
+ add error message if a generic method is declared inside an interface
+ add error message if a generic method is declared as virtual

git-svn-id: trunk@31764 -

svenbarth 10 years ago
parent
commit
79f19f79f2
3 changed files with 337 additions and 330 deletions
  1. 7 1
      compiler/msg/errore.msg
  2. 4 2
      compiler/msgidx.inc
  3. 326 327
      compiler/msgtxt.inc

+ 7 - 1
compiler/msg/errore.msg

@@ -411,7 +411,7 @@ scan_e_illegal_hugepointernormalization=02098_E_Illegal argument for HUGEPOINTER
 #
 # Parser
 #
-# 03339 is the last used one
+# 03343 is the last used one
 #
 % \section{Parser messages}
 % This section lists all parser messages. The parser takes care of the
@@ -1536,6 +1536,12 @@ parser_u_already_compiled=03340_UL_Unit $1 has been already compiled meanwhile.
 % a compilation of the current unit, so the current compilation can be aborted.
 parser_e_explicit_method_implementation_for_specializations_not_allowed=03341_E_Explicit implementation of methods for specializations of generics is not allowed
 % Methods introduced in a generic must be implemented for the generic. It is not possible to implement them only for specializations.
+parser_e_no_genfuncs_in_interfaces=03342_E_Generic methods are not allowed in interfaces
+% Generic methods are not allowed in interfaces, because there is no way to specialize a suitable
+% implementation.
+parser_e_genfuncs_cannot_be_virtual=03343_E_Generic methods can not be virtual
+% Generic methods can not be declared as virtual as there'd need to be a VMT entry for each
+% specialization. This is however not possible with a static VMT.
 %
 %
 % \end{description}

+ 4 - 2
compiler/msgidx.inc

@@ -443,6 +443,8 @@ const
   parser_e_global_generic_references_static=03339;
   parser_u_already_compiled=03340;
   parser_e_explicit_method_implementation_for_specializations_not_allowed=03341;
+  parser_e_no_genfuncs_in_interfaces=03342;
+  parser_e_genfuncs_cannot_be_virtual=03343;
   type_e_mismatch=04000;
   type_e_incompatible_types=04001;
   type_e_not_equal_types=04002;
@@ -1017,9 +1019,9 @@ const
   option_info=11024;
   option_help_pages=11025;
 
-  MsgTxtSize = 76087;
+  MsgTxtSize = 76184;
 
   MsgIdxMax : array[1..20] of longint=(
-    26,99,342,124,96,58,127,32,207,64,
+    26,99,344,124,96,58,127,32,207,64,
     58,20,1,1,1,1,1,1,1,1
   );

File diff suppressed because it is too large
+ 326 - 327
compiler/msgtxt.inc


Some files were not shown because too many files changed in this diff