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