123 Commits

Author SHA1 Message Date
92fbeb4fc9 println prints a char as the character itself, and a char inside a value, in the inspector or at the REPL prints as its literal. 2026-09-26 13:59:32 +07:00
2135f6d37f Merge branch 'master' into worktree-agent-a46233a32d1912c78 2026-09-25 23:27:55 +07:00
6583392504 A prelude body moved by one live shadowing is compiled again when a later shadowing moves a call inside it 2026-09-25 22:51:02 +07:00
ccdadeeb6e A mark or a step spliced into a program that defines its own pause or step-point calls the prelude's 2026-09-25 22:34:28 +07:00
d07c7b4e2c A prelude function shadowed live keeps the prelude's own calls on the prelude's body, as a rebuild does 2026-09-25 22:28:58 +07:00
47cc213b42 Return types read off the body and the converter's latest fixtures live together 2026-09-25 22:14:32 +07:00
69eb11ce9b Return types read off the body and generic structs live together 2026-09-25 20:51:38 +07:00
36c2d14c28 The inspector's reader prints a generic struct instance as (Pair i32 {…}) through Render.head, as the compiled renderer does. 2026-09-25 20:33:31 +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
ae23787c04 The inspector reads a stopped program's memory through the compiled layouts, so locals, inspect, at, condition and globals build no module, and the inspector reads a generic instance's type arguments. 2026-09-25 19:57:39 +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
4c336687ef Master's error recovery is merged, and the refusal memos are consulted only where a refusal is raised 2026-09-25 17:03:32 +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
a95b4c288e Merge branch 'master' into worktree-agent-a37bbb17fdd22924a 2026-09-25 16:35:58 +07:00
83dc716133 A program's or a session's defn named as a macro shadows the macro for its calls, with the shadowing warning a prelude function gets 2026-09-25 16:32:49 +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
8eac6734f0 Merge branch 'master' into worktree-agent-a37bbb17fdd22924a 2026-09-25 16:15:40 +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
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
82b02b6584 Merge branch 'master' into worktree-agent-ab75070e065de0e53 2026-09-25 15:21:12 +07:00
d7016f91c7 A .fln file is read by an indented reader that yields the paren reader's forms, every program entry point picks the reader by extension, and flan convert prints either syntax as the other 2026-09-25 15:04:32 +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
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
1998f57ca8 Merge branch 'master' into worktree-agent-ac49c2c6835655472 2026-09-25 13:14:44 +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
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
1d219b526c Merge master into the typed class slots lane 2026-09-25 12:14:42 +07:00
c6cb018b9f Only a closure that outlives its frame takes a collector environment, and the collector reads a Vec's elements only through a block it knows is live 2026-09-25 12:12:25 +07:00
6e8cc52bc7 Merge branch 'master' into worktree-agent-ad097f67134ba0552 2026-09-25 12:02:48 +07:00
e0af3c9b1d A method of update-instance-for-redefined-class runs on each instance as it migrates, and one that signals offers migrate-by-name 2026-09-25 11:55:40 +07:00