Move let-binding tests to integration 🚚
This commit is contained in:
parent
73b25bdad0
commit
469d78d610
@ -186,21 +186,6 @@ macro_rules! Block {
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! Let {
|
||||
(@$pat:expr $(=> $expr:expr)?) => {{
|
||||
#[allow(unused)]
|
||||
let mut expr = None;
|
||||
$(expr = Some(Box::new(into!($expr)));)?
|
||||
Expr::Let(ExprLet {
|
||||
pat: into!($pat).map(|s: &str| Ident(s.into())),
|
||||
expr
|
||||
})
|
||||
}};
|
||||
($($tts:tt)*) => {
|
||||
Node::Expr(Let!(@$($tts)*))
|
||||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_parse_raw() {
|
||||
// Basic, mostly tested in tokenizer and resolver.
|
||||
@ -345,26 +330,3 @@ fn test_parse_values() {
|
||||
nodes: [],
|
||||
errors: [S(1..3, "expected expression, found invalid token")]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_parse_let_bindings() {
|
||||
// Basic let.
|
||||
t!("#let x;" Let!("x"));
|
||||
t!("#let _y=1;" Let!("_y" => Int(1)));
|
||||
|
||||
// Followed by text.
|
||||
t!("#let x = 1\n+\n2;\nHi there"
|
||||
Let!("x" => Binary(Int(1), Add, Int(2))),
|
||||
Space, Text("Hi"), Space, Text("there"));
|
||||
|
||||
// Missing semicolon.
|
||||
t!("#let x = a\nHi"
|
||||
nodes: [Let!("x" => Id("a"))],
|
||||
errors: [S(11..13, "unexpected identifier"),
|
||||
S(13..13, "expected semicolon")]);
|
||||
|
||||
// Missing identifier.
|
||||
t!("#let 1;"
|
||||
nodes: [],
|
||||
errors: [S(5..6, "expected identifier, found integer")])
|
||||
}
|
||||
|
BIN
tests/ref/lang/let.png
Normal file
BIN
tests/ref/lang/let.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
20
tests/typ/lang/let.typ
Normal file
20
tests/typ/lang/let.typ
Normal file
@ -0,0 +1,20 @@
|
||||
// Automatically initialized with `none`.
|
||||
#let x;
|
||||
{(x,)}
|
||||
|
||||
// Can start with underscore.
|
||||
#let _y=1;
|
||||
{_y}
|
||||
|
||||
// Multiline.
|
||||
#let z = "world"
|
||||
+ " 🌏"; Hello, {z}!
|
||||
|
||||
// Error: 1:6-1:7 expected identifier, found integer
|
||||
#let 1;
|
||||
|
||||
// Error: 4:1-4:3 unexpected identifier
|
||||
// Error: 3:4-3:9 unexpected identifier
|
||||
// Error: 3:1-3:1 expected semicolon
|
||||
#let x = ""
|
||||
Hi there
|
@ -204,14 +204,14 @@ fn test_part(i: usize, src: &str, env: &SharedEnv) -> (bool, Vec<Frame>) {
|
||||
|
||||
for diag in &diags {
|
||||
if !ref_diags.contains(diag) {
|
||||
print!(" Unexpected | ");
|
||||
print!(" Not annotated | ");
|
||||
print_diag(diag, &map);
|
||||
}
|
||||
}
|
||||
|
||||
for diag in &ref_diags {
|
||||
if !diags.contains(diag) {
|
||||
print!(" Missing | ");
|
||||
print!(" Not emitted | ");
|
||||
print_diag(diag, &map);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user