spec: compile-shape-stubs: Record encountered shape specs.
authorRicardo Wurmus <rekado@elephly.net>
Sun, 7 Mar 2021 07:41:45 +0000 (08:41 +0100)
committerRicardo Wurmus <rekado@elephly.net>
Sun, 7 Mar 2021 07:41:45 +0000 (08:41 +0100)
We use this when compiling structures to determine if a structure
member is a wrapper around a primitive type.

language/aws/spec.scm

index 2b63606eb6363090606d4c5a9b3ce53dec827a49..3a6614b27660ba19e2e156a144a877a7d2b2dafd 100644 (file)
@@ -24,6 +24,8 @@
   #:use-module (system base language)
   #:export (aws))
 
+(define %shape-specs (list))
+
 (define (primitive? exp)
   (member (assoc-ref exp "type")
           '("string"
@@ -109,7 +111,12 @@ if this is not a primitive data type."
 (define (compile-shape-stubs exp)
   "Compile an AWS shape expression EXP to a stub."
   (match exp
-    ((name . _)
+    ((name . spec)
+     ;; Record shape spec for later type checking
+     (set! %shape-specs
+           (acons (string->symbol name)
+                  (alist-delete "documentation" spec)
+                  %shape-specs))
      `(define ,(string->symbol name) #f))))
 
 (define (compile-shape exp)