浏览代码

* never prefer conversion to formaldef

git-svn-id: trunk@4387 -
peter 19 年之前
父节点
当前提交
a704cbf048
共有 4 个文件被更改,包括 34 次插入3 次删除
  1. 1 0
      .gitattributes
  2. 1 1
      compiler/defcmp.pas
  3. 3 2
      compiler/htypechk.pas
  4. 29 0
      tests/webtbs/tw7071.pp

+ 1 - 0
.gitattributes

@@ -7233,6 +7233,7 @@ tests/webtbs/tw6977.pp svneol=native#text/plain
 tests/webtbs/tw6980.pp svneol=native#text/plain
 tests/webtbs/tw6989.pp svneol=native#text/plain
 tests/webtbs/tw7006.pp svneol=native#text/plain
+tests/webtbs/tw7071.pp svneol=native#text/plain
 tests/webtbs/tw7100.pp svneol=native#text/plain
 tests/webtbs/tw7104.pp svneol=native#text/plain
 tests/webtbs/tw7143.pp -text

+ 1 - 1
compiler/defcmp.pas

@@ -1248,7 +1248,7 @@ implementation
                else
                 { Just about everything can be converted to a formaldef...}
                 if not (def_from.deftype in [abstractdef,errordef]) then
-                  eq:=te_convert_l1;
+                  eq:=te_convert_l2;
              end;
         end;
 

+ 3 - 2
compiler/htypechk.pas

@@ -1326,8 +1326,9 @@ implementation
         case def_to.deftype of
           formaldef :
             begin
-              { all types can be passed to a formaldef }
-              eq:=te_equal;
+              { all types can be passed to a formaldef,
+                but it is not the prefered way }
+              eq:=te_convert_l2;
             end;
           orddef :
             begin

+ 29 - 0
tests/webtbs/tw7071.pp

@@ -0,0 +1,29 @@
+{$mode objfpc}{$H+}
+
+uses
+  Classes, SysUtils, Pipes;
+
+var
+  err : boolean;
+
+procedure Proc(var Buf);
+begin
+  writeln('Proc(var Buf)');
+end;
+
+procedure Proc(Stream: TStream);
+begin
+  writeln('Proc(Stream: TStream)');
+  err:=false;
+end;
+
+var
+  InputStream: TInputPipeStream;
+begin
+  err:=true;
+  InputStream:=TInputPipeStream.Create(0);
+  Proc(InputStream);
+  if err then
+    halt(1);
+end.
+