Handles list of error symbols.

This commit is contained in:
Dominik Pantůček 2023-03-19 21:00:22 +01:00
parent dd8719f554
commit 7a5975df63

View file

@ -102,17 +102,19 @@
;; Reports error with highlighted source line(s), configured via the ;; Reports error with highlighted source line(s), configured via the
;; *member-file-check-syntax* parameter. ;; *member-file-check-syntax* parameter.
(define (report-line-error file-name lines highlights message) (define (report-line-error file-name lines highlight message)
(when (not (eq? (*member-file-check-syntax*) 'quiet)) (when (not (eq? (*member-file-check-syntax*) 'quiet))
(print "Error in " file-name ": " message) (print "Error in " file-name ": " message)
(newline) (newline)
(print-source-listing lines highlights (print-source-listing lines (list highlight)
(*member-file-context*) (*member-file-context*)
a:error a:default a:error a:default
"" "" "...")) "" "" "..."))
(if (eq? (*member-file-check-syntax*) 'error) (if (eq? (*member-file-check-syntax*) 'error)
(exit 1) (exit 1)
#f)) (list member-file-error-symbol
(list highlight
message))))
;; Parses given key-value line. Key is up to first space, value is the ;; Parses given key-value line. Key is up to first space, value is the
;; rest of the line. If the line doesn't contain anything, returns #f. ;; rest of the line. If the line doesn't contain anything, returns #f.
@ -136,16 +138,16 @@
(if (member key all-valid-keys) (if (member key all-valid-keys)
(list key val) (list key val)
(if file-name (if file-name
(report-line-error file-name lines (list line-number) (report-line-error file-name lines line-number
(sprintf "Invalid key ~A" key)) (sprintf "Invalid key ~A" key))
(error 'split-member-line (sprintf "Invalid key ~A" key))))) (error 'split-member-line (sprintf "Invalid key ~A" key)))))
(if (member (string->symbol lc) all-valid-keys) (if (member (string->symbol lc) all-valid-keys)
(if file-name (if file-name
(report-line-error file-name lines (list line-number) (report-line-error file-name lines line-number
(sprintf "No value for key ~A" lc)) (sprintf "No value for key ~A" lc))
(error 'split-member-line (sprintf "No value for key ~A" lc))) (error 'split-member-line (sprintf "No value for key ~A" lc)))
(if file-name (if file-name
(report-line-error file-name lines (list line-number) (report-line-error file-name lines line-number
(sprintf "No value for invalid key ~A" lc)) (sprintf "No value for invalid key ~A" lc))
(error 'split-member-line (error 'split-member-line
(sprintf "No value for invalid key ~A" lc))))))))) (sprintf "No value for invalid key ~A" lc)))))))))
@ -183,7 +185,9 @@
(case k (case k
((card desfire credit) (dict-set d k (cons v (dict-ref d k '())))) ((card desfire credit) (dict-set d k (cons v (dict-ref d k '()))))
(else (else
(dict-set d k v)))))) (if (eq? k member-file-error-symbol)
(dict-set d k (cons v (dict-ref d k '())))
(dict-set d k v)))))))
;; Converts given key in member info dictionary from period markers ;; Converts given key in member info dictionary from period markers
;; list to periods. ;; list to periods.