From fd3922d866b959d1506eacce5205a0ca6e1ca3bf Mon Sep 17 00:00:00 2001 From: greg Date: Fri, 20 Sep 2019 10:10:57 -0700 Subject: [PATCH] Get rid of Meta from tests --- schala-lang/language/src/parsing/test.rs | 223 +++++++++++------------ 1 file changed, 109 insertions(+), 114 deletions(-) diff --git a/schala-lang/language/src/parsing/test.rs b/schala-lang/language/src/parsing/test.rs index 3620e03..c2d82d2 100644 --- a/schala-lang/language/src/parsing/test.rs +++ b/schala-lang/language/src/parsing/test.rs @@ -59,8 +59,7 @@ macro_rules! decl { macro_rules! ex { ($expr_type:expr) => { Expression::new(ItemIdStore::new_id(), $expr_type) }; - (m $expr_type:expr) => { Meta::new(Expression::new(ItemIdStore::new_id(), $expr_type)) }; - (m $expr_type:expr, $type_anno:expr) => { Meta::new(Expression::with_anno(ItemIdStore::new_id(), $expr_type, $type_anno)) }; + ($expr_type:expr, $type_anno:expr) => { Expression::with_anno(ItemIdStore::new_id(), $expr_type, $type_anno) }; (s $expr_text:expr) => { { let tokens: Vec = tokenize($expr_text); @@ -81,16 +80,15 @@ macro_rules! prefexp { ($op:expr, $lhs:expr) => { PrefixExp(PrefixOp::from_str($op).unwrap(), bx!(Expression::new(ItemIdStore::new_id(), $lhs).into())) } } macro_rules! exst { - ($expr_type:expr) => { Meta::new(Statement { id: ItemIdStore::new_id(), kind: StatementKind::Expression(Expression::new(ItemIdStore::new_id(), $expr_type).into())}) }; - ($expr_type:expr, $type_anno:expr) => { Meta::new(Statement { id: ItemIdStore::new_id(), kind: StatementKind::Expression(Expression::with_anno(ItemIdStore::new_id(), $expr_type, $type_anno).into())}) }; - ($op:expr, $lhs:expr, $rhs:expr) => { Meta::new( - Statement { id: ItemIdStore::new_id(), ,kind: StatementKind::Expression(ex!(binexp!($op, $lhs, $rhs)))} - )}; + ($expr_type:expr) => { Statement { id: ItemIdStore::new_id(), kind: StatementKind::Expression(Expression::new(ItemIdStore::new_id(), $expr_type).into())} }; + ($expr_type:expr, $type_anno:expr) => { Statement { id: ItemIdStore::new_id(), kind: StatementKind::Expression(Expression::with_anno(ItemIdStore::new_id(), $expr_type, $type_anno).into())} }; + ($op:expr, $lhs:expr, $rhs:expr) => { Statement { id: ItemIdStore::new_id(), ,kind: StatementKind::Expression(ex!(binexp!($op, $lhs, $rhs)))} + }; (s $statement_text:expr) => { { let tokens: Vec = tokenize($statement_text); let mut parser = super::Parser::new(tokens); - Meta::new(parser.statement().unwrap()) + parser.statement().unwrap() } } } @@ -170,15 +168,15 @@ fn parsing_identifiers() { ]) } */ - parse_test_wrap_ast!("a[b,c]", exst!(Index { indexee: bx!(ex!(m val!("a"))), indexers: vec![ex!(m val!("b")), ex!(m val!("c"))]} )); + parse_test_wrap_ast!("a[b,c]", exst!(Index { indexee: bx!(ex!(val!("a"))), indexers: vec![ex!(val!("b")), ex!(val!("c"))]} )); parse_test_wrap_ast!("None", exst!(val!("None"))); parse_test_wrap_ast!("Pandas { a: x + y }", - exst!(NamedStruct { name: Meta::new(qname!(Pandas)), fields: vec![(rc!(a), ex!(m binexp!("+", val!("x"), val!("y"))))]}) + exst!(NamedStruct { name: qname!(Pandas), fields: vec![(rc!(a), ex!(binexp!("+", val!("x"), val!("y"))))]}) ); parse_test_wrap_ast! { "Pandas { a: n, b: q, }", - exst!(NamedStruct { name: Meta::new(qname!(Pandas)), fields: - vec![(rc!(a), ex!(m val!("n"))), (rc!(b), ex!(m val!("q")))] + exst!(NamedStruct { name: qname!(Pandas), fields: + vec![(rc!(a), ex!(val!("n"))), (rc!(b), ex!(val!("q")))] } ) }; @@ -189,14 +187,14 @@ fn parsing_identifiers() { fn qualified_identifiers() { parse_test_wrap_ast! { "let q_q = Yolo::Swaggins", - Meta::new(decl!(Binding { name: rc!(q_q), constant: true, type_anno: None, - expr: Meta::new(Expression::new(ItemIdStore::new_id(), Value(qname!(Yolo, Swaggins)))), - })) + decl!(Binding { name: rc!(q_q), constant: true, type_anno: None, + expr: Expression::new(ItemIdStore::new_id(), Value(qname!(Yolo, Swaggins))), + }) } parse_test_wrap_ast! { "thing::item::call()", - exst!(Call { f: bx![ex!(m Value(qname!(thing, item, call)))], arguments: vec![] }) + exst!(Call { f: bx![ex!(Value(qname!(thing, item, call)))], arguments: vec![] }) } } @@ -224,36 +222,36 @@ fn parsing_complicated_operators() { #[test] fn parsing_functions() { - parse_test_wrap_ast!("fn oi()", Meta::new(decl!(FuncSig(Signature { name: rc!(oi), operator: false, params: vec![], type_anno: None })))); - parse_test_wrap_ast!("oi()", exst!(Call { f: bx!(ex!(m val!("oi"))), arguments: vec![] })); + parse_test_wrap_ast!("fn oi()", decl!(FuncSig(Signature { name: rc!(oi), operator: false, params: vec![], type_anno: None }))); + parse_test_wrap_ast!("oi()", exst!(Call { f: bx!(ex!(val!("oi"))), arguments: vec![] })); parse_test_wrap_ast!("oi(a, 2 + 2)", exst!(Call - { f: bx!(ex!(m val!("oi"))), - arguments: vec![inv!(ex!(m val!("a"))), inv!(ex!(m binexp!("+", NatLiteral(2), NatLiteral(2)))).into()] + { f: bx!(ex!(val!("oi"))), + arguments: vec![inv!(ex!(val!("a"))), inv!(ex!(binexp!("+", NatLiteral(2), NatLiteral(2)))).into()] })); parse_error!("a(b,,c)"); - parse_test_wrap_ast!("fn a(b, c: Int): Int", Meta::new(decl!( - FuncSig(Signature { name: rc!(a), operator: false, params: vec![ - FormalParam { name: rc!(b), anno: None, default: None }, - FormalParam { name: rc!(c), anno: Some(ty!("Int")), default: None } - ], type_anno: Some(ty!("Int")) })))); + parse_test_wrap_ast!("fn a(b, c: Int): Int", decl!( + FuncSig(Signature { name: rc!(a), operator: false, params: vec![ + FormalParam { name: rc!(b), anno: None, default: None }, + FormalParam { name: rc!(c), anno: Some(ty!("Int")), default: None } + ], type_anno: Some(ty!("Int")) }))); - parse_test_wrap_ast!("fn a(x) { x() }", Meta::new(decl!( - FuncDecl(Signature { name: rc!(a), operator: false, params: vec![FormalParam { name: rc!(x), anno: None, default: None }], type_anno: None }, - vec![exst!(Call { f: bx!(ex!(m val!("x"))), arguments: vec![] })])))); - parse_test_wrap_ast!("fn a(x) {\n x() }", Meta::new(decl!( - FuncDecl(Signature { name: rc!(a), operator: false, params: vec![FormalParam { name: rc!(x), anno: None, default: None }], type_anno: None }, - vec![exst!(Call { f: bx!(ex!(m val!("x"))), arguments: vec![] })])))); + parse_test_wrap_ast!("fn a(x) { x() }", decl!( + FuncDecl(Signature { name: rc!(a), operator: false, params: vec![FormalParam { name: rc!(x), anno: None, default: None }], type_anno: None }, + vec![exst!(Call { f: bx!(ex!(val!("x"))), arguments: vec![] })]))); + parse_test_wrap_ast!("fn a(x) {\n x() }", decl!( + FuncDecl(Signature { name: rc!(a), operator: false, params: vec![FormalParam { name: rc!(x), anno: None, default: None }], type_anno: None }, + vec![exst!(Call { f: bx!(ex!(val!("x"))), arguments: vec![] })]))); let multiline = r#" fn a(x) { x() } "#; - parse_test_wrap_ast!(multiline, Meta::new(decl!( +parse_test_wrap_ast!(multiline, decl!( FuncDecl(Signature { name: rc!(a), operator: false, params: vec![FormalParam { name: rc!(x), default: None, anno: None }], type_anno: None }, - vec![exst!(Call { f: bx!(ex!(m val!("x"))), arguments: vec![] })])))); + vec![exst!(Call { f: bx!(ex!(val!("x"))), arguments: vec![] })]))); let multiline2 = r#" fn a(x) { @@ -261,21 +259,21 @@ x() } "#; - parse_test_wrap_ast!(multiline2, Meta::new(decl!( +parse_test_wrap_ast!(multiline2, decl!( FuncDecl(Signature { name: rc!(a), operator: false, params: vec![FormalParam { name: rc!(x), default: None, anno: None }], type_anno: None }, - vec![exst!(s "x()")])))); + vec![exst!(s "x()")]))); } #[test] fn functions_with_default_args() { parse_test_wrap_ast! { "fn func(x: Int, y: Int = 4) { }", - Meta::new(decl!( + decl!( FuncDecl(Signature { name: rc!(func), operator: false, type_anno: None, params: vec![ FormalParam { name: rc!(x), default: None, anno: Some(ty!("Int")) }, - FormalParam { name: rc!(y), default: Some(Meta::new(ex!(s "4"))), anno: Some(ty!("Int")) } + FormalParam { name: rc!(y), default: Some(ex!(s "4")), anno: Some(ty!("Int")) } ]}, vec![]) - )) + ) }; } @@ -292,11 +290,11 @@ fn parsing_strings() { #[test] fn parsing_types() { - parse_test_wrap_ast!("type Yolo = Yolo", Meta::new(decl!(TypeDecl { name: tys!("Yolo"), body: TypeBody(vec![UnitStruct(rc!(Yolo))]), mutable: false} ))); - parse_test_wrap_ast!("type mut Yolo = Yolo", Meta::new(decl!(TypeDecl { name: tys!("Yolo"), body: TypeBody(vec![UnitStruct(rc!(Yolo))]), mutable: true} ))); - parse_test_wrap_ast!("type alias Sex = Drugs", Meta::new(decl!(TypeAlias(rc!(Sex), rc!(Drugs))))); + parse_test_wrap_ast!("type Yolo = Yolo", decl!(TypeDecl { name: tys!("Yolo"), body: TypeBody(vec![UnitStruct(rc!(Yolo))]), mutable: false} )); + parse_test_wrap_ast!("type mut Yolo = Yolo", decl!(TypeDecl { name: tys!("Yolo"), body: TypeBody(vec![UnitStruct(rc!(Yolo))]), mutable: true} )); + parse_test_wrap_ast!("type alias Sex = Drugs", decl!(TypeAlias(rc!(Sex), rc!(Drugs)))); parse_test_wrap_ast!("type Sanchez = Miguel | Alejandro(Int, Option) | Esperanza { a: Int, b: String }", - Meta::new(decl!(TypeDecl { + decl!(TypeDecl { name: tys!("Sanchez"), body: TypeBody(vec![ UnitStruct(rc!(Miguel)), @@ -313,27 +311,27 @@ fn parsing_types() { } ]), mutable: false - }))); + })); parse_test_wrap_ast! { "type Jorge = Diego | Kike(a)", - Meta::new(decl!(TypeDecl{ + decl!(TypeDecl{ name: TypeSingletonName { name: rc!(Jorge), params: vec![Singleton(TypeSingletonName { name: rc!(a), params: vec![] })] }, body: TypeBody(vec![UnitStruct(rc!(Diego)), TupleStruct(rc!(Kike), vec![Singleton(TypeSingletonName { name: rc!(a), params: vec![] })])]), mutable: false } - )) + ) }; } #[test] fn parsing_bindings() { - parse_test_wrap_ast!("let mut a = 10", Meta::new(decl!(Binding { name: rc!(a), constant: false, type_anno: None, expr: ex!(m NatLiteral(10)) } ))); - parse_test_wrap_ast!("let a = 2 + 2", Meta::new(decl!(Binding { name: rc!(a), constant: true, type_anno: None, expr: ex!(m binexp!("+", NatLiteral(2), NatLiteral(2))) }) )); - parse_test_wrap_ast!("let a: Nat = 2 + 2", Meta::new(decl!( - Binding { name: rc!(a), constant: true, type_anno: Some(Singleton(TypeSingletonName { name: rc!(Nat), params: vec![] })), - expr: Meta::new(ex!(binexp!("+", NatLiteral(2), NatLiteral(2)))) } - ))); + parse_test_wrap_ast!("let mut a = 10", decl!(Binding { name: rc!(a), constant: false, type_anno: None, expr: ex!(NatLiteral(10)) } )); + parse_test_wrap_ast!("let a = 2 + 2", decl!(Binding { name: rc!(a), constant: true, type_anno: None, expr: ex!(binexp!("+", NatLiteral(2), NatLiteral(2))) })); + parse_test_wrap_ast!("let a: Nat = 2 + 2", decl!( + Binding { name: rc!(a), constant: true, type_anno: Some(Singleton(TypeSingletonName { name: rc!(Nat), params: vec![] })), + expr: ex!(binexp!("+", NatLiteral(2), NatLiteral(2))) } + )); } #[test] @@ -342,11 +340,11 @@ fn parsing_block_expressions() { "if a() then { b(); c() }", exst!( IfExpression { discriminator: bx! { - Discriminator::Simple(ex!(m Call { f: bx!(ex!(m val!("a"))), arguments: vec![]})) + Discriminator::Simple(ex!(Call { f: bx!(ex!(val!("a"))), arguments: vec![]})) }, body: bx! { IfExpressionBody::SimpleConditional( - vec![exst!(Call { f: bx!(ex!(m val!("b"))), arguments: vec![]}), exst!(Call { f: bx!(ex!(m val!("c"))), arguments: vec![] })], + vec![exst!(Call { f: bx!(ex!(val!("b"))), arguments: vec![]}), exst!(Call { f: bx!(ex!(val!("c"))), arguments: vec![] })], None ) } @@ -358,11 +356,11 @@ fn parsing_block_expressions() { "if a() then { b(); c() } else { q }", exst!( IfExpression { discriminator: bx! { - Discriminator::Simple(ex!(m Call { f: bx!(ex!(m val!("a"))), arguments: vec![]})) + Discriminator::Simple(ex!(Call { f: bx!(ex!(val!("a"))), arguments: vec![]})) }, body: bx! { IfExpressionBody::SimpleConditional( - vec![exst!(Call { f: bx!(ex!(m val!("b"))), arguments: vec![]}), exst!(Call { f: bx!(ex!(m val!("c"))), arguments: vec![] })], + vec![exst!(Call { f: bx!(ex!(val!("b"))), arguments: vec![]}), exst!(Call { f: bx!(ex!(val!("c"))), arguments: vec![] })], Some( vec![exst!(val!("q"))], ) @@ -407,69 +405,66 @@ fn parsing_block_expressions() { #[test] fn parsing_interfaces() { parse_test_wrap_ast!("interface Unglueable { fn unglue(a: Glue); fn mar(): Glue }", - Meta::new(decl!(Interface { - name: rc!(Unglueable), - signatures: vec![ - Signature { - name: rc!(unglue), - operator: false, - params: vec![ - FormalParam { name: rc!(a), anno: Some(Singleton(TypeSingletonName { name: rc!(Glue), params: vec![] })), default: None } - ], - type_anno: None - }, - Signature { name: rc!(mar), operator: false, params: vec![], type_anno: Some(Singleton(TypeSingletonName { name: rc!(Glue), params: vec![] })) }, - ] - })) + decl!(Interface { + name: rc!(Unglueable), + signatures: vec![ + Signature { + name: rc!(unglue), + operator: false, + params: vec![ + FormalParam { name: rc!(a), anno: Some(Singleton(TypeSingletonName { name: rc!(Glue), params: vec![] })), default: None } + ], + type_anno: None + }, + Signature { name: rc!(mar), operator: false, params: vec![], type_anno: Some(Singleton(TypeSingletonName { name: rc!(Glue), params: vec![] })) }, + ] + }) ); } #[test] fn parsing_impls() { parse_test_wrap_ast!("impl Heh { fn yolo(); fn swagg(); }", - Meta::new( - decl!(Impl { - type_name: ty!("Heh"), - interface_name: None, - block: vec![ - FuncSig(Signature { name: rc!(yolo), operator: false, params: vec![], type_anno: None }), - FuncSig(Signature { name: rc!(swagg), operator: false, params: vec![], type_anno: None }) - ] }))); + decl!(Impl { + type_name: ty!("Heh"), + interface_name: None, + block: vec![ + FuncSig(Signature { name: rc!(yolo), operator: false, params: vec![], type_anno: None }), + FuncSig(Signature { name: rc!(swagg), operator: false, params: vec![], type_anno: None }) + ] })); parse_test_wrap_ast!("impl Mondai for Lollerino { fn yolo(); fn swagg(); }", - Meta::new(decl!(Impl { - type_name: ty!("Lollerino"), - interface_name: Some(TypeSingletonName { name: rc!(Mondai), params: vec![] }), - block: vec![ - FuncSig(Signature { name: rc!(yolo), operator: false, params: vec![], type_anno: None}), - FuncSig(Signature { name: rc!(swagg), operator: false, params: vec![], type_anno: None }) - ] }))); + decl!(Impl { + type_name: ty!("Lollerino"), + interface_name: Some(TypeSingletonName { name: rc!(Mondai), params: vec![] }), + block: vec![ + FuncSig(Signature { name: rc!(yolo), operator: false, params: vec![], type_anno: None}), + FuncSig(Signature { name: rc!(swagg), operator: false, params: vec![], type_anno: None }) + ] })); parse_test_wrap_ast!("impl Hella for (Alpha, Omega) { }", - Meta::new(decl!(Impl { - type_name: Tuple(vec![ty!("Alpha"), ty!("Omega")]), - interface_name: Some(TypeSingletonName { name: rc!(Hella), params: vec![ty!("T")] }), - block: vec![] - })) + decl!(Impl { + type_name: Tuple(vec![ty!("Alpha"), ty!("Omega")]), + interface_name: Some(TypeSingletonName { name: rc!(Hella), params: vec![ty!("T")] }), + block: vec![] + }) ); parse_test_wrap_ast!("impl Option { fn oi() }", - Meta::new( - decl!(Impl { - type_name: Singleton(TypeSingletonName { name: rc!(Option), params: vec![ty!("WTFMate")]}), - interface_name: None, - block: vec![ - FuncSig(Signature { name: rc!(oi), operator: false, params: vec![], type_anno: None }), - ] - }))); + decl!(Impl { + type_name: Singleton(TypeSingletonName { name: rc!(Option), params: vec![ty!("WTFMate")]}), + interface_name: None, + block: vec![ + FuncSig(Signature { name: rc!(oi), operator: false, params: vec![], type_anno: None }), + ] + })); } #[test] fn parsing_type_annotations() { parse_test_wrap_ast!("let a = b : Int", - Meta::new( decl!(Binding { name: rc!(a), constant: true, type_anno: None, expr: - ex!(m val!("b"), ty!("Int")) }))); + ex!(val!("b"), ty!("Int")) })); parse_test_wrap_ast!("a : Int", exst!(val!("a"), ty!("Int")) @@ -511,7 +506,7 @@ fn parsing_lambdas() { ); parse_test_wrap_ast! { r#"\(x){y}(1)"#, - exst!(Call { f: bx!(ex!(m + exst!(Call { f: bx!(ex!( Lambda { params: vec![ FormalParam { name: rc!(x), anno: None, default: None } @@ -519,7 +514,7 @@ fn parsing_lambdas() { type_anno: None, body: vec![exst!(s "y")] } )), - arguments: vec![inv!(ex!(m NatLiteral(1))).into()] }) + arguments: vec![inv!(ex!(NatLiteral(1))).into()] }) }; parse_test_wrap_ast! { @@ -566,8 +561,8 @@ fn more_advanced_lambdas() { exst!(s r"fn wahoo() { let a = 10; \(x) { x + a } }"), exst! { Call { - f: bx!(ex!(m Call { f: bx!(ex!(m val!("wahoo"))), arguments: vec![] })), - arguments: vec![inv!(ex!(m NatLiteral(3))).into()], + f: bx!(ex!(Call { f: bx!(ex!(val!("wahoo"))), arguments: vec![] })), + arguments: vec![inv!(ex!(NatLiteral(3))).into()], } } ] @@ -579,7 +574,7 @@ fn more_advanced_lambdas() { fn list_literals() { parse_test_wrap_ast! { "[1,2]", - exst!(ListLiteral(vec![ex!(m NatLiteral(1)), ex!(m NatLiteral(2))])) + exst!(ListLiteral(vec![ex!(NatLiteral(1)), ex!(NatLiteral(2))])) }; } @@ -592,7 +587,7 @@ fn while_expr() { parse_test_wrap_ast! { "while a == b { }", - exst!(WhileExpression { condition: Some(bx![ex![m binexp!("==", val!("a"), val!("b"))]]), body: vec![] }) + exst!(WhileExpression { condition: Some(bx![ex![binexp!("==", val!("a"), val!("b"))]]), body: vec![] }) } } @@ -619,7 +614,7 @@ fn patterns() { parse_test_wrap_ast! { "if x is Some(a) then { 4 } else { 9 }", exst!( IfExpression { - discriminator: bx!(Discriminator::Simple(Meta::new(ex!(s "x")))), + discriminator: bx!(Discriminator::Simple(ex!(s "x"))), body: bx!(IfExpressionBody::SimplePatternMatch(Pattern::TupleStruct(qname!(Some), vec![Pattern::VarOrName(qname!(a))]), vec![exst!(s "4")], Some(vec![exst!(s "9")]))) } ) @@ -628,7 +623,7 @@ fn patterns() { parse_test_wrap_ast! { "if x is Some(a) then 4 else 9", exst!( IfExpression { - discriminator: bx!(Discriminator::Simple(Meta::new(ex!(s "x")))), + discriminator: bx!(Discriminator::Simple(ex!(s "x"))), body: bx!(IfExpressionBody::SimplePatternMatch(Pattern::TupleStruct(qname!(Some), vec![Pattern::VarOrName(qname!(a))]), vec![exst!(s "4")], Some(vec![exst!(s "9")]))) } ) @@ -637,7 +632,7 @@ fn patterns() { parse_test_wrap_ast! { "if x is Something { a, b: x } then { 4 } else { 9 }", exst!( IfExpression { - discriminator: bx!(Discriminator::Simple(Meta::new(ex!(s "x")))), + discriminator: bx!(Discriminator::Simple(ex!(s "x"))), body: bx!(IfExpressionBody::SimplePatternMatch( Pattern::Record(qname!(Something), vec![ (rc!(a),Pattern::Literal(PatternLiteral::StringPattern(rc!(a)))), @@ -655,7 +650,7 @@ fn pattern_literals() { "if x is -1 then 1 else 2", exst!( IfExpression { - discriminator: bx!(Discriminator::Simple(Meta::new(ex!(s "x")))), + discriminator: bx!(Discriminator::Simple(ex!(s "x"))), body: bx!(IfExpressionBody::SimplePatternMatch( Pattern::Literal(PatternLiteral::NumPattern { neg: true, num: NatLiteral(1) }), vec![exst!(NatLiteral(1))], @@ -666,10 +661,10 @@ fn pattern_literals() { } parse_test_wrap_ast! { - "if x is 1 then 1 else 2", + "if x is 1 then 1 else 2", exst!( IfExpression { - discriminator: bx!(Discriminator::Simple(Meta::new(ex!(s "x")))), + discriminator: bx!(Discriminator::Simple(ex!(s "x"))), body: bx!(IfExpressionBody::SimplePatternMatch( Pattern::Literal(PatternLiteral::NumPattern { neg: false, num: NatLiteral(1) }), vec![exst!(s "1")], @@ -680,10 +675,10 @@ fn pattern_literals() { } parse_test_wrap_ast! { - "if x is true then 1 else 2", + "if x is true then 1 else 2", exst!( IfExpression { - discriminator: bx!(Discriminator::Simple(Meta::new(ex!(s "x")))), + discriminator: bx!(Discriminator::Simple(ex!(s "x"))), body: bx!(IfExpressionBody::SimplePatternMatch( Pattern::Literal(PatternLiteral::BoolPattern(true)), vec![exst!(NatLiteral(1))], @@ -697,7 +692,7 @@ fn pattern_literals() { "if x is \"gnosticism\" then 1 else 2", exst!( IfExpression { - discriminator: bx!(Discriminator::Simple(Meta::new(ex!(s "x")))), + discriminator: bx!(Discriminator::Simple(ex!(s "x"))), body: bx!(IfExpressionBody::SimplePatternMatch( Pattern::Literal(PatternLiteral::StringPattern(rc!(gnosticism))), vec![exst!(s "1")],