瀏覽代碼

* warn if the compiler hides an eventual "+" operator overload if modeswitch ArrayOperators is active

git-svn-id: trunk@39261 -
svenbarth 7 年之前
父節點
當前提交
fa78bb0e89
共有 1 個文件被更改,包括 8 次插入0 次删除
  1. 8 0
      compiler/nadd.pas

+ 8 - 0
compiler/nadd.pas

@@ -127,6 +127,7 @@ implementation
 {$ENDIF}
       globtype,systems,constexp,compinnr,
       cutils,verbose,globals,widestr,
+      tokens,
       symconst,symdef,symsym,symcpu,symtable,defutil,defcmp,
       cgbase,
       htypechk,pass_1,
@@ -1316,6 +1317,13 @@ implementation
 
          { allow operator overloading }
          hp:=self;
+
+         if is_dynamic_array(left.resultdef) and is_dynamic_array(right.resultdef) and
+             (nodetype=addn) and
+             (m_array_operators in current_settings.modeswitches) and
+             isbinaryoverloaded(hp,[ocf_check_non_overloadable,ocf_check_only]) then
+           message3(parser_w_operator_overloaded_hidden_3,left.resultdef.typename,arraytokeninfo[_PLUS].str,right.resultdef.typename);
+
          if isbinaryoverloaded(hp,[]) then
            begin
               result:=hp;