compiletest: compare-mode cannot handle mixed success + failure #49855
Labels
A-compiletest
Area: The compiletest test runner
A-compiletest-compare-modes
Area: compiletest compare-modes
A-testsuite
Area: The testsuite used to check the correctness of rustc
C-enhancement
Category: An issue proposing an enhancement or a PR with one.
E-needs-design
This issue needs exploration and design to see how and if we can fix/implement it
E-needs-investigation
Call for partcipation: This issues needs some investigation to determine current status
T-bootstrap
Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Uh oh!
There was an error while loading. Please reload this page.
Sub-issue of #48879
Currently, if you have a ui test
src/test/ui/foo.rs
that signals a diagnostic error under the AST borrowck, but has no error under the NLL borrowck, then there is no way to make afoo.nll.stderr
orfoo.nll.stdout
such that runningcompiletest --compare-mode=nll
will accept it.The reason:
compiletest
complains that the compilation itself was successful, and by default, all ui tests are assumed to signal a compilation failure.The usual way such a case (of a test that compiles without an error) is handled in
compiletest
is to add a comment of the form// run-pass
in the test itself. But we do not want the tests to be marked as always passing; they only pass under the special mode (NLL in this case) that is still under development in the compiler itself.There are a number of reasonable ways of addressing this.
they end with a functiontheirfn main
is tagged with#[rustc_error]
, so that they will never successfully compile.// [nll] run-pass
.compiletest
infer that a test, when running under compare-mode, must have an implicit// run-pass
marker, if there exists afoo.mode.stdout
file (even an empty one).I'm not such a big fan of options 1 or 2 because I like the fact that (so far) compare-mode does not have to impact the existing
.rs
nor.stderr
/.stdout
files; you just add your alternative.nll.stderr
file and no one else is the wiser.So currently I would like us to adopt option 3 (or some other option I haven't thought of yet) that allows the
.rs
/.stderr
/.stdout
to go on oblivious to the existence of compare-mode.But, in the short term, to let us get work done, I plan to follow option 1 for all existing
ui/
tests. (This is intended to be a temporary hack; all such uses of this hack should point back to this issue.)The text was updated successfully, but these errors were encountered: