Commit graph

7155 commits

Author SHA1 Message Date
Andrea Corallo
3540b1f167 * Guarantee fwprop convergence and termination
* lisp/emacs-lisp/comp.el (comp-emit-call-cstr): Have new-mvar as
	LHS *and* RHS when constraining in and to ensure monotonicity and
	fwprop convergence.
	(comp-fwprop): Raise a warning for debug reasons in case fwprop
	does not converge within 100 iterations.
2020-12-21 20:22:03 +01:00
Andrea Corallo
c70c08013f * Allow for overlapping src and dst in cstr set operations
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-union-1-no-mem)
	(comp-cstr-union-1, comp-cstr-intersection-no-mem)
	(comp-cstr-intersection): Logic update.
2020-12-21 20:22:03 +01:00
Andrea Corallo
8e816b0ad5 Symplify type specifier (not t) as nil
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-intersection-no-mem):
	Add logic.
	* test/lisp/emacs-lisp/comp-cstr-tests.el
	(comp-cstr-typespec-tests-alist): Add two tests.
2020-12-21 20:22:03 +01:00
Andrea Corallo
07b75deea9 Enhance type inference constraining function arguments
* lisp/emacs-lisp/comp.el: Add some commentary.
	(comp-cond-cstrs-target-mvar): Rename and update docstring.
	(comp-add-cond-cstrs): Update to use
	`comp-cond-cstrs-target-mvar'.
	(comp-emit-call-cstr, comp-lambda-list-gen, comp-add-call-cstr):
	New functions.
	(comp-add-cstrs): Call `comp-add-call-cstr'.
	* test/src/comp-tests.el (comp-tests-type-spec-tests): Update two
	type specifier tests.
