about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/librustdoc/config.rs6
-rw-r--r--src/librustdoc/core.rs7
-rw-r--r--src/librustdoc/lib.rs15
-rw-r--r--src/test/run-make/issue-88756-default-output/output-default.stdout3
-rw-r--r--src/test/rustdoc-ui/diagnostic-width.rs5
-rw-r--r--src/test/rustdoc-ui/diagnostic-width.stderr15
-rw-r--r--src/test/ui/diagnostic-width/flag-human.rs9
-rw-r--r--src/test/ui/diagnostic-width/flag-human.stderr (renamed from src/test/ui/terminal-width/flag-human.stderr)0
-rw-r--r--src/test/ui/diagnostic-width/flag-json.rs9
-rw-r--r--src/test/ui/diagnostic-width/flag-json.stderr (renamed from src/test/ui/terminal-width/flag-json.stderr)2
-rw-r--r--src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.rs (renamed from src/test/ui/terminal-width/non-1-width-unicode-multiline-label.rs)0
-rw-r--r--src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.stderr (renamed from src/test/ui/terminal-width/non-1-width-unicode-multiline-label.stderr)0
-rw-r--r--src/test/ui/diagnostic-width/non-whitespace-trimming-2.rs (renamed from src/test/ui/terminal-width/non-whitespace-trimming-2.rs)0
-rw-r--r--src/test/ui/diagnostic-width/non-whitespace-trimming-2.stderr (renamed from src/test/ui/terminal-width/non-whitespace-trimming-2.stderr)0
-rw-r--r--src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.rs (renamed from src/test/ui/terminal-width/non-whitespace-trimming-unicode.rs)0
-rw-r--r--src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.stderr (renamed from src/test/ui/terminal-width/non-whitespace-trimming-unicode.stderr)0
-rw-r--r--src/test/ui/diagnostic-width/non-whitespace-trimming.rs (renamed from src/test/ui/terminal-width/non-whitespace-trimming.rs)0
-rw-r--r--src/test/ui/diagnostic-width/non-whitespace-trimming.stderr (renamed from src/test/ui/terminal-width/non-whitespace-trimming.stderr)0
-rw-r--r--src/test/ui/diagnostic-width/tabs-trimming.rs (renamed from src/test/ui/terminal-width/tabs-trimming.rs)0
-rw-r--r--src/test/ui/diagnostic-width/tabs-trimming.stderr (renamed from src/test/ui/terminal-width/tabs-trimming.stderr)0
-rw-r--r--src/test/ui/diagnostic-width/whitespace-trimming-2.rs (renamed from src/test/ui/terminal-width/whitespace-trimming-2.rs)0
-rw-r--r--src/test/ui/diagnostic-width/whitespace-trimming-2.stderr (renamed from src/test/ui/terminal-width/whitespace-trimming-2.stderr)0
-rw-r--r--src/test/ui/diagnostic-width/whitespace-trimming.rs (renamed from src/test/ui/terminal-width/whitespace-trimming.rs)0
-rw-r--r--src/test/ui/diagnostic-width/whitespace-trimming.stderr (renamed from src/test/ui/terminal-width/whitespace-trimming.stderr)0
-rw-r--r--src/test/ui/terminal-width/flag-human.rs9
-rw-r--r--src/test/ui/terminal-width/flag-json.rs9
26 files changed, 66 insertions, 23 deletions
diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs
index 7ec6eb0be65..272188f8299 100644
--- a/src/librustdoc/config.rs
+++ b/src/librustdoc/config.rs
@@ -73,6 +73,8 @@ pub(crate) struct Options {
     pub(crate) proc_macro_crate: bool,
     /// How to format errors and warnings.
     pub(crate) error_format: ErrorOutputType,
+    /// Width of output buffer to truncate errors appropriately.
+    pub(crate) diagnostic_width: Option<usize>,
     /// Library search paths to hand to the compiler.
     pub(crate) libs: Vec<SearchPath>,
     /// Library search paths strings to hand to the compiler.
@@ -331,11 +333,12 @@ impl Options {
         let config::JsonConfig { json_rendered, json_unused_externs, .. } =
             config::parse_json(matches);
         let error_format = config::parse_error_format(matches, color, json_rendered);
+        let diagnostic_width = matches.opt_get("diagnostic-width").unwrap_or_default();
 
         let codegen_options = CodegenOptions::build(matches, error_format);
         let debugging_opts = DebuggingOptions::build(matches, error_format);
 
-        let diag = new_handler(error_format, None, &debugging_opts);
+        let diag = new_handler(error_format, None, diagnostic_width, &debugging_opts);
 
         // check for deprecated options
         check_deprecated_options(matches, &diag);
@@ -699,6 +702,7 @@ impl Options {
             input,
             proc_macro_crate,
             error_format,
+            diagnostic_width,
             libs,
             lib_strs,
             externs,
diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs
index 51b245e36ba..8c494ee28cc 100644
--- a/src/librustdoc/core.rs
+++ b/src/librustdoc/core.rs
@@ -154,6 +154,7 @@ impl<'tcx> DocContext<'tcx> {
 pub(crate) fn new_handler(
     error_format: ErrorOutputType,
     source_map: Option<Lrc<source_map::SourceMap>>,
+    diagnostic_width: Option<usize>,
     debugging_opts: &DebuggingOptions,
 ) -> rustc_errors::Handler {
     let fallback_bundle =
@@ -169,7 +170,7 @@ pub(crate) fn new_handler(
                     fallback_bundle,
                     short,
                     debugging_opts.teach,
-                    debugging_opts.terminal_width,
+                    diagnostic_width,
                     false,
                 )
                 .ui_testing(debugging_opts.ui_testing),
@@ -187,7 +188,7 @@ pub(crate) fn new_handler(
                     fallback_bundle,
                     pretty,
                     json_rendered,
-                    debugging_opts.terminal_width,
+                    diagnostic_width,
                     false,
                 )
                 .ui_testing(debugging_opts.ui_testing),
@@ -208,6 +209,7 @@ pub(crate) fn create_config(
         crate_name,
         proc_macro_crate,
         error_format,
+        diagnostic_width,
         libs,
         externs,
         mut cfgs,
@@ -266,6 +268,7 @@ pub(crate) fn create_config(
         actually_rustdoc: true,
         debugging_opts,
         error_format,
+        diagnostic_width,
         edition,
         describe_lints,
         crate_name,
diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs
index ded3d9951bd..0d3ec7ecb64 100644
--- a/src/librustdoc/lib.rs
+++ b/src/librustdoc/lib.rs
@@ -462,6 +462,14 @@ fn opts() -> Vec<RustcOptGroup> {
                 "human|json|short",
             )
         }),
+        unstable("diagnostic-width", |o| {
+            o.optopt(
+                "",
+                "diagnostic-width",
+                "Provide width of the output for truncated error messages",
+                "WIDTH",
+            )
+        }),
         stable("json", |o| {
             o.optopt("", "json", "Configure the structure of JSON diagnostics", "CONFIG")
         }),
@@ -733,7 +741,12 @@ fn run_renderer<'tcx, T: formats::FormatRenderer<'tcx>>(
 }
 
 fn main_options(options: config::Options) -> MainResult {
-    let diag = core::new_handler(options.error_format, None, &options.debugging_opts);
+    let diag = core::new_handler(
+        options.error_format,
+        None,
+        options.diagnostic_width,
+        &options.debugging_opts,
+    );
 
     match (options.should_test, options.markdown_input()) {
         (true, true) => return wrap_return(&diag, markdown::test(options)),
diff --git a/src/test/run-make/issue-88756-default-output/output-default.stdout b/src/test/run-make/issue-88756-default-output/output-default.stdout
index 6d16fe5673b..08877af9286 100644
--- a/src/test/run-make/issue-88756-default-output/output-default.stdout
+++ b/src/test/run-make/issue-88756-default-output/output-default.stdout
@@ -110,6 +110,9 @@ Options:
                         never = never colorize output
         --error-format human|json|short
                         How errors and other messages are produced
+        --diagnostic-width WIDTH
+                        Provide width of the output for truncated error
+                        messages
         --json CONFIG   Configure the structure of JSON diagnostics
         --disable-minification 
                         Disable minification applied on JS files
diff --git a/src/test/rustdoc-ui/diagnostic-width.rs b/src/test/rustdoc-ui/diagnostic-width.rs
new file mode 100644
index 00000000000..61961d5ec71
--- /dev/null
+++ b/src/test/rustdoc-ui/diagnostic-width.rs
@@ -0,0 +1,5 @@
+// compile-flags: -Zunstable-options --diagnostic-width=10
+#![deny(rustdoc::bare_urls)]
+
+/// This is a long line that contains a http://link.com
+pub struct Foo; //~^ ERROR
diff --git a/src/test/rustdoc-ui/diagnostic-width.stderr b/src/test/rustdoc-ui/diagnostic-width.stderr
new file mode 100644
index 00000000000..fed049d2b37
--- /dev/null
+++ b/src/test/rustdoc-ui/diagnostic-width.stderr
@@ -0,0 +1,15 @@
+error: this URL is not a hyperlink
+  --> $DIR/diagnostic-width.rs:4:41
+   |
+LL | ... a http://link.com
+   |       ^^^^^^^^^^^^^^^ help: use an automatic link instead: `<http://link.com>`
+   |
+note: the lint level is defined here
+  --> $DIR/diagnostic-width.rs:2:9
+   |
+LL | ...ny(rustdoc::bare_url...
+   |       ^^^^^^^^^^^^^^^^^^
+   = note: bare URLs are not automatically turned into clickable links
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/diagnostic-width/flag-human.rs b/src/test/ui/diagnostic-width/flag-human.rs
new file mode 100644
index 00000000000..289bfbabd94
--- /dev/null
+++ b/src/test/ui/diagnostic-width/flag-human.rs
@@ -0,0 +1,9 @@
+// compile-flags: --diagnostic-width=20
+
+// This test checks that `-Z output-width` effects the human error output by restricting it to an
+// arbitrarily low value so that the effect is visible.
+
+fn main() {
+    let _: () = 42;
+    //~^ ERROR mismatched types
+}
diff --git a/src/test/ui/terminal-width/flag-human.stderr b/src/test/ui/diagnostic-width/flag-human.stderr
index 393dcf2b828..393dcf2b828 100644
--- a/src/test/ui/terminal-width/flag-human.stderr
+++ b/src/test/ui/diagnostic-width/flag-human.stderr
diff --git a/src/test/ui/diagnostic-width/flag-json.rs b/src/test/ui/diagnostic-width/flag-json.rs
new file mode 100644
index 00000000000..51a1fb447c7
--- /dev/null
+++ b/src/test/ui/diagnostic-width/flag-json.rs
@@ -0,0 +1,9 @@
+// compile-flags: --diagnostic-width=20 --error-format=json
+
+// This test checks that `-Z output-width` effects the JSON error output by restricting it to an
+// arbitrarily low value so that the effect is visible.
+
+fn main() {
+    let _: () = 42;
+    //~^ ERROR arguments to this function are incorrect
+}
diff --git a/src/test/ui/terminal-width/flag-json.stderr b/src/test/ui/diagnostic-width/flag-json.stderr
index 93c246cb3f5..b21391d1640 100644
--- a/src/test/ui/terminal-width/flag-json.stderr
+++ b/src/test/ui/diagnostic-width/flag-json.stderr
@@ -24,7 +24,7 @@ This error occurs when an expression was used in a place where the compiler
 expected an expression of a different type. It can occur in several cases, the
 most common being when calling a function and passing an argument which has a
 different type than the matching type in the function declaration.
-"},"level":"error","spans":[{"file_name":"$DIR/flag-json.rs","byte_start":244,"byte_end":246,"line_start":7,"line_end":7,"column_start":17,"column_end":19,"is_primary":true,"text":[{"text":"    let _: () = 42;","highlight_start":17,"highlight_end":19}],"label":"expected `()`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/flag-json.rs","byte_start":239,"byte_end":241,"line_start":7,"line_end":7,"column_start":12,"column_end":14,"is_primary":false,"text":[{"text":"    let _: () = 42;","highlight_start":12,"highlight_end":14}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0308]: mismatched types
+"},"level":"error","spans":[{"file_name":"$DIR/flag-json.rs","byte_start":243,"byte_end":245,"line_start":7,"line_end":7,"column_start":17,"column_end":19,"is_primary":true,"text":[{"text":"    let _: () = 42;","highlight_start":17,"highlight_end":19}],"label":"expected `()`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/flag-json.rs","byte_start":238,"byte_end":240,"line_start":7,"line_end":7,"column_start":12,"column_end":14,"is_primary":false,"text":[{"text":"    let _: () = 42;","highlight_start":12,"highlight_end":14}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0308]: mismatched types
   --> $DIR/flag-json.rs:7:17
    |
 LL | ..._: () = 42;
diff --git a/src/test/ui/terminal-width/non-1-width-unicode-multiline-label.rs b/src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.rs
index 1989ea88635..1989ea88635 100644
--- a/src/test/ui/terminal-width/non-1-width-unicode-multiline-label.rs
+++ b/src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.rs
diff --git a/src/test/ui/terminal-width/non-1-width-unicode-multiline-label.stderr b/src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.stderr
index bf277362dba..bf277362dba 100644
--- a/src/test/ui/terminal-width/non-1-width-unicode-multiline-label.stderr
+++ b/src/test/ui/diagnostic-width/non-1-width-unicode-multiline-label.stderr
diff --git a/src/test/ui/terminal-width/non-whitespace-trimming-2.rs b/src/test/ui/diagnostic-width/non-whitespace-trimming-2.rs
index abd9e189a75..abd9e189a75 100644
--- a/src/test/ui/terminal-width/non-whitespace-trimming-2.rs
+++ b/src/test/ui/diagnostic-width/non-whitespace-trimming-2.rs
diff --git a/src/test/ui/terminal-width/non-whitespace-trimming-2.stderr b/src/test/ui/diagnostic-width/non-whitespace-trimming-2.stderr
index 5dbb9ce45ee..5dbb9ce45ee 100644
--- a/src/test/ui/terminal-width/non-whitespace-trimming-2.stderr
+++ b/src/test/ui/diagnostic-width/non-whitespace-trimming-2.stderr
diff --git a/src/test/ui/terminal-width/non-whitespace-trimming-unicode.rs b/src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.rs
index 8d4d1b16279..8d4d1b16279 100644
--- a/src/test/ui/terminal-width/non-whitespace-trimming-unicode.rs
+++ b/src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.rs
diff --git a/src/test/ui/terminal-width/non-whitespace-trimming-unicode.stderr b/src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.stderr
index 1e5ff939832..1e5ff939832 100644
--- a/src/test/ui/terminal-width/non-whitespace-trimming-unicode.stderr
+++ b/src/test/ui/diagnostic-width/non-whitespace-trimming-unicode.stderr
diff --git a/src/test/ui/terminal-width/non-whitespace-trimming.rs b/src/test/ui/diagnostic-width/non-whitespace-trimming.rs
index f6c8d345c65..f6c8d345c65 100644
--- a/src/test/ui/terminal-width/non-whitespace-trimming.rs
+++ b/src/test/ui/diagnostic-width/non-whitespace-trimming.rs
diff --git a/src/test/ui/terminal-width/non-whitespace-trimming.stderr b/src/test/ui/diagnostic-width/non-whitespace-trimming.stderr
index c4ff0e16890..c4ff0e16890 100644
--- a/src/test/ui/terminal-width/non-whitespace-trimming.stderr
+++ b/src/test/ui/diagnostic-width/non-whitespace-trimming.stderr
diff --git a/src/test/ui/terminal-width/tabs-trimming.rs b/src/test/ui/diagnostic-width/tabs-trimming.rs
index ade21753b45..ade21753b45 100644
--- a/src/test/ui/terminal-width/tabs-trimming.rs
+++ b/src/test/ui/diagnostic-width/tabs-trimming.rs
diff --git a/src/test/ui/terminal-width/tabs-trimming.stderr b/src/test/ui/diagnostic-width/tabs-trimming.stderr
index 6c8d9afc73b..6c8d9afc73b 100644
--- a/src/test/ui/terminal-width/tabs-trimming.stderr
+++ b/src/test/ui/diagnostic-width/tabs-trimming.stderr
diff --git a/src/test/ui/terminal-width/whitespace-trimming-2.rs b/src/test/ui/diagnostic-width/whitespace-trimming-2.rs
index c68f678aab3..c68f678aab3 100644
--- a/src/test/ui/terminal-width/whitespace-trimming-2.rs
+++ b/src/test/ui/diagnostic-width/whitespace-trimming-2.rs
diff --git a/src/test/ui/terminal-width/whitespace-trimming-2.stderr b/src/test/ui/diagnostic-width/whitespace-trimming-2.stderr
index 97a64e603b7..97a64e603b7 100644
--- a/src/test/ui/terminal-width/whitespace-trimming-2.stderr
+++ b/src/test/ui/diagnostic-width/whitespace-trimming-2.stderr
diff --git a/src/test/ui/terminal-width/whitespace-trimming.rs b/src/test/ui/diagnostic-width/whitespace-trimming.rs
index f747bcf17e0..f747bcf17e0 100644
--- a/src/test/ui/terminal-width/whitespace-trimming.rs
+++ b/src/test/ui/diagnostic-width/whitespace-trimming.rs
diff --git a/src/test/ui/terminal-width/whitespace-trimming.stderr b/src/test/ui/diagnostic-width/whitespace-trimming.stderr
index e296d48893c..e296d48893c 100644
--- a/src/test/ui/terminal-width/whitespace-trimming.stderr
+++ b/src/test/ui/diagnostic-width/whitespace-trimming.stderr
diff --git a/src/test/ui/terminal-width/flag-human.rs b/src/test/ui/terminal-width/flag-human.rs
deleted file mode 100644
index e445a84fd01..00000000000
--- a/src/test/ui/terminal-width/flag-human.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// compile-flags: -Z terminal-width=20
-
-// This test checks that `-Z terminal-width` effects the human error output by restricting it to an
-// arbitrarily low value so that the effect is visible.
-
-fn main() {
-    let _: () = 42;
-    //~^ ERROR mismatched types
-}
diff --git a/src/test/ui/terminal-width/flag-json.rs b/src/test/ui/terminal-width/flag-json.rs
deleted file mode 100644
index 3d2530e204b..00000000000
--- a/src/test/ui/terminal-width/flag-json.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// compile-flags: -Z terminal-width=20 --error-format=json
-
-// This test checks that `-Z terminal-width` effects the JSON error output by restricting it to an
-// arbitrarily low value so that the effect is visible.
-
-fn main() {
-    let _: () = 42;
-    //~^ ERROR arguments to this function are incorrect
-}