]> git.eshelyaron.com Git - emacs.git/commit
Add comp-cstr.el and comp-cstr-tests.el
authorAndrea Corallo <akrl@sdf.org>
Mon, 23 Nov 2020 22:51:17 +0000 (23:51 +0100)
committerAndrea Corallo <akrl@sdf.org>
Thu, 26 Nov 2020 21:02:30 +0000 (22:02 +0100)
commit23c082638e77219b51e14797a0edae27ae59a9d6
tree51fa5935a1ba7b6991ee0e402eeaa0132e94d03b
parent7a8370ed0f1b1d62657e385789ee2f81c5607ec5
Add comp-cstr.el and comp-cstr-tests.el

As the constraint logic of the compiler is not trivial and largely
independent from the rest of the code move it into comp-cstr.el to
ease separation and maintainability.

This commit improve the conversion type
specifier -> constraint for generality.

Lastly this should help with bootstrap time as comp.el compilation
unit is slimmed down.

* lisp/emacs-lisp/comp-cstr.el: New file.
(comp--typeof-types, comp--all-builtin-types): Move from comp.el.
(comp-cstr, comp-cstr-f): Same + rename.
(comp-cstr-ctxt): New struct.
(comp-supertypes, comp-common-supertype-2)
(comp-common-supertype, comp-subtype-p, comp-union-typesets)
(comp-range-1+, comp-range-1-, comp-range-<, comp-range-union)
(comp-range-intersection): Move from comp.el.
(comp-cstr-union-no-range, comp-cstr-union): Move from comp.el and
rename.
(comp-cstr-union-make): New function.
(comp-type-spec-to-cstr, comp-cstr-to-type-spec): Move from
comp.el, rename it and rework it.

* lisp/emacs-lisp/comp.el (comp-known-func-cstr-h): Rework.
(comp-ctxt): Remove two fields and include `comp-cstr-ctxt'.
(comp-mvar, comp-fwprop-call): Update for `comp-cstr' being
renamed.
(comp-fwprop-insn): Use `comp-cstr-union-no-range' or
`comp-cstr-union'.
(comp-ret-type-spec): Use `comp-cstr-union' and rework.

* test/lisp/emacs-lisp/comp-cstr-tests.el: New file.
(comp-cstr-test-ts, comp-cstr-typespec-test): New functions.
(comp-cstr-typespec-tests-alist): New defconst to generate tests
on.
(comp-cstr-generate-tests): New macro.

* test/src/comp-tests.el (comp-tests-type-spec-tests): Update.
(ret-type-spec): Initialize constraint context.
lisp/Makefile.in
lisp/emacs-lisp/comp-cstr.el [new file with mode: 0644]
lisp/emacs-lisp/comp.el
test/lisp/emacs-lisp/comp-cstr-tests.el [new file with mode: 0644]
test/src/comp-tests.el