diff options
author | Edwin Cheng <edwin0cheng@gmail.com> | 2020-03-18 09:47:59 +0000 |
---|---|---|
committer | Edwin Cheng <edwin0cheng@gmail.com> | 2020-03-25 11:50:12 +0000 |
commit | 34dc8d25c1e461cc311d6d4404f74502513cd3ae (patch) | |
tree | 00aab26b07c1cd42dfa350eeddc6c41e5bea178b /crates/ra_hir_ty/src/tests | |
parent | e2dd17f75b1bb5e1185acff66211e74430177592 (diff) |
Add basic custom derive lowering
Diffstat (limited to 'crates/ra_hir_ty/src/tests')
-rw-r--r-- | crates/ra_hir_ty/src/tests/macros.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/crates/ra_hir_ty/src/tests/macros.rs b/crates/ra_hir_ty/src/tests/macros.rs index 2e309a379..d59e4eea6 100644 --- a/crates/ra_hir_ty/src/tests/macros.rs +++ b/crates/ra_hir_ty/src/tests/macros.rs | |||
@@ -639,3 +639,26 @@ mod clone { | |||
639 | ); | 639 | ); |
640 | assert_eq!("(Wrapper<S>, {unknown})", type_at_pos(&db, pos)); | 640 | assert_eq!("(Wrapper<S>, {unknown})", type_at_pos(&db, pos)); |
641 | } | 641 | } |
642 | |||
643 | #[test] | ||
644 | fn infer_custom_derive_simple() { | ||
645 | let (db, pos) = TestDB::with_position( | ||
646 | r#" | ||
647 | //- /main.rs crate:main deps:foo | ||
648 | use foo::Foo; | ||
649 | |||
650 | #[derive(Foo)] | ||
651 | struct S{} | ||
652 | |||
653 | fn test() { | ||
654 | S{}<|>; | ||
655 | } | ||
656 | |||
657 | //- /lib.rs crate:foo | ||
658 | #[proc_macro_derive(Foo)] | ||
659 | pub fn derive_foo(_item: TokenStream) -> TokenStream { | ||
660 | } | ||
661 | "#, | ||
662 | ); | ||
663 | assert_eq!("S", type_at_pos(&db, pos)); | ||
664 | } | ||