Skip to content

Conversation

@xizheyin
Copy link
Member

@xizheyin xizheyin commented Jun 12, 2025

Fixes #141679

r? compiler

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jun 12, 2025
@BoxyUwU
Copy link
Member

BoxyUwU commented Jun 23, 2025

r? compiler

@rustbot rustbot assigned lcnr and unassigned BoxyUwU Jun 23, 2025
@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 16, 2025
Copy link
Member Author

@xizheyin xizheyin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jul 20, 2025
@fee1-dead
Copy link
Member

do you not get TyKind::Alias when you use type_of on the impl? coherence is probably fine to use middle queries

Copy link
Member Author

@xizheyin xizheyin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've tried using type_of before, but I don't seem to be getting the information I'm looking for. When I try this code

            let ty = self.tcx.type_of(impl_def_id).skip_binder();
            if let ty::Adt(def, _) = ty.kind() {
                let def_id = def.did();
                let ty_name = self.tcx.def_path_str(def_id);
                let alias_ty_name = self.tcx.type_of(def_id).skip_binder().to_string();
                println!("ty_name: {:?}", ty_name);
                println!("alias_ty_name: {:?}", alias_ty_name);
            }

it prints:

ty_name: "Rc"
alias_ty_name: "Rc<T, A>"

It should be:

ty_name: "Function"
alias_ty_name: "Rc<Foo>"

Local variable ty is a adt of type Rc. Maybe the information we need only exists in HIR? Or am I using it wrong?

Comment on lines +112 to +117
if let hir::TyKind::Path(rustc_hir::QPath::Resolved(_, path)) =
self.tcx.hir_node_by_def_id(impl_def_id).expect_item().expect_impl().self_ty.kind
&& let rustc_hir::def::Res::Def(DefKind::TyAlias, def_id) = path.res
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I merged the two ifs.

@compiler-errors
Copy link
Contributor

r? compiler

@fmease
Copy link
Member

fmease commented Aug 16, 2025

Only under the experimental feature lazy_type_alias do we represent aliases in middle::ty IR, that's why type_of returns the expanded form (it gets expanded during HIR ty lowering for eager type aliases).

@fmease fmease self-assigned this Oct 22, 2025
Copy link
Contributor

@estebank estebank left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's deal with the structured suggestion later.

r=me after addressing nitpicks

View changes since this review

@fmease fmease assigned estebank and unassigned fmease Dec 12, 2025
@rust-bors

This comment has been minimized.

@rustbot
Copy link
Collaborator

rustbot commented Feb 9, 2026

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@xizheyin
Copy link
Member Author

xizheyin commented Feb 9, 2026

@estebank I have rebased and fix the nits. CI green. Sorry for late response.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

error message for inherent impl on type that is external could be more explanatory

9 participants