diff --git a/syndicate-schema-plugin/Cargo.toml b/syndicate-schema-plugin/Cargo.toml index 94ddb33..53a0ed3 100644 --- a/syndicate-schema-plugin/Cargo.toml +++ b/syndicate-schema-plugin/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "syndicate-schema-plugin" -version = "0.1.0" +version = "0.2.0" authors = ["Tony Garnock-Jones "] edition = "2018" diff --git a/syndicate-schema-plugin/src/pattern_plugin.rs b/syndicate-schema-plugin/src/pattern_plugin.rs index bbe133d..312a8d9 100644 --- a/syndicate-schema-plugin/src/pattern_plugin.rs +++ b/syndicate-schema-plugin/src/pattern_plugin.rs @@ -4,6 +4,9 @@ use preserves_schema::compiler::context::ModuleContext; use preserves_schema::gen::schema::*; use preserves_schema::syntax::block::escape_string; use preserves_schema::syntax::block::constructors::*; +use preserves_schema::compiler::names; +use preserves_schema::compiler::types::definition_type; +use preserves_schema::compiler::types::Purpose; use std::iter::FromIterator; @@ -29,12 +32,21 @@ impl Plugin for PatternPlugin { if ctxt.mode == context::ModuleContextMode::TargetGeneric { let mut s = WalkState::new(ctxt, ctxt.module_path.clone()); if let Some(p) = definition.wc(&mut s) { + let ty = definition_type(&ctxt.module_path, + Purpose::Codegen, + definition_name, + definition); let v = syndicate::language().unparse(&p); let v = preserves_schema::support::preserves::value::TextWriter::encode( &mut preserves_schema::support::preserves::value::NoEmbeddedDomainCodec, &v).unwrap(); ctxt.define_type(item(seq![ - "impl ", definition_name.to_owned(), " ", codeblock![ + "impl", + ty.generic_decl(ctxt), + " ", + names::render_constructor(definition_name), + ty.generic_arg(ctxt), + " ", codeblock![ seq!["#[allow(unused)] pub fn wildcard_dataspace_pattern() ", "-> syndicate::schemas::dataspace_patterns::Pattern ", codeblock![ diff --git a/syndicate-server/Cargo.toml b/syndicate-server/Cargo.toml index d8d3167..a763ae9 100644 --- a/syndicate-server/Cargo.toml +++ b/syndicate-server/Cargo.toml @@ -15,7 +15,7 @@ jemalloc = ["dep:tikv-jemallocator"] [build-dependencies] preserves-schema = "4.991" syndicate = { path = "../syndicate", version = "0.30.0"} -syndicate-schema-plugin = { path = "../syndicate-schema-plugin", version = "0.1.0"} +syndicate-schema-plugin = { path = "../syndicate-schema-plugin", version = "0.2.0"} [dependencies] preserves-schema = "4.991" diff --git a/syndicate-server/src/services/config_watcher.rs b/syndicate-server/src/services/config_watcher.rs index b0c4a3a..ea50c26 100644 --- a/syndicate-server/src/services/config_watcher.rs +++ b/syndicate-server/src/services/config_watcher.rs @@ -36,7 +36,7 @@ use syndicate_macros::during; pub fn on_demand(t: &mut Activation, config_ds: Arc) { t.spawn(Some(AnyValue::symbol("config_watcher")), move |t| { - Ok(during!(t, config_ds, language(), , |t| { + Ok(during!(t, config_ds, language(), >, |t| { Supervisor::start( t, Some(rec![AnyValue::symbol("config"), AnyValue::new(spec.path.clone())]), diff --git a/syndicate-server/src/services/daemon.rs b/syndicate-server/src/services/daemon.rs index d2c03c3..6c0ae4c 100644 --- a/syndicate-server/src/services/daemon.rs +++ b/syndicate-server/src/services/daemon.rs @@ -24,7 +24,7 @@ use syndicate_macros::during; pub fn on_demand(t: &mut Activation, config_ds: Arc, root_ds: Arc) { t.spawn(Some(AnyValue::symbol("daemon_listener")), move |t| { - Ok(during!(t, config_ds, language(), , + Ok(during!(t, config_ds, language(), >, enclose!((config_ds, root_ds) move |t: &mut Activation| { supervise_daemon(t, config_ds, root_ds, spec) }))) diff --git a/syndicate-server/src/services/tcp_relay_listener.rs b/syndicate-server/src/services/tcp_relay_listener.rs index 04375f2..f8f12e0 100644 --- a/syndicate-server/src/services/tcp_relay_listener.rs +++ b/syndicate-server/src/services/tcp_relay_listener.rs @@ -21,7 +21,7 @@ use syndicate_macros::during; pub fn on_demand(t: &mut Activation, ds: Arc) { t.spawn(Some(AnyValue::symbol("tcp_relay_listener")), move |t| { - Ok(during!(t, ds, language(), , |t| { + Ok(during!(t, ds, language(), >, |t| { Supervisor::start( t, Some(rec![AnyValue::symbol("relay"), language().unparse(&spec)]), diff --git a/syndicate-server/src/services/unix_relay_listener.rs b/syndicate-server/src/services/unix_relay_listener.rs index a36391f..2a71fa8 100644 --- a/syndicate-server/src/services/unix_relay_listener.rs +++ b/syndicate-server/src/services/unix_relay_listener.rs @@ -25,7 +25,7 @@ use syndicate_macros::during; pub fn on_demand(t: &mut Activation, ds: Arc) { t.spawn(Some(AnyValue::symbol("unix_relay_listener")), move |t| { - Ok(during!(t, ds, language(), , |t| { + Ok(during!(t, ds, language(), >, |t| { Supervisor::start( t, Some(rec![AnyValue::symbol("relay"), language().unparse(&spec)]),