|
|
905a4c53be
|
A struct or union fits on one line, struct Pt(x: i32, y: i32), and flan convert writes that form when it fits.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
de0c8791f3
|
A variable named like a header or clause word, data = 3 or on += 1, is read and printed as an assignment.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
72c73117d6
|
A .fln file writes a type alias as type Row = Vec(i32), and flan check prints nothing for a file that checks unless given --defs.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
1a97dfff77
|
A .fln file writes a condition's parent as struct DiskFull :parent IoError, a macro as macro repeat(i, n, & body) and a loop as loop x = a, y = b, and flan convert prints them so.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
6c32383539
|
Typed lambdas bind a generic's CFn variables, a local shadows an enum of its name, the lambda-in-brackets fix is the typed let that compiles, an else deeper than a one-line if or after else-if is refused by name, a block if takes a one-line else, and messages spell every type in the code's syntax
|
2026-09-26 00:36:21 +07:00 |
|
|
|
fff1c0b9c3
|
Merge master: return-type inference beside the syntax-following type spellings
|
2026-09-26 00:27:59 +07:00 |
|
|
|
40eb57a5b6
|
A dyn opened in any value position of an operand or an arm makes it meet as a dyn, found by the one walk of value positions the frame-escape check also uses
|
2026-09-26 00:09:42 +07:00 |
|
|
|
fd1a7f2b36
|
A one-line if takes its else on the next line, lambdas state their types, a restart's report sits on its header, Dir.north names an enum member, messages spell types in the code's syntax, adjacent globals convert adjacent, and a bad map key is one error
|
2026-09-26 00:07:28 +07:00 |
|
|
|
dbddc61b30
|
defvar in a .fln file suggests once and def in its spelling, and x++ on a global suggests ++(x)
|
2026-09-25 23:48:59 +07:00 |
|
|
|
dca29a5605
|
A .fln file's common mistakes are answered in .fln terms, a bare () in a body slot does nothing, and the syntax gaps found writing by hand are listed in TODO.org
|
2026-09-25 23:44:04 +07:00 |
|
|
|
263214e639
|
A dyn opened by an expectation is marked where it is opened, so a bool or an Option beside a dyn stays a dyn, and an operand refused at a type is not asked again, so nested sums and matches check in linear time
|
2026-09-25 23:43:14 +07:00 |
|
|
|
7e48f1eaf5
|
Eight hand-written .fln programs run the same on both backends and through a conversion to parens and back
|
2026-09-25 23:34:16 +07:00 |
|
|
|
2135f6d37f
|
Merge branch 'master' into worktree-agent-a46233a32d1912c78
|
2026-09-25 23:27:55 +07:00 |
|
|
|
8fe8062a0c
|
Hand-written .fln programs exist, flan convert writes corpus-shaped paren text, and several .fln diagnostics suggest .fln spellings
|
2026-09-25 23:26:53 +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 |
|