Struct ariadne::ReportBuilder
source · pub struct ReportBuilder<'a, S: Span> { /* private fields */ }
Expand description
A type used to build a Report
.
Implementations§
source§impl<'a, S: Span> ReportBuilder<'a, S>
impl<'a, S: Span> ReportBuilder<'a, S>
sourcepub fn with_code<C: Display>(self, code: C) -> Self
pub fn with_code<C: Display>(self, code: C) -> Self
Give this report a numerical code that may be used to more precisely look up the error in documentation.
Examples found in repository?
examples/multifile.rs (line 12)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
fn main() {
let mut colors = ColorGenerator::new();
// Generate some colours for each of our elements
let a = colors.next();
let b = colors.next();
let c = colors.next();
Report::build(ReportKind::Error, "b.tao", 10)
.with_code(3)
.with_message(format!("Cannot add types Nat and Str"))
.with_label(Label::new(("b.tao", 10..14))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("b.tao", 17..20))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("b.tao", 15..16))
.with_message(format!(" {} and {} undergo addition here", "Nat".fg(a), "Str".fg(b)))
.with_color(c)
.with_order(10))
.with_label(Label::new(("a.tao", 4..8))
.with_message(format!("Original definition of {} is here", "five".fg(a)))
.with_color(a))
.with_note(format!("{} is a number and can only be added to other numbers", "Nat".fg(a)))
.finish()
.print(sources(vec![
("a.tao", include_str!("a.tao")),
("b.tao", include_str!("b.tao")),
]))
.unwrap();
}
More examples
examples/multiline.rs (line 13)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let mut colors = ColorGenerator::new();
// Generate & choose some colours for each of our elements
let a = colors.next();
let b = colors.next();
let out = Color::Fixed(81);
let out2= colors.next();
Report::build(ReportKind::Error, "sample.tao", 12)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("sample.tao", 32..33))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("sample.tao", 42..45))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("sample.tao", 11..48))
.with_message(format!(
"The values are outputs of this {} expression",
"match".fg(out),
))
.with_color(out))
.with_label(Label::new(("sample.tao", 0..48))
.with_message(format!(
"The {} has a problem",
"definition".fg(out2),
))
.with_color(out2))
.with_label(Label::new(("sample.tao", 50..76))
.with_message(format!(
"Usage of {} here",
"definition".fg(out2),
))
.with_color(out2))
.with_note(format!("Outputs of {} expressions must coerce to the same type", "match".fg(out)))
.finish()
.print(("sample.tao", Source::from(include_str!("sample.tao"))))
.unwrap();
}
examples/stresstest.rs (line 7)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
fn main() {
let mut colors = ColorGenerator::new();
Report::build(ReportKind::Error, "stresstest.tao", 13)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
.with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
.with_config(Config::default()
.with_cross_gap(false)
.with_compact(true)
.with_underlines(true)
.with_tab_width(4))
.finish()
.print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
.unwrap();
}
sourcepub fn set_message<M: ToString>(&mut self, msg: M)
pub fn set_message<M: ToString>(&mut self, msg: M)
Set the message of this report.
sourcepub fn with_message<M: ToString>(self, msg: M) -> Self
pub fn with_message<M: ToString>(self, msg: M) -> Self
Add a message to this report.
Examples found in repository?
More examples
examples/multifile.rs (line 13)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
fn main() {
let mut colors = ColorGenerator::new();
// Generate some colours for each of our elements
let a = colors.next();
let b = colors.next();
let c = colors.next();
Report::build(ReportKind::Error, "b.tao", 10)
.with_code(3)
.with_message(format!("Cannot add types Nat and Str"))
.with_label(Label::new(("b.tao", 10..14))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("b.tao", 17..20))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("b.tao", 15..16))
.with_message(format!(" {} and {} undergo addition here", "Nat".fg(a), "Str".fg(b)))
.with_color(c)
.with_order(10))
.with_label(Label::new(("a.tao", 4..8))
.with_message(format!("Original definition of {} is here", "five".fg(a)))
.with_color(a))
.with_note(format!("{} is a number and can only be added to other numbers", "Nat".fg(a)))
.finish()
.print(sources(vec![
("a.tao", include_str!("a.tao")),
("b.tao", include_str!("b.tao")),
]))
.unwrap();
}
examples/multiline.rs (line 14)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let mut colors = ColorGenerator::new();
// Generate & choose some colours for each of our elements
let a = colors.next();
let b = colors.next();
let out = Color::Fixed(81);
let out2= colors.next();
Report::build(ReportKind::Error, "sample.tao", 12)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("sample.tao", 32..33))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("sample.tao", 42..45))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("sample.tao", 11..48))
.with_message(format!(
"The values are outputs of this {} expression",
"match".fg(out),
))
.with_color(out))
.with_label(Label::new(("sample.tao", 0..48))
.with_message(format!(
"The {} has a problem",
"definition".fg(out2),
))
.with_color(out2))
.with_label(Label::new(("sample.tao", 50..76))
.with_message(format!(
"Usage of {} here",
"definition".fg(out2),
))
.with_color(out2))
.with_note(format!("Outputs of {} expressions must coerce to the same type", "match".fg(out)))
.finish()
.print(("sample.tao", Source::from(include_str!("sample.tao"))))
.unwrap();
}
examples/stresstest.rs (line 8)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
fn main() {
let mut colors = ColorGenerator::new();
Report::build(ReportKind::Error, "stresstest.tao", 13)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
.with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
.with_config(Config::default()
.with_cross_gap(false)
.with_compact(true)
.with_underlines(true)
.with_tab_width(4))
.finish()
.print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
.unwrap();
}
sourcepub fn with_note<N: ToString>(self, note: N) -> Self
pub fn with_note<N: ToString>(self, note: N) -> Self
Set the note of this report.
Examples found in repository?
examples/multifile.rs (line 27)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
fn main() {
let mut colors = ColorGenerator::new();
// Generate some colours for each of our elements
let a = colors.next();
let b = colors.next();
let c = colors.next();
Report::build(ReportKind::Error, "b.tao", 10)
.with_code(3)
.with_message(format!("Cannot add types Nat and Str"))
.with_label(Label::new(("b.tao", 10..14))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("b.tao", 17..20))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("b.tao", 15..16))
.with_message(format!(" {} and {} undergo addition here", "Nat".fg(a), "Str".fg(b)))
.with_color(c)
.with_order(10))
.with_label(Label::new(("a.tao", 4..8))
.with_message(format!("Original definition of {} is here", "five".fg(a)))
.with_color(a))
.with_note(format!("{} is a number and can only be added to other numbers", "Nat".fg(a)))
.finish()
.print(sources(vec![
("a.tao", include_str!("a.tao")),
("b.tao", include_str!("b.tao")),
]))
.unwrap();
}
More examples
examples/multiline.rs (line 39)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let mut colors = ColorGenerator::new();
// Generate & choose some colours for each of our elements
let a = colors.next();
let b = colors.next();
let out = Color::Fixed(81);
let out2= colors.next();
Report::build(ReportKind::Error, "sample.tao", 12)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("sample.tao", 32..33))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("sample.tao", 42..45))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("sample.tao", 11..48))
.with_message(format!(
"The values are outputs of this {} expression",
"match".fg(out),
))
.with_color(out))
.with_label(Label::new(("sample.tao", 0..48))
.with_message(format!(
"The {} has a problem",
"definition".fg(out2),
))
.with_color(out2))
.with_label(Label::new(("sample.tao", 50..76))
.with_message(format!(
"Usage of {} here",
"definition".fg(out2),
))
.with_color(out2))
.with_note(format!("Outputs of {} expressions must coerce to the same type", "match".fg(out)))
.finish()
.print(("sample.tao", Source::from(include_str!("sample.tao"))))
.unwrap();
}
sourcepub fn add_labels<L: IntoIterator<Item = Label<S>>>(&mut self, labels: L)
pub fn add_labels<L: IntoIterator<Item = Label<S>>>(&mut self, labels: L)
Add multiple labels to the report.
sourcepub fn with_label(self, label: Label<S>) -> Self
pub fn with_label(self, label: Label<S>) -> Self
Add a label to the report.
Examples found in repository?
More examples
examples/multifile.rs (lines 14-16)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
fn main() {
let mut colors = ColorGenerator::new();
// Generate some colours for each of our elements
let a = colors.next();
let b = colors.next();
let c = colors.next();
Report::build(ReportKind::Error, "b.tao", 10)
.with_code(3)
.with_message(format!("Cannot add types Nat and Str"))
.with_label(Label::new(("b.tao", 10..14))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("b.tao", 17..20))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("b.tao", 15..16))
.with_message(format!(" {} and {} undergo addition here", "Nat".fg(a), "Str".fg(b)))
.with_color(c)
.with_order(10))
.with_label(Label::new(("a.tao", 4..8))
.with_message(format!("Original definition of {} is here", "five".fg(a)))
.with_color(a))
.with_note(format!("{} is a number and can only be added to other numbers", "Nat".fg(a)))
.finish()
.print(sources(vec![
("a.tao", include_str!("a.tao")),
("b.tao", include_str!("b.tao")),
]))
.unwrap();
}
examples/multiline.rs (lines 15-17)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let mut colors = ColorGenerator::new();
// Generate & choose some colours for each of our elements
let a = colors.next();
let b = colors.next();
let out = Color::Fixed(81);
let out2= colors.next();
Report::build(ReportKind::Error, "sample.tao", 12)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("sample.tao", 32..33))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("sample.tao", 42..45))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("sample.tao", 11..48))
.with_message(format!(
"The values are outputs of this {} expression",
"match".fg(out),
))
.with_color(out))
.with_label(Label::new(("sample.tao", 0..48))
.with_message(format!(
"The {} has a problem",
"definition".fg(out2),
))
.with_color(out2))
.with_label(Label::new(("sample.tao", 50..76))
.with_message(format!(
"Usage of {} here",
"definition".fg(out2),
))
.with_color(out2))
.with_note(format!("Outputs of {} expressions must coerce to the same type", "match".fg(out)))
.finish()
.print(("sample.tao", Source::from(include_str!("sample.tao"))))
.unwrap();
}
examples/stresstest.rs (line 9)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
fn main() {
let mut colors = ColorGenerator::new();
Report::build(ReportKind::Error, "stresstest.tao", 13)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
.with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
.with_config(Config::default()
.with_cross_gap(false)
.with_compact(true)
.with_underlines(true)
.with_tab_width(4))
.finish()
.print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
.unwrap();
}
sourcepub fn with_labels<L: IntoIterator<Item = Label<S>>>(self, labels: L) -> Self
pub fn with_labels<L: IntoIterator<Item = Label<S>>>(self, labels: L) -> Self
Add multiple labels to the report.
sourcepub fn with_config(self, config: Config) -> Self
pub fn with_config(self, config: Config) -> Self
Use the given Config
to determine diagnostic attributes.
Examples found in repository?
examples/stresstest.rs (lines 51-55)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
fn main() {
let mut colors = ColorGenerator::new();
Report::build(ReportKind::Error, "stresstest.tao", 13)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
.with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
.with_config(Config::default()
.with_cross_gap(false)
.with_compact(true)
.with_underlines(true)
.with_tab_width(4))
.finish()
.print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
.unwrap();
}
sourcepub fn finish(self) -> Report<'a, S>
pub fn finish(self) -> Report<'a, S>
Finish building the Report
.
Examples found in repository?
More examples
examples/multifile.rs (line 28)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
fn main() {
let mut colors = ColorGenerator::new();
// Generate some colours for each of our elements
let a = colors.next();
let b = colors.next();
let c = colors.next();
Report::build(ReportKind::Error, "b.tao", 10)
.with_code(3)
.with_message(format!("Cannot add types Nat and Str"))
.with_label(Label::new(("b.tao", 10..14))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("b.tao", 17..20))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("b.tao", 15..16))
.with_message(format!(" {} and {} undergo addition here", "Nat".fg(a), "Str".fg(b)))
.with_color(c)
.with_order(10))
.with_label(Label::new(("a.tao", 4..8))
.with_message(format!("Original definition of {} is here", "five".fg(a)))
.with_color(a))
.with_note(format!("{} is a number and can only be added to other numbers", "Nat".fg(a)))
.finish()
.print(sources(vec![
("a.tao", include_str!("a.tao")),
("b.tao", include_str!("b.tao")),
]))
.unwrap();
}
examples/multiline.rs (line 40)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let mut colors = ColorGenerator::new();
// Generate & choose some colours for each of our elements
let a = colors.next();
let b = colors.next();
let out = Color::Fixed(81);
let out2= colors.next();
Report::build(ReportKind::Error, "sample.tao", 12)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("sample.tao", 32..33))
.with_message(format!("This is of type {}", "Nat".fg(a)))
.with_color(a))
.with_label(Label::new(("sample.tao", 42..45))
.with_message(format!("This is of type {}", "Str".fg(b)))
.with_color(b))
.with_label(Label::new(("sample.tao", 11..48))
.with_message(format!(
"The values are outputs of this {} expression",
"match".fg(out),
))
.with_color(out))
.with_label(Label::new(("sample.tao", 0..48))
.with_message(format!(
"The {} has a problem",
"definition".fg(out2),
))
.with_color(out2))
.with_label(Label::new(("sample.tao", 50..76))
.with_message(format!(
"Usage of {} here",
"definition".fg(out2),
))
.with_color(out2))
.with_note(format!("Outputs of {} expressions must coerce to the same type", "match".fg(out)))
.finish()
.print(("sample.tao", Source::from(include_str!("sample.tao"))))
.unwrap();
}
examples/stresstest.rs (line 56)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
fn main() {
let mut colors = ColorGenerator::new();
Report::build(ReportKind::Error, "stresstest.tao", 13)
.with_code(3)
.with_message(format!("Incompatible types"))
.with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
.with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
.with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
.with_config(Config::default()
.with_cross_gap(false)
.with_compact(true)
.with_underlines(true)
.with_tab_width(4))
.finish()
.print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
.unwrap();
}