Skip to content

fix(sql): qualify JoinKind/SortDir constructors to Ast.* - #1

Merged
Ch4s3 merged 1 commit into
mainfrom
fix/joinkind-sortdir-ambiguity
Jul 29, 2026
Merged

fix(sql): qualify JoinKind/SortDir constructors to Ast.*#1
Ch4s3 merged 1 commit into
mainfrom
fix/joinkind-sortdir-ambiguity

Conversation

@Ch4s3

@Ch4s3 Ch4s3 commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Inner/Left/Right (JoinKind) and Asc/Desc (SortDir) are declared by both Ast and DataFrame, so under current march they are ambiguous wherever both modules are in scope — 17 errors across lib/sql/build.march and lib/sql/compile.march that any consumer inherits. Found while compiling bastion.

Every site here means the SQL AST's own constructors, so all qualify to Ast.*. Same treatment f11be60 gave the Expr.* collisions. The doctests in build.march are qualified along with the code they document so they keep running.

Verification

forge check, forge build and forge lint --strict clean against march main + march-language/march#106.

forge test does not yet compile on that toolchain, for two reasons this PR does not touch and does not introduce:

Both are unchanged by this commit.

`Inner`/`Left`/`Right` (JoinKind) and `Asc`/`Desc` (SortDir) are declared
by both `Ast` and `DataFrame`, so under current march they are ambiguous
wherever both modules are in scope — 17 errors across build.march and
compile.march that any consumer inherits (found compiling bastion).

Every site here means the SQL AST's own constructors, so all qualify to
`Ast.*`. Same treatment as f11be60 did for the `Expr.*` collisions, and
the doctests in build.march are qualified along with the code they
document so they keep running.

`forge check`, `forge build` and `forge lint --strict` are clean against
march main-a5c3dc70. `forge test` does not yet compile on that toolchain,
for two reasons that are not this change: six `Module Depot.* not found`
resolution failures, and test/eq_impls.march's universal `impl Eq(a)` now
colliding with a built-in implementation (coherence). Both are unchanged
by this commit and want separate fixes.
@Ch4s3
Ch4s3 merged commit 31a6b94 into main Jul 29, 2026
0 of 2 checks passed
Ch4s3 added a commit to march-language/conduit that referenced this pull request Jul 29, 2026
…ted)

forge.toml declared depot via { registry = "forge", version = "0.1.0" },
switched from a path dep in bcead90 ("prepare conduit 0.1.0 for forge
registry publish"). forge's RegistryDep resolution is an unbuilt
placeholder (forge/lib/cmd_deps.ml: "RegistryDep: placeholder (registry
not yet built)"), so that dependency silently resolved to nothing —
depot was completely absent from MARCH_LIB_PATH, and every depot-backed
module (Db, Pool, Connection, ParamText, ...) in postgres.march showed as
unknown. This has been the actual cause of CI failing since that commit;
none of it was related to the March version bump in this branch.

CI's workflow already clones depot to ../depot specifically for this,
so switching back to a path dep re-enables what CI was built for.

Verified against a from-scratch sandbox: fresh depot clone, march built
from upstream main (after merging march-language/march#106 and
march-language/depot#1, both required for this to typecheck) — forge
build and forge test --release both pass clean (167 tests, 0 failures).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant