diff options
Diffstat (limited to 'vendor/codespan-reporting/examples/term.rs')
-rw-r--r-- | vendor/codespan-reporting/examples/term.rs | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/vendor/codespan-reporting/examples/term.rs b/vendor/codespan-reporting/examples/term.rs deleted file mode 100644 index 19bf8503c..000000000 --- a/vendor/codespan-reporting/examples/term.rs +++ /dev/null @@ -1,175 +0,0 @@ -//! To run this example, execute the following command from the top level of -//! this repository: -//! -//! ```sh -//! cargo run --example term -//! ``` - -use codespan_reporting::diagnostic::{Diagnostic, Label}; -use codespan_reporting::files::SimpleFiles; -use codespan_reporting::term::termcolor::StandardStream; -use codespan_reporting::term::{self, ColorArg}; -use structopt::StructOpt; - -#[derive(Debug, StructOpt)] -#[structopt(name = "emit")] -pub struct Opts { - /// Configure coloring of output - #[structopt( - long = "color", - parse(try_from_str), - default_value = "auto", - possible_values = ColorArg::VARIANTS, - case_insensitive = true - )] - pub color: ColorArg, -} - -fn main() -> anyhow::Result<()> { - let opts = Opts::from_args(); - let mut files = SimpleFiles::new(); - - let file_id1 = files.add( - "Data/Nat.fun", - unindent::unindent( - " - module Data.Nat where - - data Nat : Type where - zero : Nat - succ : Nat → Nat - - {-# BUILTIN NATRAL Nat #-} - - infixl 6 _+_ _-_ - - _+_ : Nat → Nat → Nat - zero + n₂ = n₂ - succ n₁ + n₂ = succ (n₁ + n₂) - - _-_ : Nat → Nat → Nat - n₁ - zero = n₁ - zero - succ n₂ = zero - succ n₁ - succ n₂ = n₁ - n₂ - ", - ), - ); - - let file_id2 = files.add( - "Test.fun", - unindent::unindent( - r#" - module Test where - - _ : Nat - _ = 123 + "hello" - "#, - ), - ); - - let file_id3 = files.add( - "FizzBuzz.fun", - unindent::unindent( - r#" - module FizzBuzz where - - fizz₁ : Nat → String - fizz₁ num = case (mod num 5) (mod num 3) of - 0 0 => "FizzBuzz" - 0 _ => "Fizz" - _ 0 => "Buzz" - _ _ => num - - fizz₂ : Nat → String - fizz₂ num = - case (mod num 5) (mod num 3) of - 0 0 => "FizzBuzz" - 0 _ => "Fizz" - _ 0 => "Buzz" - _ _ => num - "#, - ), - ); - - let diagnostics = [ - // Unknown builtin error - Diagnostic::error() - .with_message("unknown builtin: `NATRAL`") - .with_labels(vec![ - Label::primary(file_id1, 96..102).with_message("unknown builtin") - ]) - .with_notes(vec![ - "there is a builtin with a similar name: `NATURAL`".to_owned() - ]), - // Unused parameter warning - Diagnostic::warning() - .with_message("unused parameter pattern: `n₂`") - .with_labels(vec![ - Label::primary(file_id1, 285..289).with_message("unused parameter") - ]) - .with_notes(vec!["consider using a wildcard pattern: `_`".to_owned()]), - // Unexpected type error - Diagnostic::error() - .with_message("unexpected type in application of `_+_`") - .with_code("E0001") - .with_labels(vec![ - Label::primary(file_id2, 37..44).with_message("expected `Nat`, found `String`"), - Label::secondary(file_id1, 130..155) - .with_message("based on the definition of `_+_`"), - ]) - .with_notes(vec![unindent::unindent( - " - expected type `Nat` - found type `String` - ", - )]), - // Incompatible match clause error - Diagnostic::error() - .with_message("`case` clauses have incompatible types") - .with_code("E0308") - .with_labels(vec![ - Label::primary(file_id3, 163..166).with_message("expected `String`, found `Nat`"), - Label::secondary(file_id3, 62..166) - .with_message("`case` clauses have incompatible types"), - Label::secondary(file_id3, 41..47) - .with_message("expected type `String` found here"), - ]) - .with_notes(vec![unindent::unindent( - " - expected type `String` - found type `Nat` - ", - )]), - // Incompatible match clause error - Diagnostic::error() - .with_message("`case` clauses have incompatible types") - .with_code("E0308") - .with_labels(vec![ - Label::primary(file_id3, 328..331).with_message("expected `String`, found `Nat`"), - Label::secondary(file_id3, 211..331) - .with_message("`case` clauses have incompatible types"), - Label::secondary(file_id3, 258..268) - .with_message("this is found to be of type `String`"), - Label::secondary(file_id3, 284..290) - .with_message("this is found to be of type `String`"), - Label::secondary(file_id3, 306..312) - .with_message("this is found to be of type `String`"), - Label::secondary(file_id3, 186..192) - .with_message("expected type `String` found here"), - ]) - .with_notes(vec![unindent::unindent( - " - expected type `String` - found type `Nat` - ", - )]), - ]; - - let writer = StandardStream::stderr(opts.color.into()); - let config = codespan_reporting::term::Config::default(); - for diagnostic in &diagnostics { - term::emit(&mut writer.lock(), &config, &files, &diagnostic)?; - } - - Ok(()) -} |