~ chicken-core (chicken-5) 5df4ce1939c7450dfa481172204b6c898505e7a5


commit 5df4ce1939c7450dfa481172204b6c898505e7a5
Author:     alice maz <alice@alicemaz.com>
AuthorDate: Sat Aug 15 13:43:16 2020 -0500
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Aug 21 10:52:06 2020 +0200

    Always write file when -emit-inline-file given
    
    Presently, -emit-inline-file will not emit a file, and will delete one
    if it exists, if there are no exported procedures that can be inlined.
    This means in a pattern where you always emit for every -unit, and
    always consult for every -uses, compilation will halt if a file isn't
    found.
    
    It's a matter of opinion what the right thing to do here is, but I'm
    inclined to think a file should always be emitted if the flag is
    passed, even it's empty, because:
    
     - It's consistent with how -emit-types-file behaves
    
     - Usage of the flag indicates user intent to create the file "absence
       of evidence isn't evidence of absence"--the existence of an empty
       file is an affirmative
    
     - Statement there is nothing to inline
    
    Note the deletion/omission behavor was added on purpose in 2010, so
    this isn't accidental, but I'm not sure the reasoning.
    
    Fixes #1715
    
    Signed-off-by: megane <meganeka@gmail.com>
    - I copied the rationale from the Trac issue page.
    Signed-off-by: felix <felix@call-with-current-continuation.org>

diff --git a/support.scm b/support.scm
index 5eff6e23..f610349d 100644
--- a/support.scm
+++ b/support.scm
@@ -841,18 +841,16 @@
 	   (set! lst (cons sym lst))
 	   (set! out (cons (list sym (node->sexpr (cdr val))) out)))))
      db)
-    (if (null? out)
-	(delete-file* inline-file)
-	(with-output-to-file inline-file
-	  (lambda ()
-	    (print "; GENERATED BY CHICKEN " (chicken-version) " FROM "
-		   source-file "\n")
-	    (for-each
-	     (lambda (x)
-	       (pp x)
-	       (newline))
-	     (reverse out))
-	    (print "; END OF FILE"))))
+    (with-output-to-file inline-file
+      (lambda ()
+	(print "; GENERATED BY CHICKEN " (chicken-version) " FROM "
+	       source-file "\n")
+	(for-each
+	 (lambda (x)
+	   (pp x)
+	   (newline))
+	 (reverse out))
+	(print "; END OF FILE")))
     (when (and (pair? lst)
 	       (debugging 'i "the following procedures can be globally inlined:"))
       (for-each (cut print "  " <>) (sort-symbols lst)))))
Trap