799 Commits

Author SHA1 Message Date
2135f6d37f Merge branch 'master' into worktree-agent-a46233a32d1912c78 2026-09-25 23:27:55 +07:00
3e504deb6f An arm is checked at the other arm's type first and meets it at the join only when refused there, so every program master accepts keeps its type and value while arms still meet in either order 2026-09-25 23:10:16 +07:00
c1beb602a7 A .fln let is always flat, and flan convert writes flat lets, renaming a shadowed name instead of nesting 2026-09-25 23:01:11 +07:00
0e26af2107 A macro body counts as run in order only when nothing outside its templates depends on how the body splits into arguments, a let whose longer scope would reach a macro naming it stays in a do: block, and converted programs with shadowed names and macro bodies print what their paren originals print 2026-09-25 23:00:27 +07:00
93e614e239 A frame that prints shows its globals, live prelude shadowing matches a rebuild, flan run cleans up and dies with flan, and a long socket path works from Emacs 2026-09-25 22:59:50 +07:00
bdda16a461 flan run's program dies with flan, and a program killed by a signal ends flan run with 128 plus its number 2026-09-25 22:57:02 +07:00
69ac194ba7 An editor socket path too long to connect to is linked at a short path the Emacs client computes the same way 2026-09-25 22:54:44 +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
e18b28be3e Master is merged into the flat-let lane 2026-09-25 22:49:39 +07:00
319a3c78c4 Merge branch 'master' into worktree-agent-a46233a32d1912c78 2026-09-25 22:40:48 +07:00
55ab1a98ae A macro whose definition splices its body into a do, and comment, count as bodies run in order where the .fln printer writes a let flat, and a struct-pattern let renames and flattens like a plain one 2026-09-25 22:39:50 +07:00
a14e633a21 A pointer's element type can be cast and a slice made from a pointer and a count with slice-from 2026-09-25 22:35:34 +07:00
a39d96149d slice-from-ptr is refused with the slice-from call to write, and the pointer cast's const rule is documented as covering the outer pointer only 2026-09-25 22:35:24 +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
70b9040512 type-of answers a dyn value's kind as a keyword, and a class cannot be named after a built-in kind 2026-09-25 22:29:26 +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
35aa5a8c0f A refused dyn view of a global names its own defining form as the fix, and every dyn fix is spelled in the syntax the code was written in 2026-09-25 22:27:36 +07:00
c41d27ec45 A frame whose slots are all the compiler's own is compared against the slot count its record carries, so a frame that prints keeps its globals and locals 2026-09-25 22:26:11 +07:00
4b1e722854 slice-from makes a slice from a pointer and any integer count, and ((Ptr U) p) casts a pointer's element type without dropping const 2026-09-25 22:24:11 +07:00
0b80c1956f A let in .fln is always flat and a line indented under one is refused, the printer renames a let's name a later statement means otherwise or puts the let in a do: block, and a one-argument and/or prints as its argument 2026-09-25 22:23:37 +07:00
e0f71bba9c A unix socket path too long for sun_path is bound and reached through its directory, so flan dev runs under any TMPDIR and -s path 2026-09-25 22:18:52 +07:00
c1b21edaf4 The break loop's typed-value walk prints arrays and slices as [1 2 3], matching evaluation 2026-09-25 22:18:45 +07:00
e80411d283 type-of answers a value's kind as a keyword or an instance's class name, and a class named like a kind is refused. 2026-09-25 22:18:36 +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
ff0679cbb1 An if's else arm is checked once and brought to the join, an abandoned check undoes only what it wrote, and an arm refused at the join says why at its value 2026-09-25 22:14:06 +07:00
a1e5e39dba Master's changes are merged into the dyn printing lane, with its converter fixture 2026-09-25 22:11:04 +07:00
d16fe79b79 A refused dyn view of a parameter names its declaration as the fix 2026-09-25 22:09:44 +07:00
c3d36b5108 The inspector reads memory directly, a trapped read shows as trapped without a break, and requests take effect in the order the client sent them 2026-09-25 22:01:53 +07:00
4f060bb648 Dyn and typed containers print as [1 2 3] and {:a 1}, a refused dyn view names the value and a dyn fix in the file's own syntax, and a dyn function whose body gives no value says so by name 2026-09-25 22:01:40 +07:00
e81191d770 A bool returned from C reads as its low bit on --x86 as on LLVM, and the where-and fix and the x-1 hint follow the code's own syntax rather than its file name 2026-09-25 21:50:56 +07:00
bb800903d8 Return types read off the body and frame-escape refusals live together 2026-09-25 21:49:14 +07:00
18581a452c = and != compare bools, a match over a bool takes true and false arms, a match over a dyn takes keyword arms, and where predicates joined with and are refused with the comma or vector form as the fix 2026-09-25 21:35:31 +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
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
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
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
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