Remove -Z continue-parse-after-error

This commit is contained in:
Vadim Petrochenkov 2020-01-08 21:25:42 +03:00
parent ed6468da16
commit 41a93cba38
36 changed files with 77 additions and 125 deletions

View File

@ -1679,7 +1679,6 @@ impl SharedEmitterMain {
d.code(code);
}
handler.emit_diagnostic(&d);
handler.abort_if_errors_and_should_abort();
}
Ok(SharedEmitterMessage::InlineAsmError(cookie, msg)) => {
sess.span_err(ExpnId::from_u32(cookie).expn_data().call_site, &msg)

View File

@ -1178,7 +1178,6 @@ pub fn report_ice(info: &panic::PanicInfo<'_>, bug_report_url: &str) {
if !info.payload().is::<errors::ExplicitBug>() {
let d = errors::Diagnostic::new(errors::Level::Bug, "unexpected panic");
handler.emit_diagnostic(&d);
handler.abort_if_errors_and_should_abort();
}
let mut xs: Vec<Cow<'static, str>> = vec![

View File

@ -278,7 +278,6 @@ struct HandlerInner {
err_count: usize,
deduplicated_err_count: usize,
emitter: Box<dyn Emitter + sync::Send>,
continue_after_error: bool,
delayed_span_bugs: Vec<Diagnostic>,
/// This set contains the `DiagnosticId` of all emitted diagnostics to avoid
@ -402,7 +401,6 @@ impl Handler {
err_count: 0,
deduplicated_err_count: 0,
emitter,
continue_after_error: true,
delayed_span_bugs: Vec::new(),
taught_diagnostics: Default::default(),
emitted_diagnostic_codes: Default::default(),
@ -412,10 +410,6 @@ impl Handler {
}
}
pub fn set_continue_after_error(&self, continue_after_error: bool) {
self.inner.borrow_mut().continue_after_error = continue_after_error;
}
// This is here to not allow mutation of flags;
// as of this writing it's only used in tests in librustc.
pub fn can_emit_warnings(&self) -> bool {
@ -672,10 +666,6 @@ impl Handler {
self.inner.borrow_mut().abort_if_errors()
}
pub fn abort_if_errors_and_should_abort(&self) {
self.inner.borrow_mut().abort_if_errors_and_should_abort()
}
/// `true` if we haven't taught a diagnostic with this code already.
/// The caller must then teach the user about such a diagnostic.
///
@ -696,7 +686,6 @@ impl Handler {
fn emit_diag_at_span(&self, mut diag: Diagnostic, sp: impl Into<MultiSpan>) {
let mut inner = self.inner.borrow_mut();
inner.emit_diagnostic(diag.set_span(sp));
inner.abort_if_errors_and_should_abort();
}
pub fn emit_artifact_notification(&self, path: &Path, artifact_type: &str) {
@ -830,14 +819,6 @@ impl HandlerInner {
self.has_errors() || !self.delayed_span_bugs.is_empty()
}
fn abort_if_errors_and_should_abort(&mut self) {
self.emit_stashed_diagnostics();
if self.has_errors() && !self.continue_after_error {
FatalError.raise();
}
}
fn abort_if_errors(&mut self) {
self.emit_stashed_diagnostics();
@ -853,7 +834,6 @@ impl HandlerInner {
fn emit_diag_at_span(&mut self, mut diag: Diagnostic, sp: impl Into<MultiSpan>) {
self.emit_diagnostic(diag.set_span(sp));
self.abort_if_errors_and_should_abort();
}
fn delay_span_bug(&mut self, sp: impl Into<MultiSpan>, msg: &str) {

View File

@ -54,7 +54,6 @@ use std::rc::Rc;
use std::{env, fs, iter, mem};
pub fn parse<'a>(sess: &'a Session, input: &Input) -> PResult<'a, ast::Crate> {
sess.diagnostic().set_continue_after_error(sess.opts.debugging_opts.continue_parse_after_error);
let krate = sess.time("parsing", || match input {
Input::File(file) => parse_crate_from_file(file, &sess.parse_sess),
Input::Str { input, name } => {
@ -62,8 +61,6 @@ pub fn parse<'a>(sess: &'a Session, input: &Input) -> PResult<'a, ast::Crate> {
}
})?;
sess.diagnostic().set_continue_after_error(true);
if sess.opts.debugging_opts.ast_json_noexpand {
println!("{}", json::as_json(&krate));
}

View File

@ -601,10 +601,6 @@ fn test_debugging_options_tracking_hash() {
opts.debugging_opts.report_delayed_bugs = true;
assert!(reference.dep_tracking_hash() != opts.dep_tracking_hash());
opts = reference.clone();
opts.debugging_opts.continue_parse_after_error = true;
assert!(reference.dep_tracking_hash() != opts.dep_tracking_hash());
opts = reference.clone();
opts.debugging_opts.force_overflow_checks = Some(true);
assert!(reference.dep_tracking_hash() != opts.dep_tracking_hash());

View File

@ -772,8 +772,6 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
"set the current terminal width"),
panic_abort_tests: bool = (false, parse_bool, [TRACKED],
"support compiling tests with panic=abort"),
continue_parse_after_error: bool = (false, parse_bool, [TRACKED],
"attempt to recover from parse errors (experimental)"),
dep_tasks: bool = (false, parse_bool, [UNTRACKED],
"print tasks that execute and the color their dep node gets (requires debug build)"),
incremental: Option<String> = (None, parse_opt_string, [UNTRACKED],

View File

@ -10,7 +10,7 @@ error: internal compiler error: mutable allocation in constant
LL | const MUTABLE_BEHIND_RAW: *mut i32 = &UnsafeCell::new(42) as *const _ as *mut _;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:347:17
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:346:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
error: internal compiler error: unexpected panic

View File

@ -1,5 +1,3 @@
// compile-flags: -Z continue-parse-after-error
// Test that the parser is error correcting missing idents. Despite a parsing
// error (or two), we still run type checking (and don't get extra errors there).

View File

@ -1,17 +1,17 @@
error: unexpected token: `;`
--> $DIR/parse-error-correct.rs:8:15
--> $DIR/parse-error-correct.rs:6:15
|
LL | let x = y.;
| ^
error: unexpected token: `(`
--> $DIR/parse-error-correct.rs:9:15
--> $DIR/parse-error-correct.rs:7:15
|
LL | let x = y.();
| ^
error[E0618]: expected function, found `{integer}`
--> $DIR/parse-error-correct.rs:9:13
--> $DIR/parse-error-correct.rs:7:13
|
LL | let y = 42;
| - `{integer}` defined here
@ -22,7 +22,7 @@ LL | let x = y.();
| call expression requires function
error[E0610]: `{integer}` is a primitive type and therefore doesn't have fields
--> $DIR/parse-error-correct.rs:11:15
--> $DIR/parse-error-correct.rs:9:15
|
LL | let x = y.foo;
| ^^^

View File

@ -1,5 +1,3 @@
// compile-flags: -Z continue-parse-after-error
// Test that we can recover from missing braces in the parser.
trait Foo {

View File

@ -1,5 +1,5 @@
error: this file contains an unclosed delimiter
--> $DIR/parser-recovery-1.rs:15:54
--> $DIR/parser-recovery-1.rs:13:54
|
LL | trait Foo {
| - unclosed delimiter
@ -13,19 +13,19 @@ LL | }
| ^
error: unexpected token: `;`
--> $DIR/parser-recovery-1.rs:12:15
--> $DIR/parser-recovery-1.rs:10:15
|
LL | let x = y.;
| ^
error[E0425]: cannot find function `foo` in this scope
--> $DIR/parser-recovery-1.rs:7:17
--> $DIR/parser-recovery-1.rs:5:17
|
LL | let x = foo();
| ^^^ not found in this scope
error[E0425]: cannot find value `y` in this scope
--> $DIR/parser-recovery-1.rs:12:13
--> $DIR/parser-recovery-1.rs:10:13
|
LL | let x = y.;
| ^ not found in this scope

View File

@ -1,5 +1,3 @@
// compile-flags: -Z continue-parse-after-error
// Test that we can recover from mismatched braces in the parser.
trait Foo {

View File

@ -1,11 +1,11 @@
error: unexpected token: `;`
--> $DIR/parser-recovery-2.rs:12:15
--> $DIR/parser-recovery-2.rs:10:15
|
LL | let x = y.;
| ^
error: mismatched closing delimiter: `)`
--> $DIR/parser-recovery-2.rs:8:5
--> $DIR/parser-recovery-2.rs:6:5
|
LL | fn bar() {
| - unclosed delimiter
@ -14,13 +14,13 @@ LL | )
| ^ mismatched closing delimiter
error[E0425]: cannot find function `foo` in this scope
--> $DIR/parser-recovery-2.rs:7:17
--> $DIR/parser-recovery-2.rs:5:17
|
LL | let x = foo();
| ^^^ not found in this scope
error[E0425]: cannot find value `y` in this scope
--> $DIR/parser-recovery-2.rs:12:13
--> $DIR/parser-recovery-2.rs:10:13
|
LL | let x = y.;
| ^ not found in this scope

View File

@ -1,5 +1,3 @@
// compile-flags: -Z continue-parse-after-error
fn main() {
let x = "\x80"; //~ ERROR may only be used
let y = "\xff"; //~ ERROR may only be used

View File

@ -1,17 +1,17 @@
error: this form of character escape may only be used with characters in the range [\x00-\x7f]
--> $DIR/ascii-only-character-escape.rs:4:14
--> $DIR/ascii-only-character-escape.rs:2:14
|
LL | let x = "\x80";
| ^^^^
error: this form of character escape may only be used with characters in the range [\x00-\x7f]
--> $DIR/ascii-only-character-escape.rs:5:14
--> $DIR/ascii-only-character-escape.rs:3:14
|
LL | let y = "\xff";
| ^^^^
error: this form of character escape may only be used with characters in the range [\x00-\x7f]
--> $DIR/ascii-only-character-escape.rs:6:14
--> $DIR/ascii-only-character-escape.rs:4:14
|
LL | let z = "\xe2";
| ^^^^

View File

@ -1,7 +1,6 @@
// compile-flags: -Z continue-parse-after-error
// ignore-tidy-cr
// ignore-tidy-tab
fn main() {
// these literals are just silly.
''';

View File

@ -1,11 +1,11 @@
error: character constant must be escaped: '
--> $DIR/bad-char-literals.rs:7:6
--> $DIR/bad-char-literals.rs:6:6
|
LL | ''';
| ^
error: character constant must be escaped: \n
--> $DIR/bad-char-literals.rs:11:6
--> $DIR/bad-char-literals.rs:10:6
|
LL | '
| ______^
@ -13,13 +13,13 @@ LL | | ';
| |_
error: character constant must be escaped: \r
--> $DIR/bad-char-literals.rs:16:6
--> $DIR/bad-char-literals.rs:15:6
|
LL | ' ';
| ^
error: character constant must be escaped: \t
--> $DIR/bad-char-literals.rs:19:6
--> $DIR/bad-char-literals.rs:18:6
|
LL | ' ';
| ^^^^

View File

@ -1,6 +1,3 @@
// compile-flags: -Z continue-parse-after-error
// ignore-tidy-tab
static FOO: u8 = b'\f'; //~ ERROR unknown byte escape

View File

@ -1,41 +1,41 @@
error: unknown byte escape: f
--> $DIR/byte-literals.rs:6:21
--> $DIR/byte-literals.rs:3:21
|
LL | static FOO: u8 = b'\f';
| ^ unknown byte escape
error: unknown byte escape: f
--> $DIR/byte-literals.rs:9:8
--> $DIR/byte-literals.rs:6:8
|
LL | b'\f';
| ^ unknown byte escape
error: invalid character in numeric character escape: Z
--> $DIR/byte-literals.rs:10:10
--> $DIR/byte-literals.rs:7:10
|
LL | b'\x0Z';
| ^
error: byte constant must be escaped: \t
--> $DIR/byte-literals.rs:11:7
--> $DIR/byte-literals.rs:8:7
|
LL | b' ';
| ^^^^
error: byte constant must be escaped: '
--> $DIR/byte-literals.rs:12:7
--> $DIR/byte-literals.rs:9:7
|
LL | b''';
| ^
error: byte constant must be ASCII. Use a \xHH escape for a non-ASCII byte
--> $DIR/byte-literals.rs:13:7
--> $DIR/byte-literals.rs:10:7
|
LL | b'é';
| ^
error: unterminated byte constant
--> $DIR/byte-literals.rs:14:6
--> $DIR/byte-literals.rs:11:6
|
LL | b'a
| ^^^^

View File

@ -1,5 +1,3 @@
// compile-flags: -Z continue-parse-after-error
static FOO: &'static [u8] = b"\f"; //~ ERROR unknown byte escape
pub fn main() {

View File

@ -1,29 +1,29 @@
error: unknown byte escape: f
--> $DIR/byte-string-literals.rs:3:32
--> $DIR/byte-string-literals.rs:1:32
|
LL | static FOO: &'static [u8] = b"\f";
| ^ unknown byte escape
error: unknown byte escape: f
--> $DIR/byte-string-literals.rs:6:8
--> $DIR/byte-string-literals.rs:4:8
|
LL | b"\f";
| ^ unknown byte escape
error: invalid character in numeric character escape: Z
--> $DIR/byte-string-literals.rs:7:10
--> $DIR/byte-string-literals.rs:5:10
|
LL | b"\x0Z";
| ^
error: byte constant must be ASCII. Use a \xHH escape for a non-ASCII byte
--> $DIR/byte-string-literals.rs:8:7
--> $DIR/byte-string-literals.rs:6:7
|
LL | b"é";
| ^
error: unterminated double quote byte string
--> $DIR/byte-string-literals.rs:9:6
--> $DIR/byte-string-literals.rs:7:6
|
LL | b"a
| ______^

View File

@ -1,5 +1,3 @@
// compile-flags: -Z continue-parse-after-error
impl ! {} // OK
impl ! where u8: Copy {} // OK

View File

@ -1,29 +1,29 @@
error: missing `for` in a trait impl
--> $DIR/impl-parsing.rs:6:11
--> $DIR/impl-parsing.rs:4:11
|
LL | impl Trait Type {}
| ^ help: add `for` here
error: missing `for` in a trait impl
--> $DIR/impl-parsing.rs:7:11
--> $DIR/impl-parsing.rs:5:11
|
LL | impl Trait .. {}
| ^ help: add `for` here
error: expected a trait, found type
--> $DIR/impl-parsing.rs:8:6
--> $DIR/impl-parsing.rs:6:6
|
LL | impl ?Sized for Type {}
| ^^^^^^
error: expected a trait, found type
--> $DIR/impl-parsing.rs:9:6
--> $DIR/impl-parsing.rs:7:6
|
LL | impl ?Sized for .. {}
| ^^^^^^
error: expected `impl`, found `FAIL`
--> $DIR/impl-parsing.rs:11:16
--> $DIR/impl-parsing.rs:9:16
|
LL | default unsafe FAIL
| ^^^^ expected `impl`

View File

@ -1,5 +1,3 @@
// compile-flags: -Z continue-parse-after-error
fn main() {
let _ = b"\u{a66e}";
//~^ ERROR unicode escape sequences cannot be used as a byte or in a byte string

View File

@ -1,17 +1,17 @@
error: unicode escape sequences cannot be used as a byte or in a byte string
--> $DIR/issue-23620-invalid-escapes.rs:4:15
--> $DIR/issue-23620-invalid-escapes.rs:2:15
|
LL | let _ = b"\u{a66e}";
| ^^^^^^^^
error: unicode escape sequences cannot be used as a byte or in a byte string
--> $DIR/issue-23620-invalid-escapes.rs:7:15
--> $DIR/issue-23620-invalid-escapes.rs:5:15
|
LL | let _ = b'\u{a66e}';
| ^^^^^^^^
error: incorrect unicode escape sequence
--> $DIR/issue-23620-invalid-escapes.rs:10:15
--> $DIR/issue-23620-invalid-escapes.rs:8:15
|
LL | let _ = b'\u';
| ^^ incorrect unicode escape sequence
@ -19,43 +19,43 @@ LL | let _ = b'\u';
= help: format of unicode escape sequences is `\u{...}`
error: numeric character escape is too short
--> $DIR/issue-23620-invalid-escapes.rs:13:15
--> $DIR/issue-23620-invalid-escapes.rs:11:15
|
LL | let _ = b'\x5';
| ^^^
error: invalid character in numeric character escape: x
--> $DIR/issue-23620-invalid-escapes.rs:16:17
--> $DIR/issue-23620-invalid-escapes.rs:14:17
|
LL | let _ = b'\xxy';
| ^
error: numeric character escape is too short
--> $DIR/issue-23620-invalid-escapes.rs:19:14
--> $DIR/issue-23620-invalid-escapes.rs:17:14
|
LL | let _ = '\x5';
| ^^^
error: invalid character in numeric character escape: x
--> $DIR/issue-23620-invalid-escapes.rs:22:16
--> $DIR/issue-23620-invalid-escapes.rs:20:16
|
LL | let _ = '\xxy';
| ^
error: unicode escape sequences cannot be used as a byte or in a byte string
--> $DIR/issue-23620-invalid-escapes.rs:25:15
--> $DIR/issue-23620-invalid-escapes.rs:23:15
|
LL | let _ = b"\u{a4a4} \xf \u";
| ^^^^^^^^
error: invalid character in numeric character escape:
--> $DIR/issue-23620-invalid-escapes.rs:25:27
--> $DIR/issue-23620-invalid-escapes.rs:23:27
|
LL | let _ = b"\u{a4a4} \xf \u";
| ^
error: incorrect unicode escape sequence
--> $DIR/issue-23620-invalid-escapes.rs:25:28
--> $DIR/issue-23620-invalid-escapes.rs:23:28
|
LL | let _ = b"\u{a4a4} \xf \u";
| ^^ incorrect unicode escape sequence
@ -63,13 +63,13 @@ LL | let _ = b"\u{a4a4} \xf \u";
= help: format of unicode escape sequences is `\u{...}`
error: invalid character in numeric character escape:
--> $DIR/issue-23620-invalid-escapes.rs:30:17
--> $DIR/issue-23620-invalid-escapes.rs:28:17
|
LL | let _ = "\xf \u";
| ^
error: incorrect unicode escape sequence
--> $DIR/issue-23620-invalid-escapes.rs:30:18
--> $DIR/issue-23620-invalid-escapes.rs:28:18
|
LL | let _ = "\xf \u";
| ^^ incorrect unicode escape sequence
@ -77,7 +77,7 @@ LL | let _ = "\xf \u";
= help: format of unicode escape sequences is `\u{...}`
error: incorrect unicode escape sequence
--> $DIR/issue-23620-invalid-escapes.rs:34:14
--> $DIR/issue-23620-invalid-escapes.rs:32:14
|
LL | let _ = "\u8f";
| ^^--

View File

@ -1,3 +1,4 @@
"\u\\"
//~^ ERROR incorrect unicode escape sequence
//~| ERROR invalid trailing slash in literal
//~| ERROR expected item, found `"\u\\"`

View File

@ -12,5 +12,11 @@ error: invalid trailing slash in literal
LL | "\u\"
| ^
error: aborting due to 2 previous errors
error: expected item, found `"\u\"`
--> $DIR/issue-62913.rs:1:1
|
LL | "\u\"
| ^^^^^^ expected item
error: aborting due to 3 previous errors

View File

@ -1,4 +1,3 @@
// compile-flags: -Z continue-parse-after-error
static c3: char =
'\x1' //~ ERROR: numeric character escape is too short
;

View File

@ -1,23 +1,23 @@
error: numeric character escape is too short
--> $DIR/lex-bad-char-literals-1.rs:3:6
--> $DIR/lex-bad-char-literals-1.rs:2:6
|
LL | '\x1'
| ^^^
error: numeric character escape is too short
--> $DIR/lex-bad-char-literals-1.rs:7:6
--> $DIR/lex-bad-char-literals-1.rs:6:6
|
LL | "\x1"
| ^^^
error: unknown character escape: \u{25cf}
--> $DIR/lex-bad-char-literals-1.rs:11:7
--> $DIR/lex-bad-char-literals-1.rs:10:7
|
LL | '\●'
| ^ unknown character escape
error: unknown character escape: \u{25cf}
--> $DIR/lex-bad-char-literals-1.rs:15:7
--> $DIR/lex-bad-char-literals-1.rs:14:7
|
LL | "\●"
| ^ unknown character escape

View File

@ -1,4 +1,3 @@
// compile-flags: -Z continue-parse-after-error
fn main() {
let _: char = '';
//~^ ERROR: empty character literal

View File

@ -1,17 +1,17 @@
error: empty character literal
--> $DIR/lex-bad-char-literals-7.rs:3:20
--> $DIR/lex-bad-char-literals-7.rs:2:20
|
LL | let _: char = '';
| ^
error: empty unicode escape (must have at least 1 hex digit)
--> $DIR/lex-bad-char-literals-7.rs:5:20
--> $DIR/lex-bad-char-literals-7.rs:4:20
|
LL | let _: char = '\u{}';
| ^^^^
error: unterminated character literal
--> $DIR/lex-bad-char-literals-7.rs:12:13
--> $DIR/lex-bad-char-literals-7.rs:11:13
|
LL | let _ = ' hello // here's a comment
| ^^^^^^^^

View File

@ -1,5 +1,3 @@
// compile-flags: -Z continue-parse-after-error
// ignore-tidy-cr
/// doc comment with bare CR: ' '

View File

@ -1,41 +1,41 @@
error: bare CR not allowed in doc-comment
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:5:32
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:3:32
|
LL | /// doc comment with bare CR: ' '
| ^
error: bare CR not allowed in block doc-comment
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:9:38
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:7:38
|
LL | /** block doc comment with bare CR: ' ' */
| ^
error: bare CR not allowed in doc-comment
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:14:36
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:12:36
|
LL | //! doc comment with bare CR: ' '
| ^
error: bare CR not allowed in block doc-comment
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:17:42
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:15:42
|
LL | /*! block doc comment with bare CR: ' ' */
| ^
error: bare CR not allowed in string, use \r instead
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:21:18
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:19:18
|
LL | let _s = "foo bar";
| ^
error: bare CR not allowed in raw string
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:24:19
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:22:19
|
LL | let _s = r"bar foo";
| ^
error: unknown character escape: \r
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:27:19
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:25:19
|
LL | let _s = "foo\ bar";
| ^ unknown character escape

View File

@ -1,5 +1,5 @@
// ignore-tidy-cr
// compile-flags: -Z continue-parse-after-error
pub fn main() {
br"a "; //~ ERROR bare CR not allowed in raw string
br"é"; //~ ERROR raw byte string must be ASCII

View File

@ -1,5 +1,3 @@
// compile-flags: -Z continue-parse-after-error
struct Foo {
x: isize,
y: isize,

View File

@ -1,17 +1,17 @@
error: field expressions may not have generic arguments
--> $DIR/type-parameters-in-field-exprs.rs:13:10
--> $DIR/type-parameters-in-field-exprs.rs:11:10
|
LL | f.x::<isize>;
| ^^^^^^^
error: field expressions may not have generic arguments
--> $DIR/type-parameters-in-field-exprs.rs:15:10
--> $DIR/type-parameters-in-field-exprs.rs:13:10
|
LL | f.x::<>;
| ^^
error: field expressions may not have generic arguments
--> $DIR/type-parameters-in-field-exprs.rs:17:7
--> $DIR/type-parameters-in-field-exprs.rs:15:7
|
LL | f.x::();
| ^^^^^