mirror of
https://github.com/Noratrieb/ub.git
synced 2026-01-14 16:45:05 +01:00
tests pass again
This commit is contained in:
parent
1734bab8cf
commit
7867966f22
12 changed files with 63 additions and 66 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,12 @@ expression: tokens
|
||||||
"\"hello friend\"",
|
"\"hello friend\"",
|
||||||
),
|
),
|
||||||
Integer(
|
Integer(
|
||||||
"5",
|
5,
|
||||||
),
|
),
|
||||||
String(
|
String(
|
||||||
"\"morning\"",
|
"\"morning\"",
|
||||||
),
|
),
|
||||||
Integer(
|
Integer(
|
||||||
"3263475",
|
3263475,
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ expression: r
|
||||||
(
|
(
|
||||||
Some(
|
Some(
|
||||||
File {
|
File {
|
||||||
name: "ub__parser__tests",
|
name: "uwu.ub",
|
||||||
items: [
|
items: [
|
||||||
FnDecl(
|
FnDecl(
|
||||||
FnDecl {
|
FnDecl {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ expression: r
|
||||||
(
|
(
|
||||||
Some(
|
Some(
|
||||||
File {
|
File {
|
||||||
name: "ub__parser__tests",
|
name: "uwu.ub",
|
||||||
items: [
|
items: [
|
||||||
FnDecl(
|
FnDecl(
|
||||||
FnDecl {
|
FnDecl {
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ expression: r
|
||||||
(
|
(
|
||||||
Some(
|
Some(
|
||||||
File {
|
File {
|
||||||
name: "ub__parser__tests",
|
name: "uwu.ub",
|
||||||
items: [
|
items: [
|
||||||
FnDecl(
|
FnDecl(
|
||||||
FnDecl {
|
FnDecl {
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue