2015-09-12 17:02:01 +02:00
|
|
|
# Compiler Test Documentation
|
|
|
|
|
2015-09-18 05:43:33 +02:00
|
|
|
In the Rust project, we use a special set of comands embedded in
|
2015-09-12 17:02:01 +02:00
|
|
|
comments to test the Rust compiler. There are two groups of commands:
|
|
|
|
|
|
|
|
1. Header commands
|
|
|
|
2. Error info commands
|
|
|
|
|
|
|
|
Both types of commands are inside comments, but header commands should
|
|
|
|
be in a comment before any code.
|
|
|
|
|
|
|
|
## Summary of Error Info Commands
|
|
|
|
|
|
|
|
Error commands specify something about certain lines of the
|
|
|
|
program. They tell the test what kind of error and what message you
|
|
|
|
are expecting.
|
|
|
|
|
|
|
|
* `~`: Associates the following error level and message with the
|
|
|
|
current line
|
|
|
|
* `~|`: Associates the following error level and message with the same
|
|
|
|
line as the previous comment
|
|
|
|
* `~^`: Associates the following error level and message with the
|
|
|
|
previous line. Each caret (`^`) that you add adds a line to this, so
|
|
|
|
`~^^^^^^^` is seven lines up.
|
|
|
|
|
|
|
|
The error levels that you can have are:
|
|
|
|
1. `ERROR`
|
|
|
|
2. `WARNING`
|
|
|
|
3. `NOTE`
|
|
|
|
4. `HELP` and `SUGGESTION`*
|
|
|
|
|
2015-09-18 05:43:33 +02:00
|
|
|
\* **Note**: `SUGGESTION` must follow immediately after `HELP`.
|
2015-09-12 17:02:01 +02:00
|
|
|
|
|
|
|
## Summary of Header Commands
|
|
|
|
|
2015-09-18 05:43:33 +02:00
|
|
|
Header commands specify something about the entire test file as a
|
2015-09-12 17:02:01 +02:00
|
|
|
whole, instead of just a few lines inside the test.
|
|
|
|
|
|
|
|
* `ignore-X` where `X` is an architecture, OS or stage will ignore the test accordingly
|
|
|
|
* `ignore-pretty` will not compile the pretty-printed test (this is done to test the pretty-printer, but might not always work)
|
|
|
|
* `ignore-test` always ignores the test
|
|
|
|
* `ignore-lldb` and `ignore-gdb` will skip the debuginfo tests
|
|
|
|
* `min-{gdb,lldb}-version`
|