Paul Eggert
33d159c36f
Fix copyright years by hand
...
These are dates that admin/update-copyright did not update.
2021-01-01 00:33:28 -08:00
Paul Eggert
8c1fe1e5ef
Update copyright year to 2021
...
Run "TZ=UTC0 admin/update-copyright $(git ls-files)".
2021-01-01 00:32:32 -08:00
Stefan Kangas
72b8430fea
Add lexical-binding cookie to autoload files
...
* build-aux/update-subdirs:
* lisp/emacs-lisp/autoload.el (autoload-rubric): Add lexical-binding
cookie to generated files (bug#44854).
2020-12-31 06:35:49 +01:00
Andrea Corallo
db2a49327a
* Order function types in aphabetical order
...
* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Reorder in
aphabetical order and comment.
2020-12-30 14:05:19 +01:00
Andrea Corallo
0593f47876
* Add more function type specifiers
...
* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Add more
type specifiers.
2020-12-30 14:03:46 +01:00
Stefan Kangas
dd662fc972
Fix some over-wide docstrings
...
* lisp/cedet/semantic/analyze/refs.el
(semantic-analyze-refs-proto)
(semantic-analyze-refs-impl):
* lisp/cedet/semantic/symref.el
(semantic-symref-hit-to-tag-via-buffer):
* lisp/emacs-lisp/chart.el (chart-axis-draw):
* lisp/emacs-lisp/cl-macs.el (cl-defstruct, cl-loop):
* lisp/emacs-lisp/eieio-core.el (eieio--add-new-slot):
* lisp/eshell/em-unix.el (eshell/info):
* lisp/gnus/deuglify.el (gnus-outlook-rearrange-article):
* lisp/gnus/gnus-agent.el (gnus-agent-read-article-number):
* lisp/gnus/gnus-util.el (gnus-put-overlay-excluding-newlines)
(gnus-put-text-property-excluding-newlines):
* lisp/gnus/message.el (message-sort-headers):
* lisp/gnus/nntp.el (nntp-with-open-group)
(nntp-with-open-group-function):
* lisp/gnus/nnvirtual.el (nnvirtual-create-mapping):
* lisp/mail/feedmail.el (feedmail-fiddle-list-of-fiddle-plexes)
(feedmail-queue-reminder, feedmail-mail-send-hook-splitter):
* lisp/net/dictionary.el (dictionary-do-matching):
* lisp/obsolete/longlines.el (longlines-auto-wrap):
* lisp/org/ob-sql.el (org-babel-sql-dbstring-vertica):
* lisp/org/ol-bbdb.el (org-bbdb-date-list):
* lisp/progmodes/cc-cmds.el (c-mark-function):
* lisp/progmodes/cperl-mode.el (cperl-add-tags-recurse)
(cperl-add-tags-recurse-noxs-fullpath)
(cperl-add-tags-recurse-noxs):
* lisp/progmodes/etags.el (tags-search):
* lisp/progmodes/verilog-mode.el (verilog-delete-auto-buffer)
(verilog-auto-re-search-do, verilog-expand-vector-internal):
* lisp/textmodes/reftex-parse.el (reftex-init-section-numbers):
* lisp/textmodes/reftex-toc.el
(reftex-toc-load-all-files-for-promotion):
* lisp/textmodes/sgml-mode.el (html-mode):
* lisp/textmodes/table.el (table--transcoord-cache-to-table)
(table--transcoord-table-to-cache, table--remove-eol-spaces)
(table--region-in-cell-p, table-goto-bottom-right-corner)
(table-split-cell-horizontally):
* lisp/url/url-handlers.el (url-insert):
* lisp/vc/ediff-util.el (ediff-inferior-compare-regions): Fix doc
strings to not exceed 80-column limits. (Bug#44858)
2020-12-30 12:44:19 +01:00
Lars Ingebrigtsen
dc771b6c40
Also count symbol plists in memory-report
...
* lisp/emacs-lisp/memory-report.el (memory-report--symbol-plist):
New function.
(memory-report): Use it.
2020-12-30 08:29:06 +01:00
Andrea Corallo
3f00d666e9
Fix missing negation handling in a bunch of predicates
...
* lisp/emacs-lisp/comp.el (comp-mvar-fixnum-p)
(comp-mvar-symbol-p, comp-mvar-cons-p): Consider neg slot.
* test/src/comp-tests.el (comp-test-not-cons): New test.
* test/src/comp-test-funcs.el (comp-test-not-cons-f): New
function.
2020-12-29 17:49:30 +01:00
Andrea Corallo
a3b816ff8c
* lisp/emacs-lisp/comp-cstr.el (comp-cstr): Better `comp-value-to-cstr'.
2020-12-29 17:49:30 +01:00
Andrea Corallo
c4efb49a27
Constrain mvars under compare and branch with built-in predicates
...
* lisp/emacs-lisp/comp.el (comp-emit-assume): Update.
(comp-known-predicate-p): New function.
(comp-add-cond-cstrs): Extend to pattern match predicate calls.
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-null-p)
(comp-pred-to-cstr): New function.
* test/src/comp-tests.el (comp-tests-type-spec-tests): Add a
number of tests and fix comments.
2020-12-29 17:49:30 +01:00
Andrea Corallo
e83c6994e1
* Define `cl-satisfies-deftype' mapping predicate -> type
...
* lisp/emacs-lisp/cl-macs.el (cl-satisfies-deftype): Define symbol
property as reverse of `cl-deftype-satisfies'.
2020-12-29 14:47:16 +01:00
Andrea Corallo
ba41a183dd
* lisp/emacs-lisp/comp-cstr.el (comp-cstr): Better `comp-type-to-cstr'.
2020-12-29 14:46:23 +01:00
Andrea Corallo
2b3c7c7517
Store function type and expose it with `subr-type'
...
* src/lisp.h (struct Lisp_Subr): Add 'type' field.
(SUBR_TYPE): New inline accessor.
* src/pdumper.c (dump_subr): Update for 'type' field.
* src/data.c (Fsubr_type): New primitive.
(syms_of_data): Update.
* src/comp.c (ABI_VERSION): Bump new ABI version.
(make_subr): Set type.
(Fcomp__register_lambda, Fcomp__register_subr)
(Fcomp__late_register_subr): Receive and pass subr type to
'make_subr'.
* src/alloc.c (mark_object): Mark subr type.
* lisp/emacs-lisp/comp.el (comp-func): Change slot type into mvar.
(comp-emit-for-top-level, comp-emit-lambda-for-top-level): Pass
type mvar to subr register functions.
(comp-compute-function-type): Fix-up subr type mvars.
* test/src/comp-tests.el (comp-tests-check-ret-type-spec): Use
`subr-type'.
2020-12-28 16:15:23 +01:00
Andrea Corallo
5a8622ba2c
Reorder subr register function arguments to make some room
...
* src/comp.c (Fcomp__register_lambda, Fcomp__register_subr)
(Fcomp__late_register_subr): Use a rest arg to pass 'doc_idx' and
'intspec' parameters.
* lisp/emacs-lisp/comp.el (comp-emit-for-top-level)
(comp-emit-lambda-for-top-level): Update.
2020-12-28 16:13:31 +01:00
Andrea Corallo
eafcc8eda0
Propagate function calls also when hiddend under funcall
...
* lisp/emacs-lisp/comp.el (comp-fwprop-call): Propagate functions
also when called under `funcall'.
* test/src/comp-tests.el (comp-tests-type-spec-tests): Add a test.
2020-12-28 16:12:08 +01:00
Andrea Corallo
e532ec9552
Compute function type for native compiled functions
...
* lisp/emacs-lisp/comp.el (comp-func): `type' rename from
`ret-type-specifier'.
(comp-args-to-lambda-list): New function.
(comp-compute-function-type): New function from
`comp-ret-type-spec'.
(comp-final): Update.
* test/src/comp-tests.el (comp-tests-check-ret-type-spec): Update.
2020-12-28 16:09:31 +01:00
Andrea Corallo
8a0467e2ef
; lisp/emacs-lisp/comp.el (comp-emit-narg-prologue): Nit.
2020-12-28 16:08:38 +01:00
Andrea Corallo
ccce15299b
* Improve some slot type into comp.el
...
* lisp/emacs-lisp/comp.el (comp-args-base, comp-args)
(comp-nargs, comp-func): Fix the type of some slots.
2020-12-28 16:06:49 +01:00
Stefan Kangas
6b8bb47ac0
Fill some auto-generated docstrings
...
* lisp/emacs-lisp/easy-mmode.el (define-minor-mode)
(define-globalized-minor-mode): Fill auto-generated documentation
strings. (Bug#44858)
* lisp/subr.el (internal--fill-string-single-line)
(internal--format-docstring-line): New functions.
2020-12-28 06:26:52 +01:00
Stefan Kangas
0ebea8ffbf
Make byte-compiler warn about wide docstrings
...
* lisp/emacs-lisp/bytecomp.el (byte-compile--wide-docstring-p):
(byte-compile-docstring-length-warn): New defuns.
(byte-compile-docstring-max-column): New defcustom.
(byte-compile--wide-docstring-substitution-len): New variable.
(byte-compile-warning-types, byte-compile-warnings): New value
'docstrings'.
(byte-compile-file-form-autoload, byte-compile-file-form-defvar):
(byte-compile-file-form-defvar-function, byte-compile-lambda):
(byte-compile-defvar, byte-compile-file-form-defalias): Warn about too
wide docstrings. (Bug#44858)
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-warn-wide-docstring/defconst)
(bytecomp-warn-wide-docstring/defvar): New tests.
(bytecomp--define-warning-file-test): New macro.
(bytecomp/warn-wide-docstring-autoload\.el)
(bytecomp/warn-wide-docstring-custom-declare-variable\.el)
(bytecomp/warn-wide-docstring-defalias\.el)
(bytecomp/warn-wide-docstring-defconst\.el)
(bytecomp/warn-wide-docstring-define-abbrev-table\.el)
(bytecomp/warn-wide-docstring-define-obsolete-function-alias\.el)
(bytecomp/warn-wide-docstring-define-obsolete-variable-alias\.el)
(bytecomp/warn-wide-docstring-defun\.el)
(bytecomp/warn-wide-docstring-defvar\.el)
(bytecomp/warn-wide-docstring-defvaralias\.el)
(bytecomp/warn-wide-docstring-ignore-fill-column\.el)
(bytecomp/warn-wide-docstring-ignore-override\.el)
(bytecomp/warn-wide-docstring-ignore\.el)
(bytecomp/warn-wide-docstring-multiline-first\.el)
(bytecomp/warn-wide-docstring-multiline\.el): New tests.
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-autoload.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-custom-declare-variable.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defalias.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defconst.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-define-abbrev-table.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-define-obsolete-function-alias.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-define-obsolete-variable-alias.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defun.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defvar.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defvaralias.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-ignore-fill-column.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-ignore-override.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-ignore.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-multiline-first.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-multiline.el:
New files.
2020-12-28 06:26:52 +01:00
Tim Landscheidt
8914fb2227
Do not output two spaces for non-autoloaded ieieo constructor functions
...
* lisp/emacs-lisp/eieio-opt.el (eieio-help-constructor): Amend
format to avoid two spaces for non-autoloaded object constructor
functions (bug#45454).
Copyright-paperwork-exempt: yes
2020-12-28 00:40:15 +01:00
Stefan Monnier
8d5a6c9ef5
* lisp/emacs-lisp/package.el (package-archives): Add NonGNU ELPA
2020-12-27 17:32:01 -05:00
Andrea Corallo
42fb6de0b3
Add 1+ 1- integer range propagation support
...
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-one): New special var.
* lisp/emacs-lisp/comp.el (comp-fwprop-call): Propagate integer
ranges on +1 -1.
* test/src/comp-tests.el (comp-tests-type-spec-tests): Add two tests.
2020-12-27 21:50:34 +01:00
Andrea Corallo
7d07a71841
Add sum/subtraction integer range propagation support
...
* lisp/emacs-lisp/comp-cstr.el (comp-range-+, comp-range--): New
functions.
(comp-cstr-set-range-for-arithm): New macro.
(comp-cstr-add-2, comp-cstr-sub-2, comp-cstr-add, comp-cstr-sub):
New function.
* lisp/emacs-lisp/comp.el (comp-fwprop-call): Wire-up + - integer
range propagation.
2020-12-27 21:34:03 +01:00
Andrea Corallo
92af4e8fc9
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-set-cmp-range): Improve.
2020-12-27 21:33:42 +01:00
Andrea Corallo
34e9aae440
* Add comp-cstr-greatest-in-range comp-cstr-smallest-in-range
...
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-smallest-in-range)
(comp-cstr-greatest-in-range): New function.
(comp-cstr->, comp-cstr->=, comp-cstr-<, comp-cstr-<=): Make use of.
2020-12-27 19:45:24 +01:00
Andrea Corallo
8fb9463013
Merge remote-tracking branch 'savannah/master' into HEAD
2020-12-27 17:54:57 +01:00
Basil L. Contovounesios
df882c9701
; Fix recent shortdoc.el and fns.c additions
...
* lisp/emacs-lisp/shortdoc.el (list): Fix typos.
* src/fns.c (Flength_equal): Fix docstring.
2020-12-27 13:14:30 +00:00
Daniel Martín
80420faf49
Improve "find definition" in *Help* buffers
...
* lisp/emacs-lisp/find-func.el (find-function-search-for-symbol): If
our regexp algorithm could not find a location for the symbol
definition, resort to find-function--search-by-expanding-macros.
* test/lisp/emacs-lisp/find-func-tests.el: Add a automatic test for a
function and variable generated by a macro.
* etc/NEWS: Advertise the improved functionality (bug#45443).
2020-12-27 09:04:56 +01:00
Lars Ingebrigtsen
0f790464d5
Add new predicates for sequence lengths
...
* doc/lispref/sequences.texi (Sequence Functions): Document them.
* lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Mark them as
side-effect-free.
* lisp/emacs-lisp/shortdoc.el (list): Mention them.
* src/fns.c (Flength): Mention them in the doc string.
(length_internal): New function.
(Flength_less, Flength_greater, Flength_equal): New defuns.
(syms_of_fns): Sym them.
2020-12-27 09:00:23 +01:00
Lars Ingebrigtsen
714ca849ba
Improve the edebug-form-data doc string
...
* lisp/emacs-lisp/edebug.el (edebug-form-data): Doc string
clarification (bug#42776).
2020-12-26 23:13:29 +01:00
Andrea Corallo
271fb8a269
* Fix `byte-compile-file' for native compilation (bug#45442)
...
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Fix logic for
native compilation.
2020-12-26 20:38:36 +01:00
Andrea Corallo
d893952053
Fix missing float handling into `comp-cstr-set-cmp-range'
...
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-set-cmp-range): Add
float handling.
* test/src/comp-tests.el (comp-tests-type-spec-tests): Update results.
2020-12-26 20:00:01 +01:00
Andrea Corallo
fcd8c60182
* Remove unnecessary lhs rename in `comp-ssa-rename-insn'
...
* lisp/emacs-lisp/comp.el (comp-ssa-rename-insn): No point to
rename lhs as it's being replaced.
2020-12-26 12:30:58 +01:00
Andrea Corallo
c5c0c06b1c
* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Add two functions.
2020-12-26 12:22:21 +01:00
Andrea Corallo
89d5a3a760
Enable integer range narrowing under compare and branch
...
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-set-cmp-range)
(comp-cstr->, comp-cstr->=, comp-cstr-<, comp-cstr-<=): New
functions.
* lisp/emacs-lisp/comp.el (comp-equality-fun-p)
(comp-range-cmp-fun-p): New functions.
(comp-collect-rhs): Use `comp-assign-op-p' in place of
`comp-set-op-p'.
(comp-negate-range-cmp-fun, comp-reverse-cmp-fun): New functions.
(comp-emit-assume): Rework to be able to emit also comparision
assumption.
(comp-add-cond-cstrs-simple): Update for new `comp-emit-assume'.
(comp-add-cond-cstrs-simple): Update to emit range assumption.
(comp-fwprop-insn): Execute range assumptions.
* test/src/comp-tests.el (comp-tests-type-spec-tests): Add tests.
2020-12-26 10:53:54 +01:00
Lars Ingebrigtsen
90e40099de
Fix infloop in memory-report
...
* lisp/emacs-lisp/memory-report.el (memory-report--object-size-1):
Fix infloop on circular lists.
2020-12-26 00:57:01 +01:00
Lars Ingebrigtsen
d18b1c8c75
Fix package reloading problems on systems with symlinks
...
* lisp/emacs-lisp/package.el (package--files-load-history): We're
comparing the truenames, so ensure that we've using that
everywhere. This fixes problems when there's symlinks in the paths.
2020-12-25 22:44:56 +01:00
Lars Ingebrigtsen
443a53874b
Refactor package--list-loaded-files for easier debuggability
...
* lisp/emacs-lisp/package.el (package--files-load-history)
(package--list-of-conflicts): Factor out from...
(package--list-loaded-files): ... this function for easier
debuggability.
2020-12-25 22:29:46 +01:00
Andrea Corallo
bd693ccea7
* Don't emit byte op-code annotations in LIMPLE to optimize for compile-time
...
Saves 10~15% in bootstrap time.
* lisp/emacs-lisp/comp.el (comp-op-case): Don't emit op-code
annotaitons.
(comp-limplify-lap-inst, comp-add-cond-cstrs-simple)
(comp-add-cond-cstrs, comp-tco-func): Update accordingly.
2020-12-25 09:44:30 +01:00
Lars Ingebrigtsen
af359de917
Allow `string-limit' to work on encoded strings
...
* doc/lispref/strings.texi (Creating Strings): Document it.
* lisp/emacs-lisp/subr-x.el (string-limit): Allow limiting on
encoded strings.
2020-12-25 05:58:09 +01:00
Lars Ingebrigtsen
269cec13a2
Remove `string-slice' -- it's not very well defined
...
* doc/lispref/strings.texi (Creating Strings): Ditto.
* lisp/emacs-lisp/subr-x.el (string-slice): Remove.
2020-12-25 05:16:46 +01:00
Andrea Corallo
b4ee13c942
* Memoize `comp-subtype-p'
...
* lisp/emacs-lisp/comp-cstr.el (comp-subtype-p): Memoize.
(comp-cstr-ctxt): Add `subtype-p-mem' slot.
2020-12-24 15:40:53 +01:00
Andrea Corallo
2327a98319
* Constrain only mvars that are actually used
...
* lisp/emacs-lisp/comp.el (comp-mvar-used-p, comp-collect-mvars)
(comp-collect-rhs): New functions.
(comp-add-cond-cstrs-simple, comp-add-cond-cstrs): Update logic.
(comp-add-cstrs): Call `comp-collect-rhs' before doing anything
else.
2020-12-24 15:40:50 +01:00
Andrea Corallo
2a6c6bf324
* Use `comp-assign-op-p' into dead code elimination pass
...
* lisp/emacs-lisp/comp.el (comp-dead-assignments-func): Use
`comp-assign-op-p' in place of `comp-set-op-p'.
2020-12-24 15:36:46 +01:00
Andrea Corallo
96d4c70412
* Fix logic for constraining block with multiple predecessors
...
* lisp/emacs-lisp/comp.el (comp-limple-lock-keywords)
(comp-add-cond-cstrs-target-block): Logic update.
2020-12-24 15:36:46 +01:00
Andrea Corallo
672988e961
Symplify (not t) => nil and (not nil) => t
...
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-negation): Symplify (not
t) => nil and (not nil) => t.
* test/lisp/emacs-lisp/comp-cstr-tests.el
(comp-cstr-typespec-tests-alist): Add two tests.
2020-12-24 15:36:46 +01:00
Andrea Corallo
538f59806c
Extend cstrs pass to match `unless' like code
...
* lisp/emacs-lisp/comp.el (comp-emit-assume): Add assertion.
(comp-add-new-block-between): Fix two typos.
(comp-add-cond-cstrs-target-block): Fix typo.
(comp-add-cond-cstrs-simple): Logic update.
* test/src/comp-tests.el (comp-tests-type-spec-tests): Add a test.
2020-12-24 15:36:39 +01:00
Andrea Corallo
715cac119a
* lisp/emacs-lisp/comp.el (comp-limplify-lap-inst): Opencode byte-not.
2020-12-24 15:36:36 +01:00
Andrea Corallo
c07c9f6bf8
Extend cstrs pass to match `when' like code
...
* lisp/emacs-lisp/comp.el (comp-emit-assume): Better parameter names.
(comp-add-cond-cstrs-simple): New function.
(comp-add-cond-cstrs): Rename assume-target -> block-target.
(comp-add-cstrs): Call `comp-add-cond-cstrs-simple'.
* test/src/comp-tests.el (comp-tests-type-spec-tests): Add test.
2020-12-24 15:36:09 +01:00