enable includes to have multiple targets
All checks were successful
Sex CI / build-linux (pull_request) Successful in 4m47s
Sex CI / build-linux (push) Successful in 4m47s

This commit was merged in pull request #35.
This commit is contained in:
2026-09-26 16:54:51 +03:00
parent b1ab18b9af
commit 62316e1e3d
2 changed files with 25 additions and 1 deletions

View File

@@ -72,7 +72,7 @@
((or ('var . _)
('pub 'var . _)
('extern 'var . _)) (process-global-var sex-form acc))
(('include _) (cons sex-form acc))
(('include . includes) (process-includes sex-form includes acc))
((or ('define name . _)
('pub 'define name . _))
(add-define name sex-form)
@@ -92,6 +92,17 @@
(else (sex-error sex-form "unknown top level form" sex-form))))
(define (process-includes sex-form includes acc)
;; consume (include ...) form and add to acc
;; (include <inc>) for each include
(let process ((includes includes)
(acc acc))
(if (null? includes)
acc
(process (cdr includes)
(cons (copy-form-source! sex-form `(include ,(car includes)))
acc)))))
(define (process-imports module-public-forms acc)
;; consume (import ...) form and process imports so
;; data types end up in types db

View File

@@ -115,4 +115,17 @@
(union t-doc-val ((i int) (f float))))
(semen-process
'((union t-doc-val "Either." ((i int) (f float))))))
;; Includes
(test '((include stdio.h))
(semen-process
'((include stdio.h))))
(test '((include stdio.h)
(include stdlib.h))
(semen-process
'((include stdio.h
stdlib.h))))
(test '()
(semen-process
'((include))))
)