cairo-lang-parser 2.20.0-rc.0

Cairo parser.
Documentation
//! > Test modifier followed by path.

//! > test_runner_name
get_diagnostics

//! > cairo_code
fn f<+I[a : b], impl C: G<A, B>[c],T[a:b]>() {}

//! > expected_diagnostics
error[E1001]: Missing token ':'.
 --> dummy_file.cairo:1:34
fn f<+I[a : b], impl C: G<A, B>[c],T[a:b]>() {}
                                 ^

error[E1005]: Missing tokens. Expected a type expression.
 --> dummy_file.cairo:1:34
fn f<+I[a : b], impl C: G<A, B>[c],T[a:b]>() {}
                                 ^

error[E1001]: Missing token ','.
 --> dummy_file.cairo:1:37
fn f<+I[a : b], impl C: G<A, B>[c],T[a:b]>() {}
                                    ^

error[E1000]: Skipped tokens. Expected: generic param.
 --> dummy_file.cairo:1:37
fn f<+I[a : b], impl C: G<A, B>[c],T[a:b]>() {}
                                    ^

error[E1001]: Missing token ','.
 --> dummy_file.cairo:1:39
fn f<+I[a : b], impl C: G<A, B>[c],T[a:b]>() {}
                                      ^

error[E1000]: Skipped tokens. Expected: generic param.
 --> dummy_file.cairo:1:39
fn f<+I[a : b], impl C: G<A, B>[c],T[a:b]>() {}
                                      ^

error[E1001]: Missing token ','.
 --> dummy_file.cairo:1:41
fn f<+I[a : b], impl C: G<A, B>[c],T[a:b]>() {}
                                        ^

error[E1000]: Skipped tokens. Expected: generic param.
 --> dummy_file.cairo:1:41
fn f<+I[a : b], impl C: G<A, B>[c],T[a:b]>() {}
                                        ^

//! > ==========================================================================

//! > Test negative const generic arg with invalid numeric literal.

//! > test_runner_name
get_diagnostics

//! > cairo_code
type T = Foo<-0x>;

//! > expected_diagnostics
error[E1016]: Literal is not a valid number.
 --> dummy_file.cairo:1:15
type T = Foo<-0x>;
              ^^

//! > ==========================================================================

//! > Test negative const generic arg with trailing underscore literal.

//! > test_runner_name
get_diagnostics

//! > cairo_code
type T = Foo<-1_>;

//! > expected_diagnostics
error[E1015]: Missing literal suffix.
 --> dummy_file.cairo:1:17
type T = Foo<-1_>;
                ^

//! > ==========================================================================

//! > Test negative const generic arg with no literal following the minus.

//! > test_runner_name
get_diagnostics

//! > cairo_code
type T = Foo<->;

//! > expected_diagnostics
error[E1001]: Missing token '>'.
 --> dummy_file.cairo:1:17
type T = Foo<->;
                ^

error[E1001]: Missing token ';'.
 --> dummy_file.cairo:1:17
type T = Foo<->;
                ^

error[E1000]: Skipped tokens. Expected: generic arg.
 --> dummy_file.cairo:1:14
type T = Foo<->;
             ^^^

//! > ==========================================================================

//! > Test negative const generic arg followed by an identifier instead of a literal.

//! > test_runner_name
get_diagnostics

//! > cairo_code
type T = Foo<-x>;

//! > expected_diagnostics
error[E1001]: Missing token TerminalLiteralNumber.
 --> dummy_file.cairo:1:15
type T = Foo<-x>;
              ^

error[E1001]: Missing token ','.
 --> dummy_file.cairo:1:15
type T = Foo<-x>;
              ^