Skip to content

fix:Normalize associated types in orphan checks - #23078

Open
YUZHEthefool wants to merge 1 commit into
rust-lang:masterfrom
YUZHEthefool:fix-23076-normalize-orphan-aliases
Open

fix:Normalize associated types in orphan checks#23078
YUZHEthefool wants to merge 1 commit into
rust-lang:masterfrom
YUZHEthefool:fix-23076-normalize-orphan-aliases

Conversation

@YUZHEthefool

@YUZHEthefool YUZHEthefool commented Aug 8, 2026

Copy link
Copy Markdown

错误原因是当前没有在orphan-rule检查前将<() as Trait>::Assoc归一化成实际的本地类型LocalType,修复在locality遍历中结构化归一化alias同时在归一化失败时仍保持原来的保守判断。仿照原有测试的内容做了正例,fundamental包裹以及外部类型反例的最小化测试。

<The reason for the error is that <() as Trait>::Assoc is not normalized to the actual local type LocalType before orphan-rule checking. This fixes the structural normalization of alias in locality traversal while maintaining the original conservative judgment when normalization fails. Minimized tests of positive examples, fundamental packages and external type counterexamples were made based on the content of the original tests.>
Fixed: #23076

@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Aug 8, 2026
infcx.get_or_init(|| interner.infer_ctxt().build(TypingMode::non_body_analysis()));
let mut ocx = ObligationCtxt::new(infcx);
ocx.structurally_normalize_ty(&cause, param_env, ty).unwrap_or(ty)
};

@ChayimFriedman2 ChayimFriedman2 Aug 9, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Just deeply normalize once.

View changes since the review

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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FP only traits defined in the current crate can be implemented for arbitrary types

3 participants