858 Commits

Author SHA1 Message Date
a3899f3ecb Master is merged into the when, get and if let lane for the review fixes. 2026-09-26 12:53:34 +07:00
28d4c0f8dc A number literal takes its type from its uses inside the function, an unconstrained float literal is an f64, and a dyn use asks for the dyn width. 2026-09-26 12:41:54 +07:00
d415d5da15 .fln comparison chains may mix operators pointing one way, such as 0 <= r < rows, and evaluate every operand once in order. 2026-09-26 12:35:30 +07:00
36655025c0 Master is merged into the when, get and if let lane again. 2026-09-26 12:23:17 +07:00
b1cba196b9 A .fln comparison chain may mix < with <=, or > with >=, reading as the and of its tests with every operand evaluated once, left to right, as a < b < c is, and the printers write that and back as the chain. 2026-09-26 12:19:03 +07:00
8d08e82b7c The paren printer breaks an if-let as it breaks an if, and a one-key dyn get takes no slot. 2026-09-26 12:17:47 +07:00
62fd7b19bc Master is merged into the when, get and if let lane. 2026-09-26 12:13:55 +07:00
5ee433a38f A kept when answers an Option, get is a checked lookup over arrays, slices, Vecs and dyn, and if let reads as a two-arm match in both syntaxes. 2026-09-26 12:12:48 +07:00
66ea0b3abe Merge branch 'master' into worktree-agent-ab88d16e8e6fbfe15 2026-09-26 12:05:38 +07:00
6d8ced2ba3 A dyn text becomes a str as its own bytes, a dyn view becomes its own storage, and a dyn vec or map becomes a checked copy in a [const T], a fixed array or a struct, while a writable [T] is never a copy. 2026-09-26 11:48:01 +07:00
bcdb6250a9 A bit operator's operand of any shape that answers a bool gets the and, or or not hint, found by a check that is thrown away. 2026-09-26 11:46:32 +07:00
c7fb0e5422 Literal locals fed through do, let and if arms share one type without extra rounds, a chain past the rounds names the local to annotate, a restart's conversion fix shows the argument as written, and a name's lookup is answered from the last one under the same scope 2026-09-26 11:14:15 +07:00
5712d4bdc0 A bool operand of a bit operator is refused with its and, or or not hint in a whole-file check, whichever operand it is. 2026-09-26 11:04:32 +07:00
c4452fc500 Merge master into the bit operators lane 2026-09-26 11:04:32 +07:00
a546bde112 Merge master 2026-09-26 10:56:30 +07:00
473bf0a2b7 The bit operators are && || ^^ ~~ in .fln at Python's precedence, take integers only on typed and dyn values, and popcount, leading-zeros, trailing-zeros and the rotations exist on both backends. 2026-09-26 10:49:54 +07:00
23663c4773 An unconstrained float literal is an f64, literal locals settle by merging the locals that feed each other, and a restart refused for a number type writes the conversion 2026-09-26 10:45:46 +07:00
17a7afb297 The .fln reader takes loop and recur as names wherever the Lisp loop's spellings are not written, and the convert refusal lists its lines in a sentence of their own. 2026-09-26 10:43:10 +07:00
fc463cf320 The .fln reader refuses loop and recur, flan convert refuses a .flan file that uses them, and every loop outside recur.flan is a while or until. 2026-09-26 10:31:53 +07:00
207f5d7bad Merge master 2026-09-26 09:59:00 +07:00
497c9f470f A dyn view's record is collected with it, a dev build ties a view of a stack address to its owning frame and finds a heap block through an address index, and a view's traps name the field, the operation and the site. 2026-09-26 09:54:45 +07:00
5f1b9b9e7e An unconstrained float literal is an f32, and an integer literal meeting a float literal meets it at the float 2026-09-26 09:49:51 +07:00
697c016231 Merge master 2026-09-26 09:29:40 +07:00
d519ca81dd Merge master into the views lane 2026-09-26 09:29:15 +07:00
36156c9de9 A dyn value takes .field and [:key] as get and put, and a class instance refuses a slot it does not have 2026-09-26 09:28:25 +07:00
0a1f5a3483 The literal-conflict fix spells a whole float with its point, and the measuring switch says what it is for 2026-09-26 06:26:24 +07:00
5177586848 A number or character literal bound by let or loop takes its type from its uses in the function 2026-09-26 06:22:25 +07:00
f39612bc7c Code a request sends without :syntax is read in its file's syntax, or the program's when it names none, and a dotted dyn name points to its accessor. 2026-09-26 06:21:07 +07:00
e79d9c0d07 Merge master into the views lane 2026-09-26 06:18:31 +07:00
d5d9dc1538 A view describes a struct from its own program's table, and an Option's payload is bound to a slot before it is viewed. 2026-09-26 06:17:59 +07:00
7953376e4e Any typed container of numbers, bools, str, structs, arrays, slices or Vecs crosses into dyn as a view from any storage, and a dev build traps on a view whose frame returned or whose block was released. 2026-09-26 06:10:11 +07:00
b1404727b6 A lambda with a block prints wherever it is last in its brackets, an element after a block lambda is refused as not last, and TAB offers no column of a block whose brackets have closed 2026-09-26 06:09:47 +07:00
2dbc8539e5 Merge branch 'master' into worktree-agent-af3c12884ed5f2255 2026-09-26 06:09:13 +07:00
4eefd25df9 A class instance refuses a key its class does not declare, read or written, through get, put, .field and [:key]. 2026-09-26 06:02:51 +07:00
1022b7c7f9 Merge branch 'master' into worktree-agent-af3c12884ed5f2255 2026-09-26 05:54:17 +07:00
6f6e01db06 A bare def is answered with the let to write, and a generic missing its arrow is refused at the end of its line. 2026-09-26 05:54:01 +07:00
605eb97e75 A dyn value's .field and [:key] read as get and assign as put. 2026-09-26 05:52:56 +07:00
895828992e Merge branch 'master' into worktree-agent-ae8e466a60e7cf35a 2026-09-26 05:44:39 +07:00
a8f98c86f1 A let in a form cut from inside a body stays local when the editor sends it, and the printer forgets one file's class names before the next. 2026-09-26 05:44:03 +07:00
702ebdc9c5 In a .fln file a top-level let is a global and def is refused, while a let in a block or an evaluated expression stays local. 2026-09-26 05:39:59 +07:00
cde4f2ab1b A .fln file writes classes and methods as class, generic, multi and method headers, and flan convert prints them so. 2026-09-26 05:39:59 +07:00
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
49e6ac6512 Comments and the README example spell the text type str. 2026-09-26 05:39:56 +07:00
34ef99d1f2 A block lambda in code cut mid-line reads against its line's start, an arm or else value ending in => takes its block, and a missing comma between indices shows the indexed spelling 2026-09-26 05:37:22 +07:00
b92e91bcaa A parameter, local or field may be named str or any other type name when a type follows it, and a type-named parameter with no type after it is refused with both fixes. 2026-09-26 05:27:23 +07:00
267db2cd91 The typed read-only text type is spelled str, and string is refused with that fix. 2026-09-26 05:22:24 +07:00
3c962197f4 A .fln lambda's body follows =>, and a lambda's block may sit inside a call's brackets as its last argument 2026-09-26 05:17:31 +07:00