~ chicken-core (chicken-5) d7150ef1be9a998b507a1230529b472fd1d034d5


commit d7150ef1be9a998b507a1230529b472fd1d034d5
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Nov 8 14:52:15 2023 +0100
Commit:     Peter Bex <peter@more-magic.net>
CommitDate: Fri Nov 10 15:10:11 2023 +0100

    Warn if processing egg property in wrong context (#1492)
    
    Signed-off-by: Peter Bex <peter@more-magic.net>

diff --git a/NEWS b/NEWS
index f8d0f085..df812c5b 100644
--- a/NEWS
+++ b/NEWS
@@ -54,6 +54,7 @@
   - chicken-install now accepts the -location command line option
     (short: -l) to specify local directories where to get egg sources
     from.
+  - chicken-install now gives a warning on unexpected properties (#1492).
 
 - Syntax expander
   - When passing a module as an environment to eval, correctly resolve
diff --git a/egg-compile.scm b/egg-compile.scm
index c9a5565e..dd7c429e 100644
--- a/egg-compile.scm
+++ b/egg-compile.scm
@@ -379,7 +379,7 @@
                             link-objects: lobjs
                             eggfile: eggfile)
 		      prgs)))))
-        (else (compile-common info compile-component))))
+        (else (compile-common info compile-component 'component))))
     (define (compile-extension/program info)
       (case (car info)
         ((linkage) 
@@ -416,8 +416,8 @@
          (set! cdeps (append cdeps (map ->dep (cdr info)))))
         ((source-dependencies)
          (set! sdeps (append sdeps (map ->dep (cdr info)))))
-        (else (compile-common info compile-extension/program))))
-    (define (compile-common info walk)
+        (else (compile-common info compile-extension/program 'extension/program))))
+    (define (compile-common info walk context)
       (case (car info)
         ((target)
          (when (eq? mode 'target)
@@ -428,14 +428,16 @@
         ((error)
          (apply error (cdr info)))
         ((cond-expand)
-         (compile-cond-expand info walk))))
+         (compile-cond-expand info walk))
+        (else
+          (fprintf (current-error-port) "\nWarning (~a): property `~a' invalid or in wrong context (~a)\n\n" eggfile (car info) context))))
     (define (compile-data/include info)
       (case (car info)
         ((destination)
          (set! dest (->string (arg info 1 name?))))
         ((files) 
          (set! files (append files (map ->string (cdr info)))))
-        (else (compile-common info compile-data/include))))
+        (else (compile-common info compile-data/include 'data/include))))
     (define (compile-options info)
       (case (car info)
         ((csc-options) (set! opts (append opts (cdr info))))
@@ -457,10 +459,13 @@
           (error "invalid dependency" x)))
     (define (compile info)
       (case (car info)
+        ((synopsis dependencies test-dependencies category version author maintainer
+                   license build-dependencies foreign-dependencies platform
+                   distribution-files) #f)
         ((components) (for-each compile-component (cdr info)))
         ((component-options)
          (for-each compile-options (cdr info)))
-        (else (compile-common info compile))))
+        (else (compile-common info compile 'toplevel))))
     (define (arg info n #!optional (pred (constantly #t)))
       (when (< (length info) n)
         (error "missing argument" info n))
Trap