fix: H1a G3 advanced usage shows all valid forms; complete near-miss matrix (ADR-0042)
The /runda DA pass found G3 over-corrected: advanced-mode `create`/`drop` showed SQL forms only, hiding the DSL fallback forms that are valid input in advanced mode (verified: `create table Foo with pk`, `drop column …` parse and dispatch). Per the user decision, the advanced usage block now shows every form valid in the mode, SQL-primary first, then the DSL fallback forms — a usage hint must never hide working input. Simple mode unchanged (DSL forms only). Matrix completion (closing the residual coverage tail): - arg-less app commands (help/rebuild/new/load/undo/redo/export/import) audited + locked — all reject trailing junk with "expected end of input" + usage. - committed multi-forms (add index/constraint/1:n relationship, drop index/constraint/relationship, show table, change column, create index, alter table add/drop) audited + locked in near_miss_matrix_committed_multiforms — each renders its own form-specific missing-keyword message + usage. Also from the DA pass: - G2 distinct+all detector empirically verified unique to projection start (no misfire at count( / union / union all / select distinct). - stale `chumsky` comment removed (app.rs import handler). - ADR-0042 Implementation-outcome section records G1–G4, the user-confirmed G3 decision, and the now-complete matrix coverage. Full suite green (lib 1578 / it 387 / typing_surface_matrix 192); clippy clean.
This commit is contained in:
+5
-5
@@ -1338,11 +1338,11 @@ impl App {
|
||||
},
|
||||
),
|
||||
AppCommand::Import { path, target } => {
|
||||
// The path-bearing import goes through the
|
||||
// pre-chumsky source-slice (parser.rs), which
|
||||
// already validated non-empty path. Bare
|
||||
// `import` returns from chumsky with an empty
|
||||
// path string — surface the usage error.
|
||||
// A path-bearing import carries a non-empty path
|
||||
// from the walker. Bare `import` parses with an
|
||||
// empty path string — surface the usage hint here
|
||||
// at dispatch (not a parse error; ADR-0024 replaced
|
||||
// the old chumsky source-slice path).
|
||||
if path.is_empty() {
|
||||
self.note_error(crate::t!("project.import_usage"));
|
||||
return Vec::new();
|
||||
|
||||
Reference in New Issue
Block a user