Closed marcoheisig closed 5 years ago
(setf *break-on-signals* t)
and continue (i.e. ignore))) the first signal.type-i:all-compound-types
, which is a function that tries to enumerate all possible type specifier for an atomic type specifier. For example foo
is a valid typespec then (foo)
is also a valid typespec, while (foo *)
is not a valid typespec. In constrast array
, (array)
, (array *)
(array * *)
are all valid typespecs. The function heuristically tries to catch when to stop adding *
s to the type specifier. https://github.com/guicho271828/type-i/blob/master/src/infer-typep.lisp#L39 See comments in the source code.type-i
. So yes, your analysis is correct.Thank you for the quick reply and the excellent explanation!
I am trying to think what a sensible workaround would be. I see the following options:
type-i:all-compound-types
such that when the atomic type specifier in question is a subtype of structure-class
, it only emits foo
and not (foo)
.I think I prefer option 2. If you want, I can implement that and open a pull request.
I also prefer 2. thanks
Here we go: https://github.com/guicho271828/type-i/pull/2.
merged. thanks!
The following snippet of code produces a weird style warning on SBCL. (Both on 1.4.5 and 1.4.15):
The style warning is
I only get this style warning with the latest Trivia release on Quicklisp, so it must have been due to a recent change.