diff options
| author | Pavel Grigorenko <GrigorenkoPV@ya.ru> | 2024-09-21 20:07:52 +0300 |
|---|---|---|
| committer | Pavel Grigorenko <GrigorenkoPV@ya.ru> | 2024-09-21 20:07:52 +0300 |
| commit | e90e2593ea9c29ff6be20ec38b314fb2d6d927a4 (patch) | |
| tree | 58e3df5eeb0ac828eb74bc4bb19ec9e58f3ba27a /tests/ui/parser | |
| parent | 74fd001cdae0321144a20133f2216ea8a97da476 (diff) | |
| download | rust-e90e2593ea9c29ff6be20ec38b314fb2d6d927a4.tar.gz rust-e90e2593ea9c29ff6be20ec38b314fb2d6d927a4.zip | |
Parser: recover from `:::` to `::`
Diffstat (limited to 'tests/ui/parser')
| -rw-r--r-- | tests/ui/parser/triple-colon.fixed | 23 | ||||
| -rw-r--r-- | tests/ui/parser/triple-colon.rs | 23 | ||||
| -rw-r--r-- | tests/ui/parser/triple-colon.stderr | 146 |
3 files changed, 192 insertions, 0 deletions
diff --git a/tests/ui/parser/triple-colon.fixed b/tests/ui/parser/triple-colon.fixed new file mode 100644 index 00000000000..168e4c1f618 --- /dev/null +++ b/tests/ui/parser/triple-colon.fixed @@ -0,0 +1,23 @@ +//@ run-rustfix + +#![allow(unused)] + +use ::std::{cell as _}; //~ ERROR path separator must be a double colon +use std::cell::*; //~ ERROR path separator must be a double colon +use std::cell::Cell; //~ ERROR path separator must be a double colon +use std::{cell as _}; //~ ERROR path separator must be a double colon + +mod foo{ + use ::{}; //~ ERROR path separator must be a double colon + use ::*; //~ ERROR path separator must be a double colon +} + +fn main() { + let c: ::std::cell::Cell::<u8> = Cell::<u8>::new(0); + //~^ ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon +} diff --git a/tests/ui/parser/triple-colon.rs b/tests/ui/parser/triple-colon.rs new file mode 100644 index 00000000000..1a70012685f --- /dev/null +++ b/tests/ui/parser/triple-colon.rs @@ -0,0 +1,23 @@ +//@ run-rustfix + +#![allow(unused)] + +use :::std::{cell as _}; //~ ERROR path separator must be a double colon +use std::cell:::*; //~ ERROR path separator must be a double colon +use std::cell:::Cell; //~ ERROR path separator must be a double colon +use std:::{cell as _}; //~ ERROR path separator must be a double colon + +mod foo{ + use :::{}; //~ ERROR path separator must be a double colon + use :::*; //~ ERROR path separator must be a double colon +} + +fn main() { + let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); + //~^ ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon + //~| ERROR path separator must be a double colon +} diff --git a/tests/ui/parser/triple-colon.stderr b/tests/ui/parser/triple-colon.stderr new file mode 100644 index 00000000000..8d57fd7ebc9 --- /dev/null +++ b/tests/ui/parser/triple-colon.stderr @@ -0,0 +1,146 @@ +error: path separator must be a double colon + --> $DIR/triple-colon.rs:5:7 + | +LL | use :::std::{cell as _}; + | ^ + | +help: use a double colon instead + | +LL - use :::std::{cell as _}; +LL + use ::std::{cell as _}; + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:6:16 + | +LL | use std::cell:::*; + | ^ + | +help: use a double colon instead + | +LL - use std::cell:::*; +LL + use std::cell::*; + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:7:16 + | +LL | use std::cell:::Cell; + | ^ + | +help: use a double colon instead + | +LL - use std::cell:::Cell; +LL + use std::cell::Cell; + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:8:10 + | +LL | use std:::{cell as _}; + | ^ + | +help: use a double colon instead + | +LL - use std:::{cell as _}; +LL + use std::{cell as _}; + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:11:11 + | +LL | use :::{}; + | ^ + | +help: use a double colon instead + | +LL - use :::{}; +LL + use ::{}; + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:12:11 + | +LL | use :::*; + | ^ + | +help: use a double colon instead + | +LL - use :::*; +LL + use ::*; + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:16:14 + | +LL | let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); + | ^ + | +help: use a double colon instead + | +LL - let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); +LL + let c: ::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:16:20 + | +LL | let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); + | ^ + | +help: use a double colon instead + | +LL - let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); +LL + let c: :::std::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:16:27 + | +LL | let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); + | ^ + | +help: use a double colon instead + | +LL - let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); +LL + let c: :::std:::cell::Cell:::<u8> = Cell:::<u8>:::new(0); + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:16:34 + | +LL | let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); + | ^ + | +help: use a double colon instead + | +LL - let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); +LL + let c: :::std:::cell:::Cell::<u8> = Cell:::<u8>:::new(0); + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:16:48 + | +LL | let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); + | ^ + | +help: use a double colon instead + | +LL - let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); +LL + let c: :::std:::cell:::Cell:::<u8> = Cell::<u8>:::new(0); + | + +error: path separator must be a double colon + --> $DIR/triple-colon.rs:16:55 + | +LL | let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); + | ^ + | +help: use a double colon instead + | +LL - let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>:::new(0); +LL + let c: :::std:::cell:::Cell:::<u8> = Cell:::<u8>::new(0); + | + +error: aborting due to 12 previous errors + |
