ソースを参照

* fixed new(x) crash if x contains an error

peter 27 年 前
コミット
2f303a746d
1 ファイル変更17 行追加11 行削除
  1. 17 11
      compiler/pstatmnt.pas

+ 17 - 11
compiler/pstatmnt.pas

@@ -874,16 +874,19 @@ unit pstatmnt;
                            cleartempgen;
                            do_firstpass(p2);
 
-                           if (ht=_NEW) and ((p2^.procdefinition^.options and poconstructor)=0) then
-                                  Message(parser_e_expr_have_to_be_constructor_call);
-                           if (ht=_DISPOSE) and ((p2^.procdefinition^.options and podestructor)=0) then
-                                  Message(parser_e_expr_have_to_be_destructor_call);
-
-                           if ht=_NEW then
-                                 begin
-                                         p2:=gennode(assignn,getcopy(p),gensinglenode(newn,p2));
-                                         p2^.right^.resulttype:=pd2;
-                                 end;
+                           if not codegenerror then
+                            begin
+                              if (ht=_NEW) and ((p2^.procdefinition^.options and poconstructor)=0) then
+                                Message(parser_e_expr_have_to_be_constructor_call);
+                              if (ht=_DISPOSE) and ((p2^.procdefinition^.options and podestructor)=0) then
+                                Message(parser_e_expr_have_to_be_destructor_call);
+
+                              if ht=_NEW then
+                               begin
+                                 p2:=gennode(assignn,getcopy(p),gensinglenode(newn,p2));
+                                 p2^.right^.resulttype:=pd2;
+                               end;
+                            end;
                            new_dispose_statement:=p2;
                          end;
             end
@@ -1242,7 +1245,10 @@ unit pstatmnt;
 end.
 {
   $Log$
-  Revision 1.55  1998-12-16 12:30:59  jonas
+  Revision 1.56  1998-12-23 22:52:56  peter
+    * fixed new(x) crash if x contains an error
+
+  Revision 1.55  1998/12/16 12:30:59  jonas
     * released CaseRange
 
   Revision 1.54  1998/12/15 22:32:24  jonas