Răsfoiți Sursa

* allow nil for constants of procedure variables

florian 2 zile în urmă
părinte
comite
cdec9590e1
2 a modificat fișierele cu 20 adăugiri și 0 ștergeri
  1. 6 0
      compiler/ngtcon.pas
  2. 14 0
      tests/tbs/tb0727.pp

+ 6 - 0
compiler/ngtcon.pas

@@ -1615,6 +1615,12 @@ function get_next_varsym(def: tabstractrecorddef; const SymList:TFPHashObjectLis
             if not def.is_addressonly then
               ftcb.emit_tai(Tai_const.Create_sym(nil),voidpointertype);
           end
+        else if n.nodetype=niln then
+          begin
+            ftcb.queue_emit_ordconst(0,procaddrdef);
+            if not def.is_addressonly then
+              ftcb.emit_tai(Tai_const.Create_sym(nil),voidpointertype);
+          end
         else
           Message(parser_e_illegal_expression);
         ftcb.maybe_end_aggregate(def);

+ 14 - 0
tests/tbs/tb0727.pp

@@ -0,0 +1,14 @@
+{$mode delphi}
+type
+  TSqlDestroyPtr = procedure(p: pointer); cdecl;
+
+const
+  SQLITE_TRANSIENT = pointer(1);
+  SQLITE_STATIC = pointer(0);
+var
+  TRANSIENT_STATIC: array[boolean] of TSqlDestroyPtr = (
+    SQLITE_TRANSIENT,
+    SQLITE_STATIC);
+
+begin
+end.