Provide helpful diagnostics for shebang lookalikes When `[` is not found after a `#!`, a note will be added to the exisiting error ``` error: expected `[`, found `/` --> src/main.rs:2:3 | 2 | #!/usr/bin/env -S cargo +nightly -Zscript | ^ expected `[` | = note: the token sequence `#!` here looks like the start of a shebang interpreter directive but it is not = help: if you meant this to be a shebang interpreter directive, move it to the very start of the file ``` Fixes #137249 r? `@fmease`
UI Tests
This folder contains rustc's
UI tests.
Test Directives (Headers)
Typically, a UI test will have some test directives / headers which are special comments that tell compiletest how to build and interpret a test.
As part of an ongoing effort to rewrite compiletest
(see https://github.com/rust-lang/compiler-team/issues/536), a major
change proposal to change legacy compiletest-style headers // <directive>
to ui_test-style headers
//@ <directive> was accepted (see
https://github.com/rust-lang/compiler-team/issues/512.
An example directive is ignore-test. In legacy compiletest style, the header
would be written as
// ignore-test
but in ui_test style, the header would be written as
//@ ignore-test
compiletest is changed to accept only //@ directives for UI tests
(currently), and will reject and report an error if it encounters any
comments // <content> that may be parsed as a legacy compiletest-style
test header. To fix this, you should migrate to the ui_test-style header
//@ <content>.