| .. | ||
| array-direct-scalars-value-flow.slo | ||
| array-direct-scalars.slo | ||
| array-enum.slo | ||
| array-string-value-flow.slo | ||
| array-string.slo | ||
| array-struct-elements.slo | ||
| array-struct-fields.slo | ||
| array-value-flow.slo | ||
| array.slo | ||
| boolean-logic.slo | ||
| canonical.slo | ||
| checked-i64-to-i32-conversion.slo | ||
| comments.slo | ||
| composite-locals.slo | ||
| composite-struct-fields.slo | ||
| enum-basic.slo | ||
| enum-payload-direct-scalars.slo | ||
| enum-payload-i32.slo | ||
| enum-payload-structs.slo | ||
| enum-struct-fields.slo | ||
| f64-numeric-primitive.slo | ||
| f64-to-i32-result.slo | ||
| f64-to-i64-result.slo | ||
| f64-to-string.slo | ||
| host-io-result.slo | ||
| host-io.slo | ||
| i64-numeric-primitive.slo | ||
| if.slo | ||
| integer-bitwise.slo | ||
| integer-remainder.slo | ||
| integer-to-string.slo | ||
| local-variables.slo | ||
| numeric-struct-fields.slo | ||
| numeric-widening-conversions.slo | ||
| option-result-flow.slo | ||
| option-result-match.slo | ||
| option-result-payload.slo | ||
| option-result.slo | ||
| owned-string-concat.slo | ||
| primitive-struct-fields.slo | ||
| print-bool.slo | ||
| random.slo | ||
| README.md | ||
| result-helpers.slo | ||
| standard-runtime.slo | ||
| std-source-layout-alpha.slo | ||
| stdin-result.slo | ||
| string-parse-bool-result.slo | ||
| string-parse-f64-result.slo | ||
| string-parse-i32-result.slo | ||
| string-parse-i64-result.slo | ||
| string-parse-u32-result.slo | ||
| string-parse-u64-result.slo | ||
| string-print.slo | ||
| string-value-flow.slo | ||
| struct-value-flow.slo | ||
| struct.slo | ||
| time-sleep.slo | ||
| top-level-test.slo | ||
| type-aliases.slo | ||
| u32-numeric-primitive.slo | ||
| u64-numeric-primitive.slo | ||
| unsafe.slo | ||
| unsigned-integer-to-string.slo | ||
| vec-bool.slo | ||
| vec-f64.slo | ||
| vec-i32.slo | ||
| vec-i64.slo | ||
| vec-string.slo | ||
| while.slo | ||
Slovo Formatter Fixtures
Formatter fixtures define canonical layout for the current strict supported
syntax. They are not additional compiler-supported programs unless mirrored
under examples/supported/.
The formatter fixture set now includes the final exp-125 unsigned fixtures
absorbed into 1.0.0-beta.
Promoted formatter fixtures may use only:
(module name)- top-level
(fn ...) - explicit
i32parameters andi32returns, plus promotedstringparameters and returns - direct
(option i32),(option i64), and(result i32 i32)returns only for first-pass option/result constructor fixtures - integer literals
- parameter references
- binary
+ - user-defined function calls
- legacy compiler/runtime compatibility alias
(print_i32 value) - local
i32bindings with(let name i32 value)and(var name i32 value) - immutable array locals with
(let name (array T N) array-expression)whenTisi32,i64,f64, orbooland the initializer has the exact declared fixed array type - assignment to mutable local
i32bindings with(set name value) - value-producing
(if condition then-expression else-expression) - first-pass
(while condition body...)as a non-final sequential body form - top-level
(struct Name (field i32)...) - first-pass struct construction and immediate field access
- first v1 struct value flow through immutable locals, parameters, returns, calls returning structs, and stored field access
- fixed direct scalar array constructors and literal
(index array index) - fixed direct scalar array value flow through immutable array locals
initialized from matching array-valued expressions, fixed array parameters,
returns, calls returning arrays, and dynamic
(index array index)withi32index expressions - first-pass
(some i32 value),(none i32),(some i64 value),(none i64),(ok i32 i32 value), and(err i32 i32 value)constructors as direct function returns - first v1 option/result value flow through immutable locals, parameters, calls
returning option/result values, and
is_some/is_none/is_ok/is_errtag observation - first v1 option/result payload access with
unwrap_some,unwrap_ok, andunwrap_err - v1.4 source-level
matchfor(option i32),(option i64), and(result i32 i32)values, with exhaustive arms, immutable arm-scoped payload bindings, one-or-more expression arm bodies, and common arm result types - source string literals used directly as
print_stringorstd.io.print_stringarguments - legacy compiler/runtime compatibility alias
(print_string value) - immutable string locals with
(let name string value) - string parameters and string returns
- calls returning strings
- string equality with
= - string byte length with
(string_len value) - legacy compiler/runtime compatibility alias
(print_bool value) - compiler-known standard-runtime calls
(std.io.print_i32 value),(std.io.print_string value),(std.io.print_bool value), and(std.string.len value) - exp-112 direct immutable
boollocals with(let name bool value)over the already promoted bool-expression surface - exp-20 direct
f64parameters, returns, immutable locals, decimal literals, same-typef64arithmetic/comparison, and(std.io.print_f64 value) - exp-21 direct
i64parameters, returns, immutable locals, explicit signed decimali64literal atoms, same-typei64arithmetic/comparison, and(std.io.print_i64 value) - exp-22 explicit numeric widening calls
std.num.i32_to_i64 : (i32) -> i64,std.num.i32_to_f64 : (i32) -> f64, andstd.num.i64_to_f64 : (i64) -> f64 - exp-23 checked numeric narrowing call
std.num.i64_to_i32_result : (i64) -> (result i32 i32) - exp-24 integer to string calls
std.num.i32_to_string : (i32) -> stringandstd.num.i64_to_string : (i64) -> string - exp-25 string parse i64 result call
std.string.parse_i64_result : (string) -> (result i64 i32) - exp-26 f64 to string call
std.num.f64_to_string : (f64) -> string - exp-27 checked f64 to i32 result call
std.num.f64_to_i32_result : (f64) -> (result i32 i32) - exp-28 string parse f64 result call
std.string.parse_f64_result : (string) -> (result f64 i32) - exp-29 direct immutable
i64and finitef64struct fields, using existing struct construction, immutable struct flow, field access, same-type numeric arithmetic/comparison, and numeric print/format helpers - exp-30 conservative source-layout helper shape in
std-source-layout-alpha.slo, without repo-rootstdimport/search support or source replacement of compiler-knownstd.*calls - exp-31 checked f64 to i64 result call
std.num.f64_to_i64_result : (f64) -> (result i64 i32) - exp-1 compiler-known call
(std.string.concat left right) - exp-2
(vec i32)type forms and compiler-known calls(std.vec.i32.empty),(std.vec.i32.append values value),(std.vec.i32.len values), and(std.vec.i32.index values index) - exp-3 compiler-known calls
(std.io.eprint value),(std.process.argc),(std.process.arg index),(std.env.get name),(std.fs.read_text path), and(std.fs.write_text path text) - exp-4 payloadless enum declarations
(enum Name VariantA VariantB), zero-argument qualified constructors(Name.VariantA), enum locals, parameters, returns, calls, equality, and exhaustive enummatch - exp-16 unary
i32enum payload variants such as(Value i32), qualified unary constructors such as(Reading.Value value), immutable arm-local payload bindings in enummatch, and same-enum tag-plus-payload equality - exp-18 direct enum struct fields and exp-19 direct
booland immutablestringstruct fields, using existing struct construction, immutable struct flow, field access, equality, enummatch, bool predicate, andstd.string.lenforms - exp-8 compiler-known calls
(std.time.monotonic_ms)and(std.time.sleep_ms 0)for structural/non-negative conformance checks only - exp-11 compiler-known call
(std.random.i32)and non-negative structural checks using existing<andifforms - exp-12 compiler-known call
(std.io.read_stdin_result)using existing(result string i32)observers, unwrap, andmatch - exp-13 compiler-known call
(std.string.parse_i32_result text)using existing(result i32 i32)observers, unwrap, andmatch - exp-15 compiler-known result helper calls
(std.result.is_ok value),(std.result.is_err value),(std.result.unwrap_ok value), and(std.result.unwrap_err value)for only(result i32 i32),(result i64 i32), and(result string i32) - lexical
(unsafe body... final-expression)expression blocks containing only otherwise supported safe v0 forms - final-expression returns
- top-level
(test "name" body... final-expression) - equality comparison
=when used as a bool-producing test expression - ordering comparison
<when used as a bool-producing condition - line comments
Promoted formatter fixtures are canonical output. Formatting one of these fixtures must reproduce the same source bytes, including accepted full-line comments and final newline, and formatting formatter output must be idempotent. The v1 formatter is not a width-based pretty printer and does not promise column reflow for long inline calls or forms.
Line comments are stable only as full-line comments before top-level forms, inside function/test bodies before body expressions, after the final function/test body expression before the closing paren, and after the last top-level form. Comments inside module forms, struct forms, function/test headers, type forms, or inline expression forms are unsupported formatter positions and must produce structured diagnostics instead of being silently dropped.
Nested if, while, unsafe, and match forms keep their canonical
multiline shapes. Calls, field access, arrays, struct constructors,
option/result constructors, option/result observers, option/result unwraps,
legacy print aliases, std.io.print_* calls, exp-1 std.string.concat calls,
exp-2 std.vec.i32.* calls, exp-3 host calls, exp-4 qualified enum
constructors, exp-16 unary enum payload constructors, exp-8 std.time.*
calls, and exp-13
std.string.parse_i32_result calls, and exp-15 std.result.* helper calls
and exp-20 std.io.print_f64 calls remain inline when used as expressions.
exp-21 std.io.print_i64, exp-22 std.num.* conversion calls, exp-23
std.num.i64_to_i32_result, exp-24 integer-to-string calls, and exp-25
std.string.parse_i64_result calls, and exp-26 std.num.f64_to_string calls
and exp-27 std.num.f64_to_i32_result calls remain inline when used as
expressions. exp-28 std.string.parse_f64_result calls and exp-31
std.num.f64_to_i64_result calls remain inline when used as expressions.
string_len and std.string.len remain inline when used as expressions.
Current Slovo-side target formatter fixtures:
u32-numeric-primitive.slou64-numeric-primitive.slounsigned-integer-to-string.slostring-parse-u32-result.slostring-parse-u64-result.slo
These formatter fixtures describe the final exp-125 unsigned contract shape
now absorbed into 1.0.0-beta. Execution claims still come from the paired
supported/project fixtures and Glagol gates, not from formatter fixtures
alone.
Design-target forms such as mutable string locals, string assignment, string
ordering, strings inside arrays, options, or results, string containers beyond
exp-19 direct struct fields, string slices, concatenation beyond exp-1
std.string.concat, indexing, ownership
annotations, user-defined string runtime bindings,
print_unit, std.io.print_unit, host IO beyond the exp-3 slice and exp-12
stdin-result slice, networking, async IO, binary file APIs, directory
traversal, terminal control, platform abstraction, general host error ADTs
beyond exp-10,
result string Error, package interaction, stdin APIs beyond the exp-12
result slice, parsing beyond exp-13 std.string.parse_i32_result, exp-25
std.string.parse_i64_result, and exp-28
std.string.parse_f64_result,
result helper payload families beyond the explicitly listed (result i32 i32),
(result i64 i32), (result string i32), and exp-28 returned
(result f64 i32) families,
tokenizer/scanner APIs, parsing bools/strings/bytes, numeric casts or
conversions beyond exp-22 explicit widening calls and the exp-23 checked
i64 -> i32 result call, exp-27 checked f64 -> i32 result call, and exp-31
checked f64 -> i64 result call, f64
formatting beyond exp-26 finite decimal text,
locale/base/radix/grouping/padding formatting controls, generic format/display
traits, stable integer-formatting ABI/layout/ownership, implicit promotion,
mixed numeric arithmetic, f32,
unsigned integers, narrower integer widths beyond the existing i32,
char/bytes/decimal,
whitespace/locale/base-prefix/underscore/plus-sign parsing beyond the exact
exp-13, exp-25, and exp-28 parse calls, Unicode digit parsing, parse error
messages or richer codes, randomness beyond the exp-11
slice, time beyond the exp-8 host time/sleep slice, generic vectors,
vector element types other than i32,
vector mutation, vector var or set, vector literals beyond empty/append
construction, push, nested vectors, vectors in arrays, structs, options, or
results, iterators, slices, maps, sets, user-visible vector deallocation,
stable vector ABI/layout/helper symbols, allocation, user-defined standard
modules, imports/packages, overloading, generic APIs, Unicode length
semantics, general slices, pointer types, raw memory operations, array
mutation, array element types beyond direct scalar i32, i64, f64,
bool, and string, zero-length arrays, nested arrays, array equality,
printing arrays, option/result mapping, equality, printing,
non-i32 payload extraction, nested option/result values, arrays or structs
containing option/results, generic payloads, enum payloads beyond exp-16 unary
i32 variants, generic enums, generic functions, type aliases,
traits/interfaces/protocols, methods, derives, wildcard/rest enum patterns,
enum guards, nested enum patterns, enum values in
arrays/structs/options/results/vectors, enum mutation,
enum printing/ordering/hash, enum reflection, explicit enum discriminants,
enum constructors with multiple arguments, unqualified variant constructors,
stable enum ABI/layout, moving option/result to ordinary standard-library
types, user-catchable exceptions, struct mutation, unsafe abstractions, and
user-declared unit returns must stay out of this directory until they meet
the strict support rule.
canonical.slo is the canonical formatted shape for the current supported
function fixture surface. top-level-test.slo is the canonical formatted shape
for the promoted top-level test fixture surface. local-variables.slo is the
canonical formatted shape for promoted local let / var / set forms,
including the later exp-112 immutable bool-local broadening.
if.slo is the canonical formatted shape for promoted value-producing
conditionals. while.slo is the canonical formatted shape for promoted
first-pass loops. struct.slo is the canonical formatted shape for promoted
first-pass structs. struct-value-flow.slo is the canonical formatted shape
for the first v1 struct value-flow slice. array.slo is the canonical
formatted shape for promoted first-pass array constructors, immutable array
locals, and literal indexing. array-direct-scalars.slo is the canonical
formatted shape for the widened direct scalar fixed-array constructor and
literal-indexing slice. array-value-flow.slo is the canonical formatted
shape for the first v1 array value-flow and dynamic-indexing slice.
array-direct-scalars-value-flow.slo is the canonical formatted shape for the
widened direct scalar fixed-array value-flow and dynamic-indexing slice.
array-string.slo is the canonical formatted shape for the widened fixed
string-array constructor and literal-indexing slice.
array-string-value-flow.slo is the canonical formatted shape for the widened
fixed string-array value-flow and dynamic-indexing slice.
option-result.slo is the canonical formatted shape for promoted first-pass
option/result constructors.
option-result-flow.slo is the canonical formatted shape for the first v1
option/result value-flow slice. option-result-payload.slo is the canonical
formatted shape for the first v1 option/result payload-access slice.
option-result-match.slo is the canonical formatted shape for the v1.4
option/result match slice.
string-print.slo is the canonical formatted shape for the first runtime
string-printing slice.
string-value-flow.slo is the canonical formatted shape for the v1.2
immutable string value-flow, equality, and length slice.
print-bool.slo is the canonical formatted shape for the v1.2 bool-printing
slice.
standard-runtime.slo is the canonical formatted shape for the v1.5
standard-runtime alpha names.
owned-string-concat.slo is the canonical formatted shape for the exp-1
owned-runtime-string concat fixture.
vec-i32.slo is the canonical formatted shape for the exp-2 (vec i32)
fixture.
vec-i64.slo is the canonical formatted shape for the exp-94 (vec i64)
fixture.
host-io.slo is the canonical formatted shape for the exp-3 standard IO and
host environment fixture.
time-sleep.slo is the canonical formatted shape for the exp-8 host time and
sleep fixture aligned by the exp-14 release.
random.slo is the canonical formatted shape for the exp-11 basic randomness
alpha release fixture.
stdin-result.slo is the canonical formatted shape for the exp-12 standard
input result alpha release fixture.
string-parse-i32-result.slo is the canonical formatted shape for the exp-13
string parse i32 result alpha fixture.
result-helpers.slo is the canonical formatted shape for the exp-15 result
helper standard names alpha fixture.
enum-basic.slo is the canonical formatted shape for the exp-4 payloadless
user enum fixture.
enum-payload-i32.slo is the canonical formatted shape for the exp-16 unary
i32 enum payload fixture.
primitive-struct-fields.slo is the canonical formatted shape for the exp-19
primitive struct field fixture.
local-variables.slo is the canonical formatted shape for the exp-112
immutable bool locals fixture.
f64-numeric-primitive.slo is the canonical formatted shape for the exp-20
f64 numeric primitive fixture.
i64-numeric-primitive.slo is the canonical formatted shape for the exp-21
i64 numeric primitive fixture.
numeric-widening-conversions.slo is the canonical formatted shape for the
exp-22 numeric widening conversions fixture.
checked-i64-to-i32-conversion.slo is the canonical formatted shape for the
exp-23 checked i64-to-i32 conversion fixture.
integer-to-string.slo is the canonical formatted shape for the exp-24
integer to string fixture.
string-parse-i64-result.slo is the canonical formatted shape for the exp-25
string parse i64 result fixture.
f64-to-string.slo is the canonical formatted shape for the exp-26 f64 to
string fixture.
f64-to-i32-result.slo is the canonical formatted shape for the exp-27
checked f64-to-i32 result fixture.
string-parse-f64-result.slo is the canonical formatted shape for the exp-28
string parse f64 result fixture.
numeric-struct-fields.slo is the canonical formatted shape for the exp-29
numeric struct fields fixture.
std-source-layout-alpha.slo is the canonical formatted shape for the exp-30
standard library source layout alpha fixture.
f64-to-i64-result.slo is the canonical formatted shape for the exp-31
checked f64-to-i64 result fixture.
unsafe.slo is the canonical formatted shape for promoted lexical unsafe
blocks.
comments.slo is the canonical formatted shape for the promoted v1 full-line
comment stability positions.