diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-05-02 11:30:49 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2020-05-02 11:30:49 +0100 |
commit | fb8fb65131c8d3e6335efd401e4e83287be49357 (patch) | |
tree | 9b82278d8f204a012a1e115f92b252c7c6150e15 /crates/ra_hir_ty | |
parent | 75bc0249463b72971200e482d69dad88d4e76ae3 (diff) | |
parent | edf0b4c1528407d5077220191e601ac41f790b99 (diff) |
Merge #4234
4234: Support local_inner_macros r=jonas-schievink a=edwin0cheng
This PR implements `#[macro_export(local_inner_macros)]` support.
Note that the rustc implementation is quite [hacky][1] too. :)
[1]: https://github.com/rust-lang/rust/blob/614f273e9388ddd7804d5cbc80b8865068a3744e/src/librustc_resolve/macros.rs#L456
Co-authored-by: Edwin Cheng <[email protected]>
Diffstat (limited to 'crates/ra_hir_ty')
-rw-r--r-- | crates/ra_hir_ty/src/tests/macros.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/crates/ra_hir_ty/src/tests/macros.rs b/crates/ra_hir_ty/src/tests/macros.rs index 1f796876d..29e38a06c 100644 --- a/crates/ra_hir_ty/src/tests/macros.rs +++ b/crates/ra_hir_ty/src/tests/macros.rs | |||
@@ -428,6 +428,32 @@ fn main() { | |||
428 | } | 428 | } |
429 | 429 | ||
430 | #[test] | 430 | #[test] |
431 | fn infer_local_inner_macros() { | ||
432 | let (db, pos) = TestDB::with_position( | ||
433 | r#" | ||
434 | //- /main.rs crate:main deps:foo | ||
435 | fn test() { | ||
436 | let x = foo::foo!(1); | ||
437 | x<|>; | ||
438 | } | ||
439 | |||
440 | //- /lib.rs crate:foo | ||
441 | #[macro_export(local_inner_macros)] | ||
442 | macro_rules! foo { | ||
443 | (1) => { bar!() }; | ||
444 | } | ||
445 | |||
446 | #[macro_export] | ||
447 | macro_rules! bar { | ||
448 | () => { 42 } | ||
449 | } | ||
450 | |||
451 | "#, | ||
452 | ); | ||
453 | assert_eq!("i32", type_at_pos(&db, pos)); | ||
454 | } | ||
455 | |||
456 | #[test] | ||
431 | fn infer_builtin_macros_line() { | 457 | fn infer_builtin_macros_line() { |
432 | assert_snapshot!( | 458 | assert_snapshot!( |
433 | infer(r#" | 459 | infer(r#" |