Commit graph

251 commits

Author SHA1 Message Date
Daniel Kochmanski
a361055a3d defstruct: disallow defining structures of incompatible layouts
We signal an error if the structure is incompatible with an already defined
one. We concern ourself about slot names, their types, offset and number of
slots. Fixes #457.
2019-02-08 20:45:55 +01:00
Daniel Kochmanski
38f5dea0ca cas: ensure that package locks are honored 2019-02-07 13:59:55 +01:00
Daniel Kochmanski
13a42249e2 cas: add remcas operation for an expansion removal
It is a (fmakunbound (setf foo)) counterpart.
2019-02-07 13:29:03 +01:00
Marius Gerbershagen
76941e25dc fix the broken serialization functions for externalizable objects 2018-12-10 18:14:01 +01:00
Daniel Kochmański
4021fbdcf8 Merge branch 'atomic-ops' into 'develop'
Add support for atomic operations

Closes #278

See merge request embeddable-common-lisp/ecl!122
2018-10-15 19:23:52 +00:00
Marius Gerbershagen
239a2aa4f1 threading: add support for atomic operations
We support both compare-and-swap and fetch-and-add (via
    atomic-incf/decf) on the most common places and define an
    extension interface for compare-and-swap similiar to the one in
    SBCL.

    These changes introduce new dependencies on the libatomic_ops
    macros AO_fetch_compare_and_swap and AO_fetch_and_add.
2018-10-15 19:55:39 +02:00
Daniel Kochmanski
b22dcd5e3e file-string-length: revert behavior change for string-output-stream.
We signal an error if the stream is not a file stream (like before). We provide
note in the tests that this is an undefined behavior.
2018-10-01 20:46:50 +02:00
Daniel Kochmanski
30c4120b15 tests: improve ansi.21-2.last-component test 2018-09-23 17:27:55 +02:00
Daniel Kochmanski
3f8a78ca63 tests: add regression test for broadcast stream and file-* functions 2018-09-23 15:28:34 +02:00
Marius Gerbershagen
aad6d252d6 tests: fix embedding tests on mingw
We need to set the path environment variable for the test programs to
    find ecl.dll
2018-07-07 22:16:50 +02:00
Marius Gerbershagen
b0a7684f2f bytecmp: Allow compilation of closures over macros
Change lexenv to include local macro definitions at the end of the
    lexenv list. If a function is defined in a non-nil macro
    environment, a bclosure is created during compilation which has as
    its lexenv only the macros it closes over. During interpretation,
    ecl_close_around adds to this the variables, functions, blocks
    and tags the function also closes over.
    Also close over symbol macros.
2018-06-23 21:37:25 +02:00
Daniel Kochmanski
1972765ab0 fifo files: update documentation, tests and changelog 2018-05-08 19:12:19 +02:00
Daniel Kochmanski
2c52e278cc Don't ensure GF in method macroexpansion time
Fixes #46.

Also some cosmetic fixes and test fix.
2018-04-08 21:05:37 +02:00
Daniel Kochmanski
28d245631e tests: add class-forward-reference regression test (fixed in last commit) 2018-04-08 11:09:11 +02:00
Daniel Kochmanski
7f1bb5c59b tests: add two regression tests 2018-04-06 17:51:33 +02:00
Marius Gerbershagen
b9c4c3fc90 tests: add stress test suite 2018-03-26 21:11:30 +02:00
Daniel Kochmanski
2862fc611d Add regression tests for non-lambda exprs and (setf fun) names 2018-02-13 12:44:52 +01:00
Daniel Kochmanski
2f01e576a2 Add regression tests for recent bugs / problems.
Bug with bclosure is not fixed yet.
2018-02-13 10:07:44 +01:00
Daniel Kochmanski
f9fbd3ee30 Add test for local variable corruption inside block #374. 2018-02-10 17:52:30 +01:00
Daniel Kochmanski
2e9c58b3d4 mulithreading: fix semaphore-signal
It didn't wake up all processes to check the condition what caused n+1 lag in
condition check for signal-process (when called with n>1). Fixes #421. No
regression test, because this is already tested in sem-signal-* tests (they were
failing).
2017-12-08 13:40:34 +01:00
Daniel Kochmanski
a51f28f6a5 tests: improve some fail explanations, add last-fail var 2017-12-08 13:40:34 +01:00
Marius Gerbershagen
31ed58b7c3 add regression test for #292 2017-12-02 22:08:39 +01:00
Marius Gerbershagen
80ced3c9b1 add test for #418 2017-11-21 18:00:25 +01:00
Daniel Kochmanski
e329d5bb49 tests: fix test for non-thread builds 2017-10-09 09:47:50 +02:00
Daniel Kochmanski
3c4e374feb tests: run-program: enable tests for virtual streams 2017-10-09 09:36:02 +02:00
Daniel Kochmanski
95c2f0f8e9 typep: add regression test for fundamental-streams and typep 2017-09-29 16:25:26 +02:00
Florian Margaine
09899a3e15 Fix INCF on a THE variable.
The following code:

