aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-02-20 21:42:25 +0100
committerGustav Sörnäs <gustav@sornas.net>2021-02-20 21:42:25 +0100
commitef38892cb0c8245d65a07518e080849795016755 (patch)
treeb6df2df8fee78972f9a1fd3578a4f8a643bc614e /src/main.rs
parent6e97e9667967f90c66ff71f2c5468d5700887f24 (diff)
downloadsylt-automatic-link.tar.gz
cool linky macroautomatic-link
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs33
1 files changed, 11 insertions, 22 deletions
diff --git a/src/main.rs b/src/main.rs
index 21785a2..28e4e79 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -2,36 +2,15 @@ use std::path::{Path, PathBuf};
use sylt::run_file;
-mod linked;
-
struct Args {
file: Option<PathBuf>,
print: bool,
}
-macro_rules! link {
- ([ $( $ident:tt ),* ]) => {
- vec![
- $( (stringify!($ident).to_string(), $ident), )*
- ]
- }
-}
-
-sylt_macro::extern_function!(
- extern_test
- [sylt::Value::Float(x), sylt::Value::Float(y)] -> sylt::Type::Float => {
- Ok(sylt::Value::Float(x + y))
- },
- [sylt::Value::Float(x)] -> sylt::Type::Float => {
- Ok(sylt::Value::Float(*x))
- },
-);
-
fn main() {
let args = parse_args();
let file = args.file.unwrap_or_else(|| Path::new("progs/tests/simple.sy").to_owned());
- println!("{:?}", sylt_macro::links!());
- let errs = match run_file(&file, args.print, vec![]) {
+ let errs = match run_file(&file, args.print, sylt_macro::link!(extern_test as test)) {
Err(it) => it,
_ => return,
};
@@ -59,3 +38,13 @@ fn parse_args() -> Args {
};
args
}
+
+sylt_macro::extern_function!(
+ extern_test
+ [sylt::Value::Float(x), sylt::Value::Float(y)] -> sylt::Type::Float => {
+ Ok(sylt::Value::Float(x + y))
+ },
+ [sylt::Value::Float(x)] -> sylt::Type::Float => {
+ Ok(sylt::Value::Float(*x))
+ },
+);