Commit Graph
12807 Commits
Author SHA1 Message Date
nseaprotector 16bee46eef Fix Date.range/2 doc: step is range/3's third argument (#15557) 2026-07-09 11:40:32 +02:00
nseaprotector b639d87c9f Refine Enum.concat specs (#15554) 2026-07-09 11:16:53 +02:00
nseaprotector b3797d0cf5 Refine String.slice/3 return type to t (#15553)
The spec declared `grapheme` instead, whose typedoc is
"Multiple code points that may be perceived as a single
character", but it may return multiple graphemes.

`grapheme` is defined as `@type grapheme :: t`, so this is
identical to analysis tools.
2026-07-09 10:45:49 +02:00
Alexander Gubarev 065b8532c0 Tighten IO typespecs (#15555) 2026-07-09 10:44:24 +02:00
nseaprotector 0aa4acef63 Refine List.keyfind!/3 return type to tuple (#15556) 2026-07-09 10:43:44 +02:00
nseaprotector 233f824c16 Refine Enum.chunk_while/4 return type to [chunk] (#15552)
Unlike `chunk_by/2` and `chunk_every/2,4` (which always chunk into
sublists and are typed `[list]`), `chunk_while/4` lets the reducer emit an
arbitrary term as a chunk (`{:cont, chunk, acc}`, with `chunk: any`), so
`[chunk]` is the precise return type.
2026-07-09 08:57:06 +02:00
José Valim a3bfe9d407 Improve docs and code coments 2026-07-09 00:32:52 +02:00
nseaprotector 35cceec15b Improve MapSet.split_with/2 doctest and fix predicate arity (#15551) 2026-07-08 10:47:37 +02:00
nseaprotector 9c83ece467 Align Access.filter/1 spec with its truthy semantics (#15550) 2026-07-08 10:06:15 +02:00
nseaprotector 9e687da4a9 Fix IO.read/2 docs: integer count is in characters, not bytes (#15549)
`IO.read/2` is the Unicode-safe reader and delegates an integer count
to `:io.get_chars/3`, which counts characters, not bytes. The docs were
copied from `IO.binread/2` (the byte-oriented, Unicode-unsafe reader),
so they incorrectly described the integer argument as a number of bytes
and carried binread/2's "preferred mode for reading non-textual inputs"
note. This also contradicted read/2's own return description, which
already documents the result as "the output characters".

Assisted-by: Claude Code:claude-opus-4-8

Signed-off-by: nseaSeb <nseaprotector@gmail.com>
2026-07-08 09:52:41 +02:00
Alexander Gubarev ad993f0d80 Improve docstrings and typespecs (#15547) 2026-07-07 14:14:18 +02:00
José Valim 82fac2fd38 Batch cachers in parallel checker (#15545) 2026-07-06 17:19:01 +02:00
José Valim 2bcaaf8a62 Do not use term bodiless functions, closes #15537 2026-07-03 20:32:53 +02:00
Panagiotis Nezis 56e4e28d86 Fix spec of File.copy/3 (#15539) 2026-07-03 21:36:01 +09:00
Jean Klingler bec8d39796 Add :migrate_atom_interpolations option to formatter (#15531) 2026-07-02 08:04:25 +09:00
Neil Lyons e0d257251b Update Enum.reduce_while/3 type spec to use acc alias (#15534) 2026-07-01 09:40:06 +02:00
José Valim 66ca149315 Clarify protocols come later, closes #15529 2026-06-26 16:55:25 +02:00
Łukasz Samson 68b660d8e8 Add missing Of.reset_vars call in receive/after badtimeout error path (#15527)
Variable refinement should not leak outside after block
2026-06-25 10:25:20 +02:00
Łukasz Samson a897d59df7 Refer to the right function in remote_apply error on :maps.values/1 (#15526) 2026-06-25 10:24:55 +02:00
Łukasz Samson bd36b69cec Enable doctests on Descr, fix stale examples (#15528) 2026-06-25 10:24:35 +02:00
Łukasz Samson 5fd13212d9 Thread full descr through fun_denormalize reduce (#15524)
Previously inner representation was threaded and returned, which broke expectations of caller `non_term_type_to_quoted`

Closes #15523.
2026-06-24 13:10:14 +02:00
José Valim 46c461e617 Expand defguard per guard and expression
Closes #15450.
Closes #15284.
2026-06-24 13:07:43 +02:00
Łukasz Samson 9a2029245d Improve error returned from fun_apply (#15522)
- return badfun on empty type
- exclude call arity on badarity tuple

Fixes #15521
2026-06-24 10:32:44 +02:00
Guillaume Duboc b4bd740eb7 Add put_dynamic for proper dynamic insertion (#15520) 2026-06-23 17:23:57 +02:00
José Valim f4bf3fd20e Segregate bitstring and bitstring no binary in map domains 2026-06-23 10:43:35 +02:00
Łukasz Samson 1d3a5b85f4 Include bitstring in domain keys (#15516)
Fixes #15515
2026-06-23 09:46:40 +02:00
José Valim 42cf846de0 Better organize tests 2026-06-21 21:36:35 +02:00
Łukasz Samson 94dc133058 Correctly render list with negative leaves (#15514)
BDD leaves represent non empty lists

Fixes #15513.
2026-06-21 21:33:30 +02:00
Łukasz Samson 9347ccd564 Return error from compatible_intersection with none (#15512)
Match fast path behaviour with `compatible?/2`
Fixes #15511
2026-06-21 21:31:51 +02:00
Łukasz Samson 4215bbe986 Report empty_list: true on dynamic() in list_of (#15506)
Fixes #15505
2026-06-19 21:42:37 +02:00
José Valim f70e504ebb Fix optimized map difference with open key
Closes #15507.
Closes #15508.
2026-06-19 21:30:14 +02:00
José Valim 73cf46d785 Make sure to test both NFC and NFD formats 2026-06-18 11:29:05 +02:00
José Valim ec50a88ee4 Validate normalized tokenizer identifiers
Ensure identifiers that require normalization are checked again
after normalization so decomposed source cannot normalize into
unsupported codepoints.

Closes #15419.
2026-06-18 10:55:09 +02:00
José Valim 311f6fb57d Run formatter 2026-06-18 09:35:09 +02:00
Łukasz Samson 8e27ce49a3 Preserve optional static part on difference (#15503)
Fixes #15502
2026-06-18 09:21:36 +02:00
Barna Kovacs 1e12c7d6be Optimize Duration.add, subtract, multiply, negate (#15501) 2026-06-17 21:25:40 +02:00
Barna Kovacs 39acd239af Optimize Keyword.validate/2 by adding fast-track list merging (#15499) 2026-06-17 10:53:51 +02:00
Łukasz Samson 0cdaea1a8c Fix definition of term_or_dynamic_optional type (#15498)
Fixes #15497
2026-06-17 08:47:31 +02:00
Jean Klingler a9976cc5d9 Rework anti-pattern doc about unsafe atom creation (#15495) 2026-06-17 15:39:24 +09:00
José Valim fce9b1c0d4 Update CHANGELOG 2026-06-17 08:37:57 +02:00
Jean Klingler 83e9b66e65 Add to_unsafe_atom/1 and soft-deprecate to_atom/1 (#15494) 2026-06-16 20:50:11 +09:00
Jean Klingler 8efdf4eb10 Add List.to_existing_atom/2 to validate against a list of allowed atoms (#15493) 2026-06-16 20:35:01 +09:00
Jean Klingler fd1109e859 Add String.to_existing_atom/2 to validate against a list of allowed atoms (#15483) 2026-06-16 17:45:09 +09:00
José Valim b64b214412 Preserve empty list in dynamic list type constructor
Closes #15488.
2026-06-15 20:28:30 +02:00
José Valim c540d1fa94 Handle empty function type in fun_apply
Closes #15486.
2026-06-15 18:47:47 +02:00
Henrik Tudborg 75536d80f1 Add support for keyword lists in Access.key/2 and Access.key!/1 (#15470) 2026-06-15 16:04:10 +02:00
José Valim 0395301060 Preserve file meta from each clause in type system warnings 2026-06-15 16:03:47 +02:00
José Valim 23d9bfd3e1 Do not leak vars between default args
Closes #15463.
2026-06-15 13:55:39 +02:00
José Valim 99cd654460 Handle rebound vars in bitstring size expansion
Closes #15479.
2026-06-15 13:45:55 +02:00
José Valim 45ef8fd94a Document @on_definition runs in reverse order, closes #15481 2026-06-15 12:49:08 +02:00