Skip to content

Commit

Permalink
Auto merge of #17925 - darichey:issue-17767, r=Veykril
Browse files Browse the repository at this point in the history
Include generics when lowering extern type

Fixes #17767
  • Loading branch information
bors committed Aug 19, 2024
2 parents fa00326 + e350bc2 commit ba973db
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
10 changes: 5 additions & 5 deletions crates/hir-ty/src/lower.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1976,13 +1976,13 @@ fn type_for_type_alias(db: &dyn HirDatabase, t: TypeAliasId) -> Binders<Ty> {
.with_impl_trait_mode(ImplTraitLoweringMode::Opaque)
.with_type_param_mode(ParamLoweringMode::Variable);
let type_alias_data = db.type_alias_data(t);
if type_alias_data.is_extern {
Binders::empty(Interner, TyKind::Foreign(crate::to_foreign_def_id(t)).intern(Interner))
let inner = if type_alias_data.is_extern {
TyKind::Foreign(crate::to_foreign_def_id(t)).intern(Interner)
} else {
let type_ref = &type_alias_data.type_ref;
let inner = ctx.lower_ty(type_ref.as_deref().unwrap_or(&TypeRef::Error));
make_binders(db, &generics, inner)
}
ctx.lower_ty(type_ref.as_deref().unwrap_or(&TypeRef::Error))
};
make_binders(db, &generics, inner)
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
Expand Down
16 changes: 16 additions & 0 deletions crates/hir-ty/src/tests/regression.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2195,3 +2195,19 @@ impl<'a, T: Deref<Target = impl Trait>> Struct<'a, T> {
"#]],
);
}

#[test]
fn issue_17767() {
check_infer(
r#"
extern "C" {
type Foo<T>;
}
fn f() -> Foo {}
"#,
expect![[r#"
47..49 '{}': Foo
"#]],
);
}

0 comments on commit ba973db

Please sign in to comment.