Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ra-salsa/tests/variadic.rs')
-rw-r--r--crates/ra-salsa/tests/variadic.rs51
1 files changed, 51 insertions, 0 deletions
diff --git a/crates/ra-salsa/tests/variadic.rs b/crates/ra-salsa/tests/variadic.rs
new file mode 100644
index 0000000000..11a6d13ebe
--- /dev/null
+++ b/crates/ra-salsa/tests/variadic.rs
@@ -0,0 +1,51 @@
+#[ra_salsa::query_group(HelloWorld)]
+trait HelloWorldDatabase: ra_salsa::Database {
+ #[ra_salsa::input]
+ fn input(&self, a: u32, b: u32) -> u32;
+
+ fn none(&self) -> u32;
+
+ fn one(&self, k: u32) -> u32;
+
+ fn two(&self, a: u32, b: u32) -> u32;
+
+ fn trailing(&self, a: u32, b: u32) -> u32;
+}
+
+fn none(_db: &dyn HelloWorldDatabase) -> u32 {
+ 22
+}
+
+fn one(_db: &dyn HelloWorldDatabase, k: u32) -> u32 {
+ k * 2
+}
+
+fn two(_db: &dyn HelloWorldDatabase, a: u32, b: u32) -> u32 {
+ a * b
+}
+
+fn trailing(_db: &dyn HelloWorldDatabase, a: u32, b: u32) -> u32 {
+ a - b
+}
+
+#[ra_salsa::database(HelloWorld)]
+#[derive(Default)]
+struct DatabaseStruct {
+ storage: ra_salsa::Storage<Self>,
+}
+
+impl ra_salsa::Database for DatabaseStruct {}
+
+#[test]
+fn execute() {
+ let mut db = DatabaseStruct::default();
+
+ // test what happens with inputs:
+ db.set_input(1, 2, 3);
+ assert_eq!(db.input(1, 2), 3);
+
+ assert_eq!(db.none(), 22);
+ assert_eq!(db.one(11), 22);
+ assert_eq!(db.two(11, 2), 22);
+ assert_eq!(db.trailing(24, 2), 22);
+}