(let ((foo 0))
  (incf (the fixnum foo) (bar)))

was being expanded into:

(let ((foo 0))
  (LET* ((#:G133 (BAR)) (#:G132 (THE FIXNUM (+ (THE FIXNUM FOO) (BAR)))))
    (DECLARE (:READ-ONLY #:G133))
    (SETQ FOO (THE FIXNUM #:G132))))

Which is obviously going to call (BAR) twice. If (BAR) has
side-effects, then it is going to be buggy.

The old define-modify-macro had an issue with out-of-order INCF/DECF,
which is why it was replaced with Bruno Haible's macro, which is
supposed to improve THE handling. It turns out that the improvement is
a bit broken, so we're just fixing this.

Fixes #401.
2017-09-08 11:57:07 +02:00
Daniel Kochmanski
fff97049ff environ: add regression tests
Fixes #298.
2017-09-05 20:35:44 +02:00
Daniel Kochmanski
ef3b40427d tests: add regression test for #400 2017-08-16 22:31:00 +02:00
Daniel Kochmanski
45d5176c0e tests: add test for expansions of mapcar and vector-push 2017-08-10 20:22:12 +02:00
Daniel Kochmanski
beefd56f56 tests: add test for artificial fpe 2017-08-10 19:28:33 +02:00
Daniel Kochmanski
e0fd6ab22c tests: fix tests for vector-push 2017-08-10 19:28:20 +02:00
Daniel Kochmanski
c6b2fb658e tests: add regression test for run-program
Dummy one checking if external-process-status simply finishes.
2017-07-21 15:39:43 +02:00
Fabrizio Fabbri
604c87126d
cmp: #353 fix vector-push vector-push-extend
When call those function with invalid argument
number the generated code instead of signal
a programming error does SIGSEGV
2017-07-06 10:44:34 +02:00
Fabrizio Fabbri
cc442ac9cd
Compiled assoc does not check arguments 2017-07-04 04:59:37 +02:00
Daniel Kochmański
243646104b cosmetic: remove unused macro 2017-07-02 23:12:12 +02:00
Daniel Kochmański
b1462dcb65 cosmetic: remove extra newline 2017-07-02 23:05:21 +02:00
Daniel Kochmański
c999b56ab5 tests: add regression test for #233. 2017-07-02 23:04:25 +02:00
Daniel Kochmański
cc332a6c3f tests: with-compiler: add todo 2017-07-02 23:03:43 +02:00
Daniel Kochmański
aeaa3017bc tests: fix multiple evaluation of forms 2017-07-02 23:03:29 +02:00
Daniel Kochmański
8fd53c6470 Merge branch 'develop' into 'develop'
Inconsistent and missing checks in binding forms

See merge request !74
2017-06-29 10:16:27 +00:00
Fabrizio Fabbri
6dc40c869c
Signal error on invalid constant type checking.
Side effet was SIGSEGV on compiled code.
2017-06-28 15:58:20 +02:00
Kris Katterjohn
9051af7e60 Rename a constant variable to prevent "make check" failures
Commit 745686 prevents LET from binding constant variables, but this
sometimes caused a problem during "make check".  The problem would
only happen sometimes, depending on the order in which the tests were
run.  cmp.0026.defconstant-warn defines a constant variable named
FOO and cmp.0015.setf-expander binds FOO using LET.  Now rename the
constant variable FOO to +FOO+.

"make check" runs fine
2017-06-27 19:31:52 -05:00
Daniel Kochmanski
3fdb362b21 cleanup: add information about removed interface
Closes #380.
2017-05-13 18:10:23 +02:00
Daniel Kochmanski
72e422f1b3 cleanup: remove hierarchical packages interface
It didn't work for some cases and wasn't documented, so I'm removing
it. Freshly written tests are left in tests for someone, who would
like to reimplement them.
2017-05-13 18:06:26 +02:00
Daniel Kochmanski
9fa54cc66a tests: add commented out test for issue #380 2017-05-13 17:30:12 +02:00
Daniel Kochmanski
caee827c58 tests: check for feature 2017-05-02 15:01:07 +02:00
Daniel Kochmanski
635cf82e48 add final test 2017-05-02 10:02:48 +02:00
Daniel Kochmanski
76d47a45a2 tests: add tests for package local nicknames 2017-05-02 08:51:38 +02:00
Daniel Kochmanski
2c5f0028c8 hash tables: add mundane tests for sync ht
we replace internal functions for get/set/rem, so we add tests which
check if basic functionality still works fine.
2017-04-28 22:54:15 +02:00