Skip to content

Commit f0507ab

Browse files
committed
hir_ty: cleanups and extend infinitely_recursive_macro_type test
1 parent 6ed2fd2 commit f0507ab

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

crates/hir_ty/src/lower.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -296,9 +296,11 @@ impl<'a> TyLoweringContext<'a> {
296296
}
297297
}
298298
TypeRef::Macro(macro_call) => {
299-
let (expander, recursion_start) = match self.expander.borrow_mut() {
300-
expander if expander.is_some() => (Some(expander), false),
301-
mut expander => {
299+
let (expander, recursion_start) = {
300+
let mut expander = self.expander.borrow_mut();
301+
if expander.is_some() {
302+
(Some(expander), false)
303+
} else {
302304
if let Some(module_id) = self.resolver.module() {
303305
*expander = Some(Expander::new(
304306
self.db.upcast(),

crates/hir_ty/src/tests/macros.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1248,24 +1248,28 @@ fn macros_in_type_generics() {
12481248
fn infinitely_recursive_macro_type() {
12491249
check_infer(
12501250
r#"
1251-
struct Bar<T>(T);
1251+
struct Bar<T, X>(T, X);
12521252
12531253
macro_rules! Foo {
12541254
() => { Foo!() }
12551255
}
12561256
1257+
macro_rules! U32 {
1258+
() => { u32 }
1259+
}
1260+
12571261
type A = Foo!();
1258-
type B = Bar<Foo!()>;
1262+
type B = Bar<Foo!(), U32!()>;
12591263
12601264
fn main() {
12611265
let a: A;
12621266
let b: B;
12631267
}
12641268
"#,
12651269
expect![[r#"
1266-
112..143 '{ ...: B; }': ()
1267-
122..123 'a': {unknown}
1268-
136..137 'b': Bar<{unknown}>
1270+
166..197 '{ ...: B; }': ()
1271+
176..177 'a': {unknown}
1272+
190..191 'b': Bar<{unknown}, u32>
12691273
"#]],
12701274
);
12711275
}

0 commit comments

Comments
 (0)