tests pass again

This commit is contained in:
nora 2023-03-04 13:11:54 +01:00
parent 1734bab8cf
commit 7867966f22
12 changed files with 63 additions and 66 deletions

View file

@ -445,44 +445,37 @@ pub fn parse(db: &dyn Db, source: SourceProgram) -> Option<File> {
result
}
#[cfg(disabled)]
#[cfg(test)]
mod tests {
use std::{fmt::Debug, path::PathBuf};
use std::fmt::Debug;
use logos::Logos;
use crate::{Database, Diagnostics, SourceProgram};
use super::ParserState;
use crate::lexer::Token;
fn parse<'src>(src: &'src str) -> impl Debug + 'src {
let db = Database::default();
let source_program = SourceProgram::new(&db, src.to_string(), "uwu.ub".into());
fn parse<'src>(src: &'src str, state: &'src ParserState) -> impl Debug + 'src {
let lexer = Token::lexer(src);
let len = lexer.source().len();
let file = super::parse(&db, source_program);
super::parse(
lexer.spanned(),
state,
len,
PathBuf::from(module_path!().replace("::", "__")),
)
let errs = super::parse::accumulated::<Diagnostics>(&db, source_program);
(file, errs)
}
#[test]
fn addition() {
let state = ParserState::default();
let r = parse("fn main() { 1 + 4; }", &state);
let r = parse("fn main() { 1 + 4; }");
insta::assert_debug_snapshot!(r);
}
#[test]
fn expression() {
let state = ParserState::default();
let r = parse("fn main() { (4 / hallo()) + 5; }", &state);
let r = parse("fn main() { (4 / hallo()) + 5; }");
insta::assert_debug_snapshot!(r);
}
#[test]
fn unary() {
let state = ParserState::default();
let r = parse(
"fn main() {
-(*5);
@ -490,69 +483,51 @@ mod tests {
2 + &8;
*6 * *8; // :)
}",
&state,
);
insta::assert_debug_snapshot!(r);
}
#[test]
fn function() {
let state = ParserState::default();
let r = parse("fn foo() -> u64 { 1 + 5; }", &state);
let r = parse("fn foo() -> u64 { 1 + 5; }");
insta::assert_debug_snapshot!(r);
}
#[test]
fn if_no_else() {
let state = ParserState::default();
let r = parse("fn foo() -> u64 { if false {} }", &state);
let r = parse("fn foo() -> u64 { if false {} }");
insta::assert_debug_snapshot!(r);
}
#[test]
fn if_else() {
let state = ParserState::default();
let r = parse("fn foo() -> u64 { if false {} else {} }", &state);
let r = parse("fn foo() -> u64 { if false {} else {} }");
insta::assert_debug_snapshot!(r);
}
#[test]
fn while_loop() {
let state = ParserState::default();
let r = parse("fn foo() -> u64 { while false {} }", &state);
let r = parse("fn foo() -> u64 { while false {} }");
insta::assert_debug_snapshot!(r);
}
#[test]
fn var_decl() {
let state = ParserState::default();
let r = parse(
"fn foo() -> u64 { let hello: u64 = 5; let owo = 0; let nice: u64; let nothing; }",
&state,
);
insta::assert_debug_snapshot!(r);
}
#[test]
fn struct_() {
let state = ParserState::default();
let r = parse("struct X { y: u64, x: u64 }", &state);
let r = parse("struct X { y: u64, x: u64 }");
insta::assert_debug_snapshot!(r);
}
#[test]
fn types() {
let state = ParserState::default();
let r = parse(
"fn types() -> ptr u64 { let test: Test = 2; let int: ptr u64 = 25; }",
&state,
);
let r = parse("fn types() -> ptr u64 { let test: Test = 2; let int: ptr u64 = 25; }");
insta::assert_debug_snapshot!(r);
}
}

View file

@ -7,12 +7,12 @@ expression: tokens
"\"hello friend\"",
),
Integer(
"5",
5,
),
String(
"\"morning\"",
),
Integer(
"3263475",
3263475,
),
]

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
FnDecl(
FnDecl {

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
FnDecl(
FnDecl {

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
FnDecl(
FnDecl {
@ -14,7 +14,9 @@ expression: r
ret_ty: Some(
Ty {
span: 12..15,
kind: U64,
kind: Name(
"u64",
),
},
),
id: NodeId(

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
FnDecl(
FnDecl {
@ -14,7 +14,9 @@ expression: r
ret_ty: Some(
Ty {
span: 12..15,
kind: U64,
kind: Name(
"u64",
),
},
),
id: NodeId(

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
FnDecl(
FnDecl {
@ -14,7 +14,9 @@ expression: r
ret_ty: Some(
Ty {
span: 12..15,
kind: U64,
kind: Name(
"u64",
),
},
),
id: NodeId(

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
StructDecl(
StructDecl {
@ -15,7 +15,9 @@ expression: r
name: "y",
ty: Ty {
span: 14..17,
kind: U64,
kind: Name(
"u64",
),
},
id: NodeId(
0,
@ -26,7 +28,9 @@ expression: r
name: "x",
ty: Ty {
span: 22..25,
kind: U64,
kind: Name(
"u64",
),
},
id: NodeId(
1,

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
FnDecl(
FnDecl {
@ -17,7 +17,9 @@ expression: r
kind: Ptr(
Ty {
span: 18..21,
kind: U64,
kind: Name(
"u64",
),
},
),
},
@ -64,7 +66,9 @@ expression: r
kind: Ptr(
Ty {
span: 57..60,
kind: U64,
kind: Name(
"u64",
),
},
),
},

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
FnDecl(
FnDecl {

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
FnDecl(
FnDecl {
@ -14,7 +14,9 @@ expression: r
ret_ty: Some(
Ty {
span: 12..15,
kind: U64,
kind: Name(
"u64",
),
},
),
id: NodeId(
@ -28,7 +30,9 @@ expression: r
ty: Some(
Ty {
span: 29..32,
kind: U64,
kind: Name(
"u64",
),
},
),
rhs: Some(
@ -75,7 +79,9 @@ expression: r
ty: Some(
Ty {
span: 61..64,
kind: U64,
kind: Name(
"u64",
),
},
),
rhs: None,

View file

@ -5,7 +5,7 @@ expression: r
(
Some(
File {
name: "ub__parser__tests",
name: "uwu.ub",
items: [
FnDecl(
FnDecl {
@ -14,7 +14,9 @@ expression: r
ret_ty: Some(
Ty {
span: 12..15,
kind: U64,
kind: Name(
"u64",
),
},
),
id: NodeId(