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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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