1781 Commits

Author SHA1 Message Date
94134da25a Dyn containers print without a space after the bracket, queued 2026-09-25 21:32:46 +07:00
d991e1986c Flat lets and one-argument and/or in the .fln printer are queued 2026-09-25 21:27:50 +07:00
d77d541360 A value that traps or faults while the inspector reads it shows as #<trapped: NAME> with no break pushed, a restart already accepted is taken before queued reads run, and a fault in the inspector's read names the read. 2026-09-25 21:27:24 +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
d574031609 Keyword arms over a dyn and = on bool are queued 2026-09-25 21:23:50 +07:00
d4f24adbc8 A function cannot return or store in a global the address of its own frame, and a dev build poisons every arena's bytes on free-all 2026-09-25 21:19:13 +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
bd70dfa913 Merge branch 'master' into worktree-agent-a9ad2e8b56d1fbd10 2026-09-25 21:18:18 +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
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
5c044a7b40 id and ad on a comment that belongs to no form find no object 2026-09-25 21:05:02 +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
095701b29b A negated name counts as the name an arm's pattern binds, and a comment belongs to the form or block whose column it sits at 2026-09-25 21:02:19 +07:00
fcd32c21c5 A match arm can be a number, char or string literal 2026-09-25 21:01:40 +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
9e09375d7b Merge branch 'master' into worktree-agent-a6088ba602da36c5e
# Conflicts:
#	TODO.org
2026-09-25 20:58:42 +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
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
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
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
db7f703c0e ML-style patterns are held as a future direction 2026-09-25 20:33:26 +07:00
25911d7c9d Nested ML-style patterns are wanted 2026-09-25 20:31:57 +07:00
e7d82cb640 A match arm can match a number or string literal, queued 2026-09-25 20:30:31 +07:00
c3ba4c9e08 A wrapped condition or arm value is sent whole and reads as it does in the file, an arm whose value uses nothing its pattern binds sends that value, a match arm is a clause object, and dad on the last form takes the blank lines before it 2026-09-25 20:29:06 +07:00
72c35ff05c A dyn value the inspector reads is rendered on the program's own thread, so one that traps or faults is a nested break and the daemon keeps answering. 2026-09-25 20:24:34 +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
267e84bada In a .fln buffer numbers are coloured, a colon is not part of a name, TAB keeps a line at a valid column, evil line objects take their newline, and C-x C-e and C-u C-c C-c understand match arms, conditions, clauses and comments 2026-09-25 20:14:51 +07:00
5d3a0fc316 Inferring a closure return and recompiling a _ caller after its callee changes wait behind .fln 2026-09-25 20:14:22 +07:00
241ea67fbb A struct can be generic over types and lengths, and an error in a generic names the call that made it 2026-09-25 20:03:49 +07:00
f6384fdf38 Merge master into the generics lane 2026-09-25 20:03:34 +07:00
df00848910 A struct value's printed head comes from Render.head, which every renderer shares 2026-09-25 20:00:51 +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
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
8c814b39c1 .fln files open in flan-fln-mode, which evaluates, moves over, indents and edits statements, clauses and top-level forms, and every Flan mode derives from flan-base-mode 2026-09-25 17:13:12 +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
dbdaf66e29 A slice that bytes or clone copied is released with free, and a dev build traps a free through the wrong allocator 2026-09-25 17:05:08 +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
1e8086b4d3 The use-after-release checks to build are recorded 2026-09-25 17:00:16 +07:00
7c1cbd3a9f Merge branch 'master' into worktree-agent-a9288676abb278ffb 2026-09-25 17:00:08 +07:00