2020-12-21 20:22:03 +01:00
Andrea Corallo
23791cf74d * Allow for modifying insn-cell inside `comp-loop-insn-in-block'
* lisp/emacs-lisp/comp.el (comp-loop-insn-in-block): Update.
2020-12-21 20:22:02 +01:00
Andrea Corallo
02551085c1 * Rename comp-cond-cstr into comp-add-cstrs
* lisp/emacs-lisp/comp.el (comp-add-cond-cstrs-target-mvar)
	(comp-add-cond-cstrs, comp-add-cstrs): Rename comp-cond-cstr
	-> comp-add-cstrs.
2020-12-21 20:22:02 +01:00
Andrea Corallo
d072ee9d34 * Two minors in comp.el
* lisp/emacs-lisp/comp.el (comp-known-func-cstr-h)
	(comp-ret-type-spec): Style.
2020-12-21 20:22:02 +01:00
Andrea Corallo
48d43f579e * Improve constraint simplification logic in comp-cstr.el
* lisp/emacs-lisp/comp-cstr.el (with-comp-cstr-accessors):
	Simplify.
	(comp-cstr-empty-p): New Funchion.
	(comp-split-pos-neg): Minor.
	(comp-normalize-typeset): Logic update.
	(comp-union-typesets): Minor.
	(comp-intersect-two-typesets): New functio.
	(comp-intersect-typesets): Logic update.
	(comp-range-union, comp-range-intersection): Minor.
	(comp-cstr-union-homogeneous, comp-cstr-union-1-no-mem)
	(comp-cstr-intersection-homogeneous)
	(comp-cstr-intersection-no-mem, comp-cstr-negation)
	(comp-type-spec-to-cstr, comp-cstr-to-type-spec): Logic update.

* lisp/emacs-lisp/comp-cstr.el (with-comp-cstr-accessors): Simplify.
2020-12-21 20:21:33 +01:00
Andrea Corallo
bad18f509d * Improve comp-fwprop pass
Wire-up comp-cstr.el routines in fwprop and constraint mvars also on
the else side of branches.

	* lisp/emacs-lisp/comp.el (comp-emit-assume)
	(comp-cond-cstr-target-mvar, comp-cond-cstr-func)
	(comp-fwprop-insn): Logic update.
	(comp-mvar-value-vld-p, comp-mvar-propagate, comp-fwprop-call):
	Handle neg slot.
2020-12-21 19:00:39 +01:00
Andrea Corallo
2a117ad3d7 * Add mvar pretty print support when dumping LIMPLE
* lisp/emacs-lisp/comp.el (comp-prettyformat-mvar)
	(comp-prettyformat-insn): New function.
	(comp-log-func): Update to use `comp-prettyformat-insn'.
	(comp-finalize-phis): Change LIMPLE phi format to ease
	`comp-prettyformat-insn' destructuring.
2020-12-21 18:23:46 +01:00
Andrea Corallo
f244c21902 Merge remote-tracking branch 'savannah/master' into HEAD 2020-12-20 22:08:42 +01:00
Andrea Corallo
72c1a41573 Have native compiler always preserve multibyte strings (bug#45342)
* lisp/emacs-lisp/comp.el (comp-final): Escape multibyte string
	when offloading compilation to child process.
	* test/src/comp-test-funcs.el (comp-test-45342-f): New function
	* test/src/comp-tests.el (bug-45342): New test
2020-12-20 21:21:39 +01:00
Stefan Kangas
34a73666d9 Shorten some over-wide docstrings in functions and macros
* lisp/allout-widgets.el (allout-widgets-tally-string):
* lisp/array.el (array-mode):
* lisp/calc/calc-units.el (calc-spn):
* lisp/cedet/ede/generic.el (ede-generic-new-autoloader):
* lisp/cedet/semantic/analyze.el (semantic-analyze-find-tag-sequence-default)
(semantic-analyze-find-tag-sequence):
* lisp/cedet/semantic/bovine/c.el (semantic-c-evaluate-symbol-for-hideif):
* lisp/cedet/semantic/bovine/make.el (semantic-lex-make-command):
* lisp/cedet/semantic/db-typecache.el (semanticdb-typecache-include-tags):
* lisp/cedet/semantic/doc.el (semantic-documentation-for-tag):
* lisp/cedet/semantic/tag-ls.el (semantic--tag-attribute-similar-p):
* lisp/emacs-lisp/advice.el (ad-map-arglists):
* lisp/emacs-lisp/bytecomp.el (byte-constant2)
(byte-save-restriction, byte-catch-OBSOLETE, byte-unwind-protect):
* lisp/emacs-lisp/cl-generic.el (cl-generic-combine-methods):
* lisp/emacs-lisp/seq.el (seq-partition, seq-set-equal-p)
(seq-filter):
* lisp/faces.el (face-attribute-specified-or, face-equal):
* lisp/info.el (Info-prev-reference-or-link)
(Info-next-reference-or-link):
* lisp/isearch.el (with-isearch-suspended):
* lisp/kmacro.el (kmacro-step-edit-macro, kmacro-set-counter):
* lisp/org/org-agenda.el (org-agenda-filter-by-category):
* lisp/ses.el (ses-cell-symbol):
* lisp/w32-fns.el (w32-shell-dos-semantics): Shorten doc strings to
not exceed 80-column limits.  (Bug#44858)
2020-12-19 18:21:06 +01:00
Stefan Kangas
f88a7897a8 Shorten over-wide docstrings in variables
* lisp/cedet/semantic/util-modes.el (semantic-highlight-func-popup-menu):
* lisp/emacs-lisp/elint.el (elint-top-form-logged):
* lisp/erc/erc-dcc.el (erc-dcc-list):
* lisp/expand.el (expand-pos):
* lisp/font-lock.el (cpp-font-lock-keywords-source-depth):
* lisp/gnus/gnus-sum.el (gnus-sort-gathered-threads-function):
* lisp/gnus/message.el (message-cite-style-thunderbird):
* lisp/gnus/nnmh.el (nnmh-be-safe):
* lisp/gnus/nntp.el (nntp-open-telnet-envuser):
* lisp/international/mule-cmds.el (current-transient-input-method):
* lisp/net/tramp.el (tramp-file-name-structure):
* lisp/org/ob-R.el (org-babel-R-write-object-command):
* lisp/org/org-attach.el (org-attach-after-change-hook):
* lisp/org/org.el (org-stamp-time-of-day-regexp):
* lisp/progmodes/elisp-mode.el (elisp-xref-find-def-functions):
* lisp/progmodes/ruby-mode.el (ruby-block-mid-re):
* lisp/progmodes/verilog-mode.el (verilog-cache-enabled):
* lisp/term.el (term-scroll-end):
* lisp/textmodes/table.el (table-command-remap-alist)
(table-inhibit-auto-fill-paragraph, table-command-remap-alist):
* lisp/vc/ediff-diff.el (ediff-ignore-similar-regions):
* lisp/vc/ediff-wind.el (ediff-mouse-pixel-threshold):
* lisp/vc/smerge-mode.el (smerge-refine-ignore-whitespace):
* lisp/vc/vc.el (vc-log-short-style):
* lisp/view.el (view-exit-action): Shorten doc strings to not exceed
80-column limits.  (Bug#44858)
2020-12-19 18:21:06 +01:00
Stefan Kangas
5ab5c38987 Shorten over-wide docstrings in defcustoms
* lisp/calc/calc.el (calc-embedded-announce-formula-alist)
(calc-embedded-open-formula, calc-embedded-close-formula)
(calc-matrix-mode):
* lisp/cedet/semantic/imenu.el (semantic-imenu-sort-bucket-function):
* lisp/emacs-lisp/find-func.el (find-feature-regexp):
* lisp/emulation/cua-base.el (cua-paste-pop-rotate-temporarily):
* lisp/emulation/viper-init.el (viper-fast-keyseq-timeout)
(viper-related-files-and-buffers-ring):
* lisp/emulation/viper-keym.el (viper-want-ctl-h-help):
* lisp/gnus/gnus-art.el (gnus-article-banner-alist):
* lisp/gnus/gnus-group.el (gnus-keep-same-level):
* lisp/gnus/gnus-score.el (gnus-adaptive-word-length-limit):
* lisp/gnus/gnus-sum.el (gnus-inhibit-user-auto-expire):
* lisp/gnus/gnus-uu.el (gnus-uu-ignore-files-by-type)
(gnus-uu-do-not-unpack-archives)
(gnus-uu-unmark-articles-not-decoded)
(gnus-uu-correct-stripped-uucode, gnus-uu-save-in-digest)
(gnus-uu-post-include-before-composing):
* lisp/gnus/gnus.el (gnus-use-long-file-name)
(gnus-install-group-spam-parameters):
* lisp/gnus/message.el (message-cite-style):
* lisp/gnus/nnmail.el
(nnmail-split-fancy-with-parent-ignore-groups)
(nnmail-cache-ignore-groups):
* lisp/ido.el (ido-rewrite-file-prompt-functions):
* lisp/mail/feedmail.el (feedmail-fiddle-plex-user-list)
(feedmail-spray-address-fiddle-plex-list):
* lisp/mh-e/mh-e.el (mh-annotate-msg-hook):
* lisp/net/imap.el (imap-process-connection-type):
* lisp/net/rcirc.el (rcirc-omit-threshold):
* lisp/net/tramp-sh.el (tramp-copy-size-limit):
* lisp/nxml/nxml-mode.el (nxml-default-buffer-file-coding-system):
* lisp/obsolete/landmark.el (landmark-max-stall-time):
* lisp/obsolete/tls.el (tls-checktrust):
* lisp/org/org-indent.el
(org-indent-mode-turns-off-org-adapt-indentation)
(org-indent-mode-turns-on-hiding-stars):
* lisp/org/org-protocol.el (org-protocol-project-alist):
* lisp/progmodes/cc-vars.el (c-doc-comment-style):
* lisp/progmodes/cperl-mode.el (cperl-indent-subs-specially):
* lisp/progmodes/flymake-proc.el (flymake-proc-allowed-file-name-masks):
* lisp/progmodes/hideif.el (hide-ifdef-expand-reinclusion-protection):
* lisp/simple.el (minibuffer-history-case-insensitive-variables):
* lisp/tab-bar.el (tab-bar-close-last-tab-choice):
* lisp/textmodes/reftex-vars.el
(reftex-special-environment-functions):
* lisp/vc/ediff-init.el (ediff-startup-hook, ediff-cleanup-hook)
(ediff-metachars):
* lisp/vc/ediff-merg.el (ediff-show-clashes-only):
* lisp/vc/ediff-mult.el (ediff-default-filtering-regexp): Shorten doc
strings to not exceed 80-column limits.  (Bug#44858)
2020-12-19 18:21:06 +01:00
Mattias Engdegård
4c7df434a0 Correct units and spacing in memory-report
* lisp/emacs-lisp/memory-report.el (memory-report--format):
Use IEC unit prefixes and a space before.
2020-12-19 16:48:02 +01:00
Stefan Monnier
c7fdc17c16 * lisp/emacs-lisp/package.el (package-quickstart-refresh): Fix last change
Actually allow byte-compiling the file.
Reported by Basil L. Contovounesios <contovob@tcd.ie>.
2020-12-18 18:29:52 -05:00
Stefan Monnier
eeade2b647 * lisp/emacs-lisp/package.el: Byte compile the quickstart file
Earlier tests had found problems when byte-compiling the file,
but later investigations indicated the problem was not
directly related.  The performance difference is appreciable.

(package-quickstart-refresh): Byte compile the file.
(package-activate-all): Load byte-compiled version if available.
(package--quickstart-maybe-refresh): Delete the byte-compiled file as well.
2020-12-18 10:02:15 -05:00
Philipp Stephani
7fad959114 Ensure that byte compilation works for relative files (Bug#45287).
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Don’t fail if
target filename doesn’t contain a directory name.

* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--target-file-no-directory): New unit test.
2020-12-17 12:19:27 +01:00
Stefan Monnier
485898c18b * lisp/emacs-lisp/gv.el (error): Allow it as a place 2020-12-14 16:16:01 -05:00
Stefan Kangas
4c41a8acc0 Make XEmacs compat variable warning-level-aliases obsolete
* lisp/emacs-lisp/warnings.el (warning-level-aliases): Make obsolete.
(display-warning): Warn when using one of the warning levels defined
in above obsolete variable.  (Bug#44849)
* lisp/url/url-proxy.el (url-find-proxy-for-url): Replace obsolete
warning type 'critical with :error.
2020-12-14 15:16:13 +01:00
João Távora
755a9f2a8b Inhibit quit in ElDoc timer functions (bug#45117)
The point of un-inhibiting it was to make ElDoc backends interruptible
with any input (as in while-no-input), since that should in principle
invalidate the need of the current ElDoc processing.  But that
strategy is dangerous for backends that perform complex
synchronization with external processes.  Better let each backend
decide for itself it needs this eager interruptive behavior, like is
presumably the case with the Octave backend.

This reverts a part of

    commit 12e922156c
    Author: Stefan Monnier <monnier@iro.umontreal.ca>
    Date:   Tue Dec 4 18:15:44 2018 -0500

* lisp/emacs-lisp/eldoc.el (eldoc-print-current-symbol-info):

* lisp/progmodes/octave.el (octave-eldoc-function-signatures): Use
while-no-input.
2020-12-13 23:16:53 +00:00
Philipp Stephani
fe50a8b9ba Byte compilation: handle case where the output file is a mountpoint.
See Bug#44631.  While testing for a readonly output directory has
slightly different semantics, in practice they should cover cases
where Emacs is sandboxed and can only write to the destination file,
not its directory.

* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Handle the case
where the output directory is not writable.

* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--not-writable-directory)
(bytecomp-tests--dest-mountpoint): New unit tests.
2020-12-13 17:17:21 +01:00
Andrea Corallo
831659b3b8 * Fix `memory-report' for '--without-x' builds
* lisp/emacs-lisp/memory-report.el
	(memory-report--image-cache): Don't call `image-cache-size' if
	unbound.
2020-12-13 11:09:20 +01:00
Stefan Monnier
185b0820b8 * lisp/emacs-lisp/bytecomp.el: Allow a nil destination file
(byte-compile--default-dest-file): New function, extracted from
byte-compile-dest-file.
(byte-compile-dest-file): Use it.
(byte-compile-dest-file-function): Give it a non-nil default value.
(byte-recompile-file, byte-compile-file): Handle a nil return value
from `byte-compile-dest-file`.

* lisp/progmodes/elisp-mode.el (elisp-flymake--batch-compile-for-flymake):
Tell the compiler not to write the result, instead of writing it to
a dummy temp file.
2020-12-12 19:19:03 -05:00
Andrea Corallo
682bd30347 * Allow for adding constraints targetting blocks with multiple predecessors
This commit remove the limitaiton we had not being able to add
constraints derived from conditional branches to basic blocks with
multiple predecessors.  When this condition is verified we add a new
dedicated basic block to hold the constraints.

	* lisp/emacs-lisp/comp.el (comp-block, comp-edge): Better slot
	type specifiers.
	(comp-block-cstr): New struct specializing `comp-block'.
	(make-comp-edge): New function.
	(comp-func): Better test function + doc for `blocks' slot.
	(comp-limple-lock-keywords): Update possible basic block names.
	(comp-emit-assume): Recive directly the block instead of its name.
	(comp-add-new-block-beetween): New function.
	(comp-cond-cstr-target-block): Logic update and use
	`comp-add-new-block-beetween'.
	(comp-cond-cstr-func): Make use of the latter.
	(comp-compute-edges): Make use of `make-comp-edge'.
2020-12-13 00:58:25 +01:00
Andrea Corallo
258eaddef8 * Rename comp-cond-rw -> comp-cond-cstr
* lisp/emacs-lisp/comp.el (comp-passes)
	(comp-cond-cstr-target-slot, comp-cond-cstr-func)
	(comp-cond-cstr): Rename pass from cond-rw to cond-cstr.
2020-12-13 00:58:25 +01:00
Andrea Corallo
5ca371b501 * Memoize `comp-cstr-intersection'
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-ctxt): Add new slot
	`intersection-mem'.
	(comp-cstr-intersection-homogeneous): Fix non local exit target.
	(comp-cstr-intersection-no-mem): Rename from
	`comp-cstr-intersection'.
	(comp-cstr-intersection): New function.
2020-12-13 00:58:25 +01:00
Andrea Corallo
0ded37fdad * Add initial negated non-negegated intersection support
* lisp/emacs-lisp/comp-cstr.el (comp-range-intersection): Cosmetic.
	(comp-cstr-intersection-homogeneous): Rename from
	`comp-cstr-intersection'.
	(comp-cstr-intersection): New function.
2020-12-13 00:58:12 +01:00
Stefan Monnier
b1f2eada47 * lisp/emacs-lisp/package.el (package-buffer-info): Improve error message
(package-strip-rcs-id): Return canonicalized version string.
2020-12-12 11:50:00 -05:00
Andrea Corallo
6286945396 Normalize cstrs for cache hint effectiveness and test stability
* lisp/emacs-lisp/comp-cstr.el (comp-normalize-valset)
	(comp-union-valsets, comp-intersection-valsets)
	(comp-normalize-typeset): New functions.
	(comp-union-typesets, comp-intersect-typesets)
	(comp-cstr-union-homogeneous-no-range, comp-cstr-union-1-no-mem):
	Update to return normalized results.
	* test/lisp/emacs-lisp/comp-cstr-tests.el
	(comp-cstr-typespec-tests-alist): Normalize expected type specifiers.
2020-12-12 16:30:16 +01:00
Andrea Corallo
a6295d3150 * Add `comp-split-pos-neg' function
* lisp/emacs-lisp/comp-cstr.el (comp-split-pos-neg): New function.
	(comp-cstr-union-1-no-mem): Update to call `comp-split-pos-neg'.
2020-12-12 16:30:16 +01:00
Andrea Corallo
73b5e40750 * Code rework add `comp-cstrs-homogeneous'
* lisp/emacs-lisp/comp-cstr.el (comp-cstrs-homogeneous): New
	function.
	(comp-cstr-union-1-no-mem): Make use of.
2020-12-12 16:30:16 +01:00
Andrea Corallo
0474fda62d Merge remote-tracking branch 'savannah/master' into HEAD 2020-12-12 15:31:33 +01:00
Lars Ingebrigtsen
4afef614cd Alter the "Redundant pcase patter" warning message
* lisp/emacs-lisp/pcase.el (pcase--expand): Make the "Redundant
pcase pattern" warning less vague (bug#31350).
2020-12-12 14:22:58 +01:00
Lars Ingebrigtsen
9a7bce6241 Make elint load `require'd packages
* lisp/emacs-lisp/elint.el (elint-require-form): New function to
load files that are `require'd (bug#27006).
(elint-special-forms): Add function.
2020-12-12 14:13:40 +01:00
Stefan Monnier
7660d0359e * lisp/emacs-lisp/thunk.el (thunk-let*): Don't modify bindings 2020-12-11 19:26:43 -05:00
Lars Ingebrigtsen
b04f322a9b Also sort the totals section by size
* lisp/emacs-lisp/memory-report.el (memory-report): Sort the
totals by size, too.
2020-12-11 18:58:41 +01:00
Lars Ingebrigtsen
c7c261ebdf Tweak memory-report--format
* lisp/emacs-lisp/memory-report.el (memory-report--format): Make
everything line up, even when there's "1023.4kB".
2020-12-11 18:48:44 +01:00
Lars Ingebrigtsen
004d7e97e2 Add a new command `memory-report'
* doc/lispref/internals.texi (Garbage Collection): Document it.
* lisp/emacs-lisp/memory-report.el: New package.
2020-12-11 14:49:53 +01:00
Lars Ingebrigtsen
c47e6aa1f4 cl-defmethod doc string clarification
* lisp/emacs-lisp/cl-generic.el (cl-defmethod): Clarify the doc
string, and give an example (bug#42322).
2020-12-09 14:52:53 +01:00
João Távora
67a9ecb489 Remove interactive spec from internal eldoc--format-doc-buffer
Per bug#43609.

* lisp/emacs-lisp/eldoc.el (eldoc--format-doc-buffer): Remove
useless interactive spec.
2020-12-08 23:40:23 +00:00
Philipp Stephani
0155bd0fdb Fix bug in how ERT invokes its debugger.
The debugger needs to receive a list of the error symbol and data;
cf. the documentation of the `debugger' variable.  This bug manifested
itself in ERT forms such as (should (integerp (ert-fail "Boo"))),
which resulted in an incorrect condition object.  Note that forms such
as (should (ert-fail "Boo")) weren't affected because they wouldn't
use the `ert--should-signal-hook'.

* test/emacs-lisp/ert.el (ert--should-signal-hook): Call debugger with
the right arguments.

* test/lisp/emacs-lisp/ert-tests.el (ert-test-fail-inside-should): Add
unit test.
2020-12-07 21:41:40 +01:00
Andrea Corallo
be907b0ba8 * Spawn a sub-process for running GCC also in batch mode (bug#45056)
* lisp/emacs-lisp/comp.el (comp-async-compilation): New variable.
	(comp-final): Always run the C side of the compilation as a
	sub-process unless during bootstrap or async compilation.
	(comp-run-async-workers): Set `comp-async-compilation'.
2020-12-07 16:43:01 +01:00
Stefan Monnier
300c581370 * lisp/emacs-lisp/lisp-mode.el: Give paren syntax to [...] in lisp-data-mode
(lisp-data-mode-syntax-table): Rename from lisp--mode-syntax-table.
Adjust all users.  Set [...] to have paren syntax.
(lisp-data-mode): Don't set `lisp-syntax` arg any more

* lisp/progmodes/elisp-mode.el (emacs-lisp-mode-syntax-table):
Don't bother setting [...] to have paren syntax any more.

* lisp/progmodes/inf-lisp.el (inferior-lisp-mode): Don't use
`lisp-syntax` arg of lisp-mode-variables any more.
2020-12-06 22:18:48 -05:00
Andrea Corallo
715a1ca174 Merge remote-tracking branch 'savannah/master' into HEAD 2020-12-06 18:07:27 +01:00
Andrea Corallo
27f666e111 * Unify common fallback exit point in `comp-cstr-union-1-no-mem'.
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-union-1-no-mem): Define
	a local function `give-up' as a common fall-back exit point.
2020-12-06 18:07:03 +01:00
Andrea Corallo
ac40a60696 Couple of `comp-cstr-union-1-no-mem' improvements for mixed neg pos union
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-union-1-no-mem):
	Generalize disjoint pos types vs neg values conditions.
	(comp-cstr-union-1-no-mem): Do not propagate ranges when we are
	already returning integer as generic type.
	* test/lisp/emacs-lisp/comp-cstr-tests.el
	(comp-cstr-typespec-tests-alist): Add corresponding tests.
2020-12-06 18:02:18 +01:00
Andrea Corallo
09ec39e352 * Memoize `comp-cstr-union-1'
* lisp/emacs-lisp/comp-cstr.el (comp-cstr): Do not synthesize the
	copier.
	(comp-cstr-ctxt): Add `union-1-mem-no-range' `union-1-mem-range'
	slots.
	(comp-cstr-copy): New function.
	(comp-cstr-union-1-no-mem): Rename from `comp-cstr-union-1'.
	(comp-cstr-union-1): New function.
2020-12-05 22:33:35 +01:00
Andrea Corallo
2eb41ec137 More improvements to `comp-cstr-union-1' for mixed positive/negative cases
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-union-1): Better handle
	mixed positive/negated cases.
	* test/lisp/emacs-lisp/comp-cstr-tests.el
	(comp-cstr-typespec-tests-alist): Add a number of tests.
2020-12-05 19:01:04 +01:00