Commit Graph

15 Commits

Author SHA1 Message Date
slhx agent 93c68b6d87 feat(derive): scope component handler checks
Allow #[slhx::component("name")] to validate only the generated handles for that hemplate component, so component modules can be checked independently without implementing unrelated handles.

req: component/003

req: component/005
2026-05-26 00:18:17 +02:00
slhx agent 0b6ad64d98 feat(derive): expose checked form resource constants
Have #[slhx::form] emit an associated FORM resource so checked form handlers can be called with TodoInput::FORM-style values instead of generated_resource.typed::<T>() noise.

req: form/001

req: form/004

req: form/006

req: codegen/004
2026-05-26 00:03:47 +02:00
slhx agent 21716882ab feat(derive): check form parser availability
Introduce FormValue as the parser-availability bound for #[slhx::form] models, blanket it for FromStr types, and add compile-fail coverage for a form field whose domain type lacks a parser.

req: form/004

req: form/006
2026-05-25 23:48:56 +02:00
slhx agent 274b8e9e55 feat(derive): check form model structure
Add #[slhx::form] for user-authored form models, emit form field metadata into slhx.syms, and require form handlers to accept models that passed generated field compatibility checks.

req: form/001

req: form/004

req: form/006

req: codegen/004
2026-05-25 23:44:43 +02:00
slhx agent 34d6757ccd fix(derive): reject form impostor parameters
Tighten generated-form handler checking so a parameter must look like slhx::Form<T> or imported Form<T>, not a nongeneric local Form or unrelated path with a Form suffix.

req: form/004

req: form/006
2026-05-25 23:31:48 +02:00
slhx agent d02c15c59b test(derive): keep form handlers checked for params
Add compile-fail coverage showing that accepting a generated Form<T> does not bypass required generated data-param checking for the same handle.

req: form/006

req: derive_handler/003
2026-05-25 23:29:06 +02:00
slhx agent d223a1d215 feat(derive): check component handlers
Make #[slhx::component] compare generated handle symbols with inline #[slhx::handler] functions and fail when a required handler implementation is missing.

req: component/005

req: check/002

req: test/003
2026-05-25 22:30:07 +02:00
slhx agent d25361d34d feat(derive): check generated handler params
Emit handle_param facts for handled data-* attributes and reject handlers that omit generated param arguments. Cover the generated param boundary with unit and compile-fail tests.

req: derive_handler/001

req: test/003
2026-05-25 22:17:08 +02:00
slhx agent 6d9d5e4c4e fix(derive): reject form type impostors
Tighten generated form-handler validation so only actual Form paths satisfy form handles; names like CreateForm no longer bypass the slhx::Form<_> requirement. Cover with unit and compile-fail tests.

req: form/004

req: form/006

req: test/003
2026-05-25 22:10:19 +02:00
slhx agent 59b0c8ccc4 test(derive): cover surface inline requirement
Add compile-fail coverage for #[slhx::surface] on non-inline modules so the generated surface boundary stays explicit.

req: codegen/001

req: test/003
2026-05-25 21:30:18 +02:00
slhx agent 87a19fd923 fix(derive): require generated handler symbols
Make #[slhx::handler] fail when slhx.syms is missing instead of silently skipping generated handle checks. Add compile-fail coverage with an actionable build.rs hint.

req: build/003

req: test/003
2026-05-25 21:26:48 +02:00
slhx agent dca26511cc feat(derive): require form parameter for form handles
Emit handle-form facts from slhx-build and have #[slhx::handler] reject generated form handlers that do not accept slhx::Form<_>. Cover the boundary with compile-fail fixtures.

req: form/004

req: form/006

req: test/003
2026-05-25 21:23:37 +02:00
slhx agent 3ea596a218 fix(derive): fail missing surface generation
Make #[slhx::surface] report a compile-time error when slhx.generated.rs is absent instead of silently expanding to an empty module. Add compile-fail coverage for the missing generated include path.

req: build/004

req: test/003
2026-05-25 21:20:18 +02:00
slhx agent a6db4699f7 test(derive): cover missing generated resource
Add compile-fail coverage for generated APIs: a surface include that exposes only one class must reject references to absent generated class names during cargo check.

req: codegen/001

req: style/002

req: test/003
2026-05-25 21:16:24 +02:00
slhx agent b7055f225a test(derive): cover handler compile failures
Add a fixture-backed compile-fail test for generated slhx handler contracts: unknown handles and invalid handler shape fail during cargo check with actionable diagnostics.

req: derive_handler/001

req: test/003
2026-05-25 21:14:16 +02:00