Skip to content

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

Open
@jieyouxu

Description

@jieyouxu

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-compiletestArea: The compiletest test runnerA-compiletest-normalizationsArea: compiletest normalizationsA-testsuiteArea: The testsuite used to check the correctness of rustcC-bugCategory: This is a bug.D-diagnostic-infraDiagnostics: Issues that affect all diagnostics, or relate to the diagnostic machinery itself.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions