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

Remove nll compare mode. #1366

Merged
merged 1 commit into from
Jun 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions src/tests/compiletest.md
Original file line number Diff line number Diff line change
Expand Up @@ -501,23 +501,22 @@ To run the tests in a different mode, you need to pass the `--compare-mode`
CLI flag:

```bash
./x.py test src/test/ui --compare-mode=nll
./x.py test src/test/ui --compare-mode=chalk
```

The possible compare modes are:

* `nll` — Runs in the "true" NLL mode with `-Zborrowck=mir`.
See [UI compare modes](ui.md#compare-modes) for more.
* `polonius` — Runs with Polonius with `-Zpolonius -Zborrowck=mir`, and reuses
the `nll` stderr files.
* `polonius` — Runs with Polonius with `-Zpolonius -Zborrowck=mir`.
Copy link
Member

Choose a reason for hiding this comment

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

No -Zborrowck

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It looks like it is still defined here. I'm guessing that should be removed, too?

Copy link
Member

Choose a reason for hiding this comment

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

Oh. Yeah, that's gonna fail.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

OK, posted rust-lang/rust#97894 and #1367 with a fix.

* `chalk` — Runs with Chalk with `-Zchalk`.
* `split-dwarf` — Runs with unpacked split-DWARF with `-Csplit-debuginfo=unpacked`.
* `split-dwarf-single` — Runs with packed split-DWARF with `-Csplit-debuginfo=packed`.

See [UI compare modes](ui.md#compare-modes) for more information about how UI
tests support different output for different modes.

In CI, compare modes are only used in one Linux builder, and only with the
following settings:

* `src/test/ui`: Uses `nll` mode.
* `src/test/debuginfo`: Uses `split-dwarf` mode.
This helps ensure that none of the debuginfo tests are affected when
enabling split-DWARF.
Expand Down
2 changes: 1 addition & 1 deletion src/tests/headers.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Some examples of `X` in `ignore-X` or `only-X`:
* When [remote testing] is used: `remote`
* When debug-assertions are enabled: `debug`
* When particular debuggers are being tested: `cdb`, `gdb`, `lldb`
* Specific [compare modes]: `compare-mode-nll`, `compare-mode-polonius`,
* Specific [compare modes]: `compare-mode-polonius`,
`compare-mode-chalk`, `compare-mode-split-dwarf`,
`compare-mode-split-dwarf-single`

Expand Down
10 changes: 5 additions & 5 deletions src/tests/running.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,13 +196,13 @@ of the `build` directory from time to time.
## Running tests with different "compare modes"

UI tests may have different output depending on certain "modes" that
the compiler is in. For example, when in "non-lexical lifetimes" (NLL)
mode a test `foo.rs` will first look for expected output in
`foo.nll.stderr`, falling back to the usual `foo.stderr` if not found.
To run the UI test suite in NLL mode, one would use the following:
the compiler is in. For example, when using the Polonius
mode, a test `foo.rs` will first look for expected output in
`foo.polonius.stderr`, falling back to the usual `foo.stderr` if not found.
The following will run the UI test suite in Polonius mode:

```bash
./x.py test src/test/ui --compare-mode=nll
./x.py test src/test/ui --compare-mode=polonius
```

See [Compare modes](compiletest.md#compare-modes) for more details.
Expand Down
15 changes: 7 additions & 8 deletions src/tests/ui.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ The general form is:
* `32bit.stderr` — compiler stderr with `stderr-per-bitwidth` header on a 32-bit target

A simple example would be `foo.stderr` next to a `foo.rs` test.
A more complex example would be `foo.my-revision.nll.stderr`.
A more complex example would be `foo.my-revision.polonius.stderr`.

There are several [headers](headers.md) which will change how compiletest will
check for output files:
Expand Down Expand Up @@ -496,20 +496,19 @@ In some cases, this might result in different output from the compiler.
To support this, different output files can be saved which contain the
output based on the compare mode.

For example, when in "non-lexical lifetimes" (NLL) mode a test `foo.rs` will
first look for expected output in `foo.nll.stderr`, falling back to the usual
For example, when using the Polonius mode, a test `foo.rs` will
first look for expected output in `foo.polonius.stderr`, falling back to the usual
`foo.stderr` if not found.
This is useful as "true" NLL mode can sometimes result in different
diagnostics and behavior compared to the "migrate mode" NLL (which is the
current default).
This is useful as different modes can sometimes result in different
diagnostics and behavior.
This can help track which tests have differences between the modes, and to
visually inspect those diagnostic differences.

If in the rare case you encounter a test that has different behavior, you can
run something like the following to generate the alternate stderr file:

```sh
./x.py test src/test/ui --compare-mode=nll --bless
./x.py test src/test/ui --compare-mode=polonius --bless
```

Currently, only `nll` mode is checked in CI for UI tests.
Currently none of the compare modes are checked in CI for UI tests.