822 Commits

Author SHA1 Message Date
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
0fc258c434 Merge branch 'master' into worktree-agent-a46233a32d1912c78 2026-09-25 21:11:17 +07:00
3001aadff3 .fln files open in flan-fln-mode, which evaluates, moves over, indents and edits their statements, clauses and top-level forms 2026-09-25 21:07:16 +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
4d3688a519 Merge master into the .fln mode lane; a .fln arm sends its match whenever its value uses any name the pattern has, C-c C-s steps a .fln top-level form, and a comment block directly above a form is part of its text objects 2026-09-25 20:53:48 +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
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
f1bdcc8840 Editor code cut out mid-line carries :indent, the column its statement starts at, so the reader accepts its wrapped lines as the file does and reports every location where it is in the buffer 2026-09-25 20:35:33 +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
7bcf9e5054 A dev build refuses (free s) on a slice over a Vec's or a Map's storage, and says a formatted number's text is released by free-temp 2026-09-25 17:04:52 +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
7c1cbd3a9f Merge branch 'master' into worktree-agent-a9288676abb278ffb 2026-09-25 17:00:08 +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
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
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
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
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
00fd022330 A call through a null CFn parks a dev program in the break loop with NullCall named and continue takeable, on LLVM and x86 2026-09-25 16:37:05 +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
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
f32f88413e Merge branch 'master' into worktree-agent-a4f010dac78379ee2 2026-09-25 16:20:22 +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
0f9160f3bc flan convert keeps comments beside their forms, and the dev loop reads code in the syntax the editor sends 2026-09-25 16:17:33 +07:00
30373ffda5 A converted comment stays with the form it was written beside when the printer reorders or splits bindings, the round trip checks each comment's form, and a snippet's first line sets its left edge 2026-09-25 16:17:12 +07:00
8eac6734f0 Merge branch 'master' into worktree-agent-a37bbb17fdd22924a 2026-09-25 16:15:40 +07:00
ea67e058bf A generic over a generic struct calls another at the same struct variables, and a struct copy is a map key and a function-value parameter on both backends 2026-09-25 16:15:40 +07:00
729d1a27ed map-keys and map-values walk a Map of closures, since (map-next m cur k) walks keys alone and neither needs a zeroed value, and nothing names spike/ any more 2026-09-25 16:10:20 +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
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
69d17a9d59 Merge branch 'master' into worktree-agent-aebbe657e5dc1f8ef 2026-09-25 16:03:19 +07:00
527da37633 An evaluated expression's module is unloaded when its only strings are literals or registry names, because a literal is a copy the process keeps 2026-09-25 15:57:40 +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
25e303caf4 Master's indented reader is merged, and its x += v over a place with a call in it reads as update, evaluating the place once 2026-09-25 15:56:51 +07:00
a13c2f9ec3 The Map header mirror the collector reads is checked against flan_rt.c's, array key pairs cannot share a name, and a program holding only a Map of dyn sets up the collector 2026-09-25 15:52:57 +07:00
8200120bf3 flan convert keeps comments and number spellings in both directions, and a .fln message quotes the text as written, with let-bound match, if and block calls read as values 2026-09-25 15:47:29 +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