69eb11ce9b
Return types read off the body and generic structs live together
2026-09-25 20:51:38 +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
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
2f321fd061
Merge master into the generics lane
2026-09-25 17:03:13 +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
fc6e2f7dfb
The break window evaluates in a frame and steps through a function, and C-c C-c reports every error in the form
...
# Conflicts:
# test/test_dev.ml
2026-09-25 16:52:32 +07:00
37938db7c2
A call through a failed local is not reported and a miscounted call's arguments are, eval-in-frame answers slotless frames and ended stops, flan dev links its own agent, and the daemon buffer colours only file:line:col diagnostics
2026-09-25 16:47:51 +07:00
96dbcb1f2f
An expression that makes a function value keeps its module mapped, a process a merged program starts does not take the session's socket, and an evaluation's value is its own expression's and not one a restart resumed
2026-09-25 16:37:43 +07:00
a95b4c288e
Merge branch 'master' into worktree-agent-a37bbb17fdd22924a
2026-09-25 16:35:58 +07:00
020392b064
Merge branch 'master' into worktree-agent-a55c4be9d199b8eb4
2026-09-25 16:22:58 +07:00
f32f88413e
Merge branch 'master' into worktree-agent-a4f010dac78379ee2
2026-09-25 16:20:22 +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
6c8f503ebf
A --two-process re-run checks the whole program before building it and refuses at a stale caller, and a change made while the child has ended waits in the session for the re-run
2026-09-25 16:08:13 +07:00
4b64dc5f65
Code-carrying dev requests name their syntax and starting line and column, so a .fln snippet sent from the middle of a buffer reads with the buffer's own locations
2026-09-25 15:57:09 +07:00
9a91440486
C-c C-s installs a defn that stops before each form of its body, and the break buffer steps it with s and runs the rest of the call with c
2026-09-25 15:43:24 +07:00
d0fc036bba
flan dev --sanitize builds the host under ASan and UBSan on LLVM, refuses --x86 by name, and the sanitize sweep drives a real session through reloads and breaks
2026-09-25 15:39:00 +07:00
f67498c789
A re-run under --two-process builds the program again from the session and starts it in a new process, and the daemon outlives a finished child
2026-09-25 15:35:23 +07:00
da9f21ddcd
A form sent to the daemon is refused with every error in it, and an expression evaluated from the break buffer sees the stopped frame's locals
2026-09-25 15:33:23 +07:00
c30f52c5a7
A stop records whether it was inside an evaluated thunk, and an evaluation waits through a break the program's own code entered
2026-09-25 15:25:09 +07:00
d5fc3aa657
The agent binds the daemon's socket only in the process the daemon launched, named by FLAN_AGENT_OWNER
2026-09-25 15:18:55 +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
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
38055b8fdc
A file with no main opens a session, and a crash in an evaluated expression leaves the session running
2026-09-25 14:04:14 +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
5a78cdd202
Merge master
2026-09-25 13:36:54 +07:00
f3d969618d
A class slot can carry a type, and set writes a declared slot
2026-09-25 13:32:16 +07:00
639ff1859c
Aborting an expression that trapped in the park abandons it by a jump back to the poll that called it, and the session stays
2026-09-25 13:28:16 +07:00
f87d596bdc
A file with a broken form still starts a session, a package's macros expand bare from its file, a delivery a running program never polls for says so with a fix that compiles, and aborting an expression stopped in the park abandons it and keeps the session
2026-09-25 13:06:36 +07:00
16427f8d07
A class slot may be a class or an Option, an int widens into a float slot when exact, a gained typed slot starts at its zero, and a migration never re-enters itself
2026-09-25 12:55:25 +07:00
b74002be02
Merge master
2026-09-25 12:54:55 +07:00
bfd176cce9
Merge master: a handler clause runs without its own handler in force, over the condition descriptor, and StaleCall is an Error
2026-09-25 12:50:01 +07:00
35f455acb3
The's refusal of a dyn says what the boundary does at that type, elements that cannot become a dyn are refused against each other, two literal arms meet at the wider type, and the renamed prelude function and a second startup warning stay out of sight
2026-09-25 12:49:02 +07:00
1fb4b37125
A restart that takes values can be taken from the break loop, which asks for one per parameter and stores them into the frame as an invoke-restart would
2026-09-25 12:46:23 +07:00
11e1ff10a7
flan dev starts on a file with no main and links the agent into every program it builds, C-c C-k loads a file keeping what compiles, and an expression sent from a package's file resolves in that package
2026-09-25 12:44:15 +07:00
d8945ae4ae
The address of read-only storage is a (Ptr const T), which nothing is written through and which a C const T * parameter takes
2026-09-25 12:43:04 +07:00
aedd50c646
Merge branch 'master' into worktree-agent-ac750a5e83cab251b
...
# Conflicts:
# lib/check.ml
2026-09-25 12:17:58 +07:00
1d219b526c
Merge master into the typed class slots lane
2026-09-25 12:14:42 +07:00
73dfaacbc8
A condition type may name a parent and a handler for Error catches every built-in error, a signal passes one descriptor carrying its chain, name, sentence and site, and the break loop shows the sentence the runtime wrote
2026-09-25 12:05:13 +07:00
77497cfc2c
A generic's copy made by an evaluated expression is disassembled from that expression's module, and one copy that cannot be shown no longer hides the others
2026-09-25 12:00:50 +07:00
6c8611cece
Merge master
2026-09-25 11:53:00 +07:00
0636eb3b8d
A generic's copy that the file does not make is named in its lowering rather than left out
2026-09-25 11:47:11 +07:00
20fa04d9df
A program never waits on an editor that stops reading its pushes, and the editor keeps a bounded tail of the program's output
2026-09-25 11:42:54 +07:00
b05a97b029
A generic's name disassembles to its copies, each headed by the types it was called at, and is listed among the program's names
2026-09-25 11:41:31 +07:00
2682214499
A defclass slot may declare a type that every store into it checks, and set writes a declared slot
2026-09-25 11:40:08 +07:00
c671f23b2c
Merge master
2026-09-25 11:36:46 +07:00
680c12e686
A restart frame carries where its clause is written, its :report sentence and whether a handler-case made it up, and the break loop shows the first two and hides the third
2026-09-25 11:35:12 +07:00
0b9ae9318e
flan build and flan run of a file with no main say so and show one, rather than failing at the link
2026-09-25 11:26:13 +07:00
14da41e1d9
A changed signature installs, its stale callers are named, and a handler is off while its own clause runs
2026-09-25 11:17:48 +07:00
f4725788c5
The daemon pushes the program's output and the watch table to an editor that asked for them, and every key a Flan buffer's own map binds is that buffer's under Evil
2026-09-25 11:16:49 +07:00
ed8dbbcd62
A handler-bind clause runs with only the handlers outside its own form in force, and a stale call in main's running loop stays listed until the callee changes back or the program re-runs
...
The first is CLHS 9.1.4.1: a clause that signalled the condition it handles used to re-enter itself until the stack ran out. The stale list now names a lifted clause by the function it is written in, and BUILT.md's cost line is measured against master.
2026-09-25 11:15:52 +07:00