Result: done
Files: crates/nikaia-std/src/tools/text_tiers.nika crates/nikaia-std/src/tools/lowered/text_tiers.rs crates/nikaia-std/src/tools/check_core_flow.nika crates/nikaia-std/src/tools/lowered/check_core_flow.rs crates/nikaia-std/src/tools/lowered.rs crates/nikaia/src/text_tiers.rs crates/nikaia/src/parser/mod.rs crates/nikaia/src/modules.rs crates/nikaia/src/sysroot.rs docs/specification/adr/adr-282.md tests/compiler/tests/a_text_let_in_a_tuple_part_is_text_of_its_own.nika tests/compiler/tests/a_text_let_in_a_tuple_part_is_text_of_its_own.stdout tests/compiler/tests/a_text_let_in_a_tuple_argument_or_typed_let_is_text_of_its_own.nika tests/compiler/tests/a_text_let_in_a_tuple_argument_or_typed_let_is_text_of_its_own.stdout
Commit: text tiers: the pass reads the package’s published fields; a tuple looked up keeps its literal parts
Fixes: #956
Pushed: a2a8a6f
Tests: a_text_let_in_a_tuple_part_is_text_of_its_own fails on the unfixed compiler (its lookups, probed as p6: rustc mismatched types at set.remove and set.contains); a_text_let_in_a_tuple_argument_or_typed_let_is_text_of_its_own (keep((1, o3)), let t: (i64, String) = (1, o4)) already passed on the unfixed compiler (2f73c24 made tuple parts positions), kept as regression; the other-file field case is proved in tools (tests/compiler tests are programs that use the package, not files of it): the old binary lowered the folded check_core_flow to &str (E0308 in nikaia-std), the new one to let other: String; nikaia test –both-settings –project tests/compiler 273 ok; it sysroot:: + guard set 38 ok; –lib modules:: text_tiers:: sysroot:: parser:: ok; clippy clean; pre-push-check ok; lower-std fixpoint
Gate: green
Deviation: none
Found: a let bound to a literal and changed in place, put into a container, leaves the container &’static str: let mut w = "lhs"; w.push_str("!"); set.insert(w) with set: BTreeSet[String] lowers BTreeSet<&'static str> and let mut w = String::from(..), rustc mismatched types (same for a tuple part, v.push((1, x))); plain String too, so not #956 (looks like #943 reopened)
Needs: none
Changelog: A name bound to text literals, a String part of a tuple looked up in a container that holds text of its own (set.remove((1, other))), or kept in a published String field of a struct another file of the package declares, is declared String (ADR-282 D17, #956)
Owner: none
Disk freed: none (target/nikaia-project-tests 529M; / 4.4G free; no new cache entry over 100 MB)
Rs2nika: none