fix(derive): keep components incremental
Let #[slhx::component] preserve inline modules when generated symbols are absent, while still enforcing handler completeness when slhx.syms exists. req: component/005 req: test/002
This commit is contained in:
+2
-14
@@ -89,22 +89,10 @@ pub fn component(_attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
.into();
|
||||
};
|
||||
let Some(syms_path) = syms_path() else {
|
||||
return quote!(
|
||||
#module
|
||||
compile_error!("#[slhx::component] requires OUT_DIR; run inside a Cargo crate with slhx_build::app() in build.rs");
|
||||
)
|
||||
.into();
|
||||
return quote!(#module).into();
|
||||
};
|
||||
if !syms_path.exists() {
|
||||
let message = format!(
|
||||
"#[slhx::component] could not find {}; add slhx_build::app().run()? to build.rs or check template generation",
|
||||
syms_path.display()
|
||||
);
|
||||
return quote!(
|
||||
#module
|
||||
compile_error!(#message);
|
||||
)
|
||||
.into();
|
||||
return quote!(#module).into();
|
||||
}
|
||||
let missing = missing_component_handlers(&syms_path, items);
|
||||
if !missing.is_empty() {
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
use slhx_derive::surface;
|
||||
use slhx_derive::{component, surface};
|
||||
|
||||
#[component]
|
||||
mod local_component {
|
||||
pub const EXISTING: u8 = 1;
|
||||
}
|
||||
|
||||
#[surface]
|
||||
mod ui {
|
||||
@@ -9,3 +14,8 @@ mod ui {
|
||||
fn surface_macro_preserves_inline_module_with_generated_file() {
|
||||
assert_eq!(ui::EXISTING, 1);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn component_macro_preserves_inline_module_without_generated_symbols() {
|
||||
assert_eq!(local_component::EXISTING, 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user