mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-25 00:03:29 +00:00
fix(naga-cli): reimpl. emit_annotated_error
with WithSpan::emit_to_stderr_with_path
This commit is contained in:
parent
6f43ee9f17
commit
28912feb00
@ -87,6 +87,7 @@ By @bradwerth [#6216](https://github.com/gfx-rs/wgpu/pull/6216).
|
||||
- Support polyfilling `inverse` in WGSL. By @chyyran in [#6385](https://github.com/gfx-rs/wgpu/pull/6385).
|
||||
- Add an internal skeleton for parsing `requires`, `enable`, and `diagnostic` directives that don't yet do anything besides emit nicer errors. By @ErichDonGubler in [#6352](https://github.com/gfx-rs/wgpu/pull/6352).
|
||||
- Include error chain information as a message and notes in shader compilation messages. By @ErichDonGubler in [#6436](https://github.com/gfx-rs/wgpu/pull/6436).
|
||||
- Unify Naga CLI error output with the format of shader compilation messages. By @ErichDonGubler in [#6436](https://github.com/gfx-rs/wgpu/pull/6436).
|
||||
|
||||
#### General
|
||||
|
||||
|
@ -517,8 +517,9 @@ fn run() -> anyhow::Result<()> {
|
||||
if let Some(input) = &input_text {
|
||||
let filename = input_path.file_name().and_then(std::ffi::OsStr::to_str);
|
||||
emit_annotated_error(&error, filename.unwrap_or("input"), input);
|
||||
}
|
||||
} else {
|
||||
print_err(&error);
|
||||
}
|
||||
None
|
||||
}
|
||||
};
|
||||
@ -545,8 +546,9 @@ fn run() -> anyhow::Result<()> {
|
||||
if let Some(input) = &input_text {
|
||||
let filename = input_path.file_name().and_then(std::ffi::OsStr::to_str);
|
||||
emit_annotated_error(&error, filename.unwrap_or("input"), input);
|
||||
}
|
||||
} else {
|
||||
print_err(&error);
|
||||
}
|
||||
None
|
||||
}
|
||||
}
|
||||
@ -870,10 +872,11 @@ fn bulk_validate(args: Args, params: &Parameters) -> anyhow::Result<()> {
|
||||
if let Some(input) = &input_text {
|
||||
let filename = path.file_name().and_then(std::ffi::OsStr::to_str);
|
||||
emit_annotated_error(&error, filename.unwrap_or("input"), input);
|
||||
}
|
||||
} else {
|
||||
print_err(&error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if !invalid.is_empty() {
|
||||
use std::fmt::Write;
|
||||
@ -892,29 +895,9 @@ fn bulk_validate(args: Args, params: &Parameters) -> anyhow::Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
use codespan_reporting::{
|
||||
diagnostic::{Diagnostic, Label},
|
||||
files::SimpleFile,
|
||||
term::{
|
||||
self,
|
||||
termcolor::{ColorChoice, StandardStream},
|
||||
},
|
||||
};
|
||||
use codespan_reporting::term::termcolor::{ColorChoice, StandardStream};
|
||||
use naga::{FastHashMap, WithSpan};
|
||||
|
||||
pub fn emit_annotated_error<E: Error>(ann_err: &WithSpan<E>, filename: &str, source: &str) {
|
||||
let files = SimpleFile::new(filename, source);
|
||||
let config = codespan_reporting::term::Config::default();
|
||||
let writer = StandardStream::stderr(ColorChoice::Auto);
|
||||
|
||||
let diagnostic = Diagnostic::error().with_labels(
|
||||
ann_err
|
||||
.spans()
|
||||
.map(|(span, desc)| {
|
||||
Label::primary((), span.to_range().unwrap()).with_message(desc.to_owned())
|
||||
})
|
||||
.collect(),
|
||||
);
|
||||
|
||||
term::emit(&mut writer.lock(), &config, &files, &diagnostic).expect("cannot write error");
|
||||
ann_err.emit_to_stderr_with_path(source, filename);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user