aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/ty/tests.rs')
-rw-r--r--crates/ra_hir/src/ty/tests.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs
index 7de434180..4df39c191 100644
--- a/crates/ra_hir/src/ty/tests.rs
+++ b/crates/ra_hir/src/ty/tests.rs
@@ -3130,6 +3130,39 @@ fn test() { S.foo()<|>; }
3130 assert_eq!(t, "u128"); 3130 assert_eq!(t, "u128");
3131} 3131}
3132 3132
3133#[test]
3134fn infer_macro_with_dollar_crate_is_correct_in_expr() {
3135 covers!(macro_dollar_crate_other);
3136 let (mut db, pos) = MockDatabase::with_position(
3137 r#"
3138//- /main.rs
3139fn test() {
3140 let x = (foo::foo!(1), foo::foo!(2));
3141 x<|>;
3142}
3143
3144//- /lib.rs
3145#[macro_export]
3146macro_rules! foo {
3147 (1) => { $crate::bar!() };
3148 (2) => { 1 + $crate::baz() };
3149}
3150
3151#[macro_export]
3152macro_rules! bar {
3153 () => { 42 }
3154}
3155
3156pub fn baz() -> usize { 31usize }
3157"#,
3158 );
3159 db.set_crate_graph_from_fixture(crate_graph! {
3160 "main": ("/main.rs", ["foo"]),
3161 "foo": ("/lib.rs", []),
3162 });
3163 assert_eq!("(i32, usize)", type_at_pos(&db, pos));
3164}
3165
3133#[ignore] 3166#[ignore]
3134#[test] 3167#[test]
3135fn method_resolution_trait_before_autoref() { 3168fn method_resolution_trait_before_autoref() {