Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

compiletest: path normalizations are sensitive to diagnostics width, can lead to confusing failures #135288

Open
jieyouxu opened this issue Jan 9, 2025 · 0 comments
Labels
A-compiletest Area: The compiletest test runner A-compiletest-normalizations Area: compiletest normalizations A-testsuite Area: The testsuite used to check the correctness of rustc C-bug Category: This is a bug. D-diagnostic-infra Diagnostics: Issues that affect all diagnostics, or relate to the diagnostic machinery itself. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@jieyouxu
Copy link
Member

jieyouxu commented Jan 9, 2025

See discussions at https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/.60tests.5Cui.5Ctraits.5Cfn-pointer.5Cbare-fn-no-impl-fn-ptr-99875.2Ers.60 about tests like tests/ui/traits/fn-pointer/bare-fn-no-impl-fn-ptr-99875.rs.

Example:

20    --> $DIR/bare-fn-no-impl-fn-ptr-99875.rs:14:11
21     |
22  LL |     takes(|_: Argument| -> Return { todo!() });
-      |     ----- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
+      |     ----- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Trait` is not implemented for closure `{closure@$DIR/bare-fn-no-impl-fn-ptr-99875.rs:14:11: 14:34}`
24     |     |
25     |     required by a bound introduced by this call
26     |

-      = help: the trait `Trait` is not implemented for closure `{closure@$DIR/bare-fn-no-impl-fn-ptr-99875.rs:14:11: 14:34}`
28     = help: the trait `Trait` is implemented for fn pointer `fn(Argument) -> Return`
29  note: required by a bound in `takes`
30    --> $DIR/bare-fn-no-impl-fn-ptr-99875.rs:9:18

Note: some mismatched output was normalized before being compared
-      |     ----- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Trait` is not implemented for closure `{closure@F:\rust\tests\ui\traits\fn-pointer\bare-fn-no-impl-fn-ptr-99875.rs:14:11: 14:34}`
+      |     ----- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Trait` is not implemented for closure `{closure@$DIR/bare-fn-no-impl-fn-ptr-99875.rs:14:11: 14:34}`

Before compiletest path normalization, the length of the parent directories leading to the test file e.g. F:\rust\ vs F:\Longer\rust\ can influence the specific diagnostics shown as it affects the width.

@jieyouxu jieyouxu added A-compiletest Area: The compiletest test runner A-compiletest-normalizations Area: compiletest normalizations A-testsuite Area: The testsuite used to check the correctness of rustc C-bug Category: This is a bug. D-diagnostic-infra Diagnostics: Issues that affect all diagnostics, or relate to the diagnostic machinery itself. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jan 9, 2025
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Jan 9, 2025
@jieyouxu jieyouxu removed the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Jan 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-compiletest Area: The compiletest test runner A-compiletest-normalizations Area: compiletest normalizations A-testsuite Area: The testsuite used to check the correctness of rustc C-bug Category: This is a bug. D-diagnostic-infra Diagnostics: Issues that affect all diagnostics, or relate to the diagnostic machinery itself. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
Development

No branches or pull requests

2 participants