fix(source): admit ordinary schema eight with current roundtrip coverage

This commit is contained in:
2026-09-24 20:31:39 -07:00
parent edf096cd33
commit 33b86a4d6b
4 changed files with 401 additions and 6 deletions
+8 -4
View File
@@ -3,7 +3,7 @@ mod raw_tokens;
#[path = "language/semantic_source.rs"]
mod semantic_source;
mod source3_bridge;
// Staged syntax foundation only. Public source8 admission waits for complete
// Staged typed analysis only. Public mixed source8 admission waits for complete
// declaration lowering, source updates and the root-owned resource gate.
#[cfg(test)]
mod analysis_source;
@@ -338,7 +338,7 @@ fn enum_field(key: &str) -> bool {
)
}
/// Parse V5, or explicitly migrate a valid V1/V2/V3/V4 source candidate. Parsing never
/// Parse ordinary V8, or explicitly migrate a supported older source candidate. Parsing never
/// adopts a model and never overwrites an editor draft.
pub fn parse(source: &str) -> Result<Project, Vec<Diagnostic>> {
parse_limited(source, ParseLimits::UNLIMITED)
@@ -1548,12 +1548,12 @@ impl Parser<'_> {
if if mixed_mode {
self.text() != "8"
} else {
!matches!(self.text(), "3" | "4" | "5" | "6" | "7")
!matches!(self.text(), "3" | "4" | "5" | "6" | "7" | "8")
} {
return Err(self.error(if mixed_mode {
"Private mixed syntax requires arcadia 8."
} else {
"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7."
"Unsupported schema version: expected arcadia 3, 4, 5, 6, 7 or 8."
}));
}
let schema_version = self.text().parse().expect("checked source version");
@@ -2283,6 +2283,10 @@ pub fn analyze(source: &str) -> Analysis {
#[path = "language_nesting_tests.rs"]
mod nesting_tests;
#[cfg(test)]
#[path = "language_ordinary_source8_tests.rs"]
mod ordinary_source8;
pub(crate) mod legacy {
//! Arcadia text: a readable, lossless representation of a valid OA project.
//!