A second location an error points at, in its own file: for example the
earlier declaration of a name that two files both declare
(docs/design/multi-file-schemas.md section 9).
File identity used when a caller parses a schema with no path to give.
Prefer parse_schema_named whenever a path is known: it is what makes
a rendered diagnostic name the file.
Canonical scalar type names built into the .cstack language (e.g.
String, Int, Decimal, …), including Page (which is valid only
as a procedure return type — see validate::type_names::validate_type_ref
— not as a plain field type).
The identity of a schema file, so two spellings of one file are one file
(docs/design/multi-file-schemas.md section 5, Q3): std::fs::canonicalize,
or, for a file that does not exist, the absolute path with . and ..
folded away lexically.
Every well-formed part, part of and import target in source, in
order, paths as written. Malformed directive lines are skipped, and nothing
else in the file is looked at, so this never fails.
The field attributes host accepts, sigil included (@readonly), in the
order its list is written. The validator and the editor completions read
the same list, so they cannot disagree.
Words reserved for the multi-file schema grammar. Consumers that accept
prospective identifiers, such as the LSP rename flow, must reject this
canonical list before producing source the parser cannot read.