|
|
bb800903d8
|
Return types read off the body and frame-escape refusals live together
|
2026-09-25 21:49:14 +07:00 |
|
|
|
ed7258c80f
|
An abandoned check puts back everything it wrote into the environment, an else arm refused on its own terms is not blamed for the then arm's type, and a match's arms meet at the same join as an if's
|
2026-09-25 21:26:56 +07:00 |
|
|
|
ab5fe36a48
|
A frame address stored into a global's field, array or Vec element, or pushed or put into a global container is refused with a fix that names no wrong type, and the sanitizer sweep builds at -O0 so a read of a returned frame reports
|
2026-09-25 21:18:48 +07:00 |
|
|
|
4fa11f6360
|
Merge master
|
2026-09-25 21:11:31 +07:00 |
|
|
|
0fc258c434
|
Merge branch 'master' into worktree-agent-a46233a32d1912c78
|
2026-09-25 21:11:17 +07:00 |
|
|
|
f76d0d6e9f
|
An if's arms and a _ function's exits meet at one join in any order, a return inside the last form counts where it is written, and a constant computed by a _ function is refused as with a written type
|
2026-09-25 21:02:26 +07:00 |
|
|
|
76b2ab3113
|
A duplicate literal arm is one whose value equals an earlier arm's at the scrutinee's type, and a literal no dyn holds is refused with a pattern fix
|
2026-09-25 21:01:15 +07:00 |
|
|
|
69eb11ce9b
|
Return types read off the body and generic structs live together
|
2026-09-25 20:51:38 +07:00 |
|
|
|
111ee66a4b
|
A match arm can be a number, char or string literal compared with =, over a number, a string or a dyn, with a _ arm required
|
2026-09-25 20:51:24 +07:00 |
|
|
|
a6ccce0e67
|
Every store of a frame address into a global outside main is refused, fn and handler bodies and restart clauses are checked as frames of their own, and the suggested clone keeps the slice's bounds
|
2026-09-25 20:50:17 +07:00 |
|
|
|
c6a3259a62
|
A function that returns or stores into a global an address or slice of its own frame is refused, a dev free-all poisons any arena's released bytes and ASan sees them released, and @sanitize checks stack use after return
|
2026-09-25 20:40:21 +07:00 |
|
|
|
df7078d586
|
A _ function's exits combine exactly as an if's arms do, a refused _ body or loop is collected with every other error, and the placeholder type never leaves the checker
|
2026-09-25 20:37:50 +07:00 |
|
|
|
8fdf8513fd
|
A _ body's errors are reported with every other error in the file, a literal return takes the type of the other exits, and a recursive _ function that gives nothing returns ()
|
2026-09-25 20:17:44 +07:00 |
|
|
|
f6384fdf38
|
Merge master into the generics lane
|
2026-09-25 20:03:34 +07:00 |
|
|
|
ad40123b25
|
Master's error recovery and return types read off the body live together, and two ways out of an inferred body that cannot share a type are refused with both named
|
2026-09-25 19:58:31 +07:00 |
|
|
|
ff8b61e44c
|
A self-containing or runaway generic struct and a where clause over a length are each one error among the file's others, and a literal that does not fit a variable a typed field decided names that field
|
2026-09-25 19:57:58 +07:00 |
|
|
|
89e4f53895
|
Places are evaluated once, enums have a predicate, CFn values live in structs, and a program's names cannot break the prelude
|
2026-09-25 17:12:56 +07:00 |
|
|
|
d6e6a5dc0c
|
A program's global named as a prelude function or global shadows it for the file, with the shadowing warning a defn gets
|
2026-09-25 17:12:05 +07:00 |
|
|
|
ff88b9dad6
|
A defn whose return slot is _ (or a .fln fn with no arrow) takes its return type from its own body, recursion through such functions is refused by name, and a stale caller of one is told which line changed its type
|
2026-09-25 17:09:13 +07:00 |
|
|
|
20684c2d9f
|
A grown parameter the function returns, or whose field it reassigns, is not warned at
|
2026-09-25 17:06:19 +07:00 |
|
|
|
9d0d42e467
|
A generic struct's copy prints as (Pair i32 {...}), crosses to C behind a pointer, names each use that made it when refused, settles literal fields at the wider type, and is laid out by stores and restarts that first name it
|
2026-09-25 16:59:11 +07:00 |
|
|
|
2c8bd61a20
|
(free s) hands a slice (bytes s) or (clone xs) made back to the context allocator or a named one, a dev build traps on the wrong allocator, and a sliced array literal lives for its whole function on x86
|
2026-09-25 16:48:09 +07:00 |
|
|
|
43c7494d54
|
A Vec or Map field grown through a struct parameter taken by value is warned at the parameter, naming the field path and the (Ptr ...) that reaches the caller's
|
2026-09-25 16:40:39 +07:00 |
|
|
|
7b3e7f0efa
|
A program's global or type cannot change what the prelude means: a type variable wins over a global in a type position, prelude signatures pair against prelude types, and a global or type spelled like a built-in type is refused
|
2026-09-25 16:22:27 +07:00 |
|
|
|
b51b7d0a53
|
A refusal in a prelude generic's body stands at the call that asked for the copy, with the prelude's line as a note
|
2026-09-25 16:20:08 +07:00 |
|
|
|
8fe2a666a1
|
A refused if is answered from memory for the same condition, scope and expectation, so a refused or/and chain is checked in linear time
|
2026-09-25 16:09:31 +07:00 |
|
|
|
4054c4921b
|
A defstruct whose fields introduce $t or an array length $n is a generic struct, each application of it an ordinary struct copy that generic functions bind against, and a printed call is evaluated once
|
2026-09-25 16:08:14 +07:00 |
|
|
|
d46067962d
|
A Vec or Map parameter the function grows with push, reserve or put is warned at the parameter, naming the (Ptr ...) that reaches the caller's container
|
2026-09-25 15:41:42 +07:00 |
|
|
|
e616a29ceb
|
A parameter vector paired by a lowercase type the program declares is warned at, naming the type and where it is declared
|
2026-09-25 15:37:26 +07:00 |
|
|
|
1716b146cd
|
A condition check_truthy has already refused is refused again from memory, so a retry through nested not is linear and keeps its message
|
2026-09-25 15:35:36 +07:00 |
|
|
|
f6ba1e6c4d
|
A CFn may sit in a struct field, a fixed array or a global, and a call through a null one signals NullCall on both backends
|
2026-09-25 15:26:27 +07:00 |
|
|
|
b8c81d94ee
|
enum? admits exactly the enums, entails ordered? and equal?, and licenses a generic conversion from an enum to a number beside numeric?
|
2026-09-25 15:26:27 +07:00 |
|
|
|
5b8c4a68fa
|
into refuses to copy elements that own storage as they stand, and names (map clone) where clone takes the element
|
2026-09-25 15:22:44 +07:00 |
|
|
|
680b8e7e59
|
A refusal inside a generic copy names each call that asked for it, a refused generic body is reported once, and a type variable prints with its $
|
2026-09-25 15:13:12 +07:00 |
|
|
|
e2aa0196cf
|
Conditions have parents under Error, restarts carry where and why, and a handler reads the message with its values
|
2026-09-25 14:51:18 +07:00 |
|
|
|
610e9fcf9d
|
A parent's handler reads a name and message made in context/temp, whole and good until the frame ends, and the handler-case landing no longer holds a buffer of its own
|
2026-09-25 14:36:46 +07:00 |
|
|
|
409c5f5c0d
|
A read-only slice's diagnostics name (clone v) wherever clone copies the element type
|
2026-09-25 14:31:21 +07:00 |
|
|
|
5646ae148e
|
Merge master; an expression evaluated at a stop runs against a scratch temp arena that is wiped after it, and the program's own temp arena is never rolled back
|
2026-09-25 14:09:30 +07:00 |
|
|
|
b2eb81f7bf
|
A slice or pointer can be read-only, and what it reaches cannot be written through it
|
2026-09-25 13:39:04 +07:00 |
|
|
|
d2f25a6e44
|
Merge branch 'master' into worktree-agent-a9288676abb278ffb
|
2026-09-25 13:35:10 +07:00 |
|
|
|
f3d969618d
|
A class slot can carry a type, and set writes a declared slot
|
2026-09-25 13:32:16 +07:00 |
|
|
|
c6ad71dc5b
|
A value that owns storage is never copied out of read-only storage, and two arguments at one type variable meet at const
|
2026-09-25 13:30:47 +07:00 |
|
|
|
5066b8d288
|
The literal an array cannot hold is the element blamed, a negative literal in a generic body names a fix for every instantiation, and a doubly negated literal is positive
|
2026-09-25 13:29:42 +07:00 |
|
|
|
3e09a1f722
|
Merge branch 'master' into worktree-agent-ac750a5e83cab251b
|
2026-09-25 13:18:42 +07:00 |
|
|
|
9d6694fd92
|
Merge master: an evaluated expression's lifted bodies are placed with its thunk
|
2026-09-25 13:18:40 +07:00 |
|
|
|
9aeee9d676
|
Merge branch 'master' into worktree-agent-a6ffe579d55d1892b
|
2026-09-25 13:16:58 +07:00 |
|
|
|
d864818956
|
A handler for a parent reads the condition's own name and message or the condition printed with its values, kept in the handler-case's own frame across the unwind, and a frame re-entered through a signal or a C call names where it is
|
2026-09-25 13:16:35 +07:00 |
|
|
|
0358f6637c
|
Merge branch 'master' into worktree-agent-ad097f67134ba0552
|
2026-09-25 13:15:36 +07:00 |
|
|
|
1e5be63a1a
|
An array reached through read-only storage slices to a [const T], a Vec or Map copied out of one stays read-only through lets, and an if's const and writable branches meet at const in either order
|
2026-09-25 13:08:29 +07:00 |
|
|
|
9394a26449
|
A negative literal fits no unsigned type, u64 included, and the refusal names the cast that writes its bit pattern, which a constant now folds
|
2026-09-25 13:02:50 +07:00 |
|