diff options
author | 2017-11-20 05:11:25 +0100 | |
---|---|---|
committer | 2017-12-09 12:45:57 +0100 | |
commit | e97afa71ce7bf3d78e257de1aab329135e98c721 (patch) | |
tree | 8335f9d8327a9863ec64b79934f8241b350f7fe3 /macros/src/check.rs | |
parent | e620b1e57a39f342cf73ad6ac8ab0e179b97bfd5 (diff) | |
download | rtic-e97afa71ce7bf3d78e257de1aab329135e98c721.tar.gz rtic-e97afa71ce7bf3d78e257de1aab329135e98c721.tar.zst rtic-e97afa71ce7bf3d78e257de1aab329135e98c721.zip |
peripherals as scoped singletons
Diffstat (limited to 'macros/src/check.rs')
-rw-r--r-- | macros/src/check.rs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/macros/src/check.rs b/macros/src/check.rs index 3cd112ac..63cac1fa 100644 --- a/macros/src/check.rs +++ b/macros/src/check.rs @@ -63,16 +63,15 @@ pub fn app(app: check::App) -> Result<App> { tasks: app.tasks .into_iter() .map(|(k, v)| { - let v = ::check::task(k.as_ref(), v) - .chain_err(|| format!("checking task `{}`", k))?; + let v = + ::check::task(k.as_ref(), v).chain_err(|| format!("checking task `{}`", k))?; Ok((k, v)) }) .collect::<Result<_>>()?, }; - ::check::resources(&app) - .chain_err(|| "checking `resources`")?; + ::check::resources(&app).chain_err(|| "checking `resources`")?; Ok(app) } @@ -93,6 +92,17 @@ fn resources(app: &App) -> Result<()> { bail!("resource `{}` is unused", resource); } + for (name, task) in &app.tasks { + for resource in &task.resources { + ensure!( + app.resources.contains_key(&resource), + "task {} contains an undeclared resource with name {}", + name, + resource + ); + } + } + Ok(()) } |