plum

#treesitter#compiler#wasm

git clone https://git.pyrossh.dev/plum

A statically typed, imperative programming language inspired by rust, python


348b356 — Peter John 2026-11-01T20:32:18+05:30
fix: parser union tests use raw parse
Files changed (1) hide show
  1. plum-core/tests/parser_test.rs +16 -4
plum-core/tests/parser_test.rs CHANGED
@@ -3,6 +3,14 @@ use plum_core::ast::*;
3
3
  use plum_core::AstParser;
4
4
 
5
5
  fn parse(src: &str) -> Source {
6
+ parseWith(src, false)
7
+ }
8
+
9
+ fn parseRaw(src: &str) -> Source {
10
+ parseWith(src, true)
11
+ }
12
+
13
+ fn parseWith(src: &str, raw: bool) -> Source {
6
14
  let mut parser = tree_sitter::Parser::new();
7
15
  parser
8
16
  .set_language(&tree_sitter_plum::LANGUAGE.into())
@@ -14,7 +22,11 @@ fn parse(src: &str) -> Source {
14
22
  tree.root_node().to_sexp()
15
23
  );
16
24
  let ap = AstParser::new(src);
25
+ if raw {
26
+ ap.parseSourceRaw(tree.root_node())
27
+ } else {
17
- ap.parseSource(tree.root_node())
28
+ ap.parseSource(tree.root_node())
29
+ }
18
30
  }
19
31
 
20
32
  fn onlyFn(source: &Source) -> &Fn {
@@ -863,7 +875,7 @@ fn memberOf(v: &EnumVariant) -> &Type {
863
875
 
864
876
  #[test]
865
877
  fn unionEnumOneLine() {
866
- let source = parse("enum Shape = Circle | Rectangle");
878
+ let source = parseRaw("enum Shape = Circle | Rectangle");
867
879
  let e = onlyEnum(&source);
868
880
  assert_eq!(e.name, "Shape");
869
881
  assert_eq!(e.variants.len(), 2);
@@ -875,7 +887,7 @@ fn unionEnumOneLine() {
875
887
 
876
888
  #[test]
877
889
  fn unionEnumMultiLineGenericMember() {
878
- let source = parse("enum Tree[T] =\n | Leaf\n | Node[T]\n");
890
+ let source = parseRaw("enum Tree[T] =\n | Leaf\n | Node[T]\n");
879
891
  let e = onlyEnum(&source);
880
892
  assert_eq!(e.variants.len(), 2);
881
893
  assert_eq!(memberOf(&e.variants[0]).name, "Leaf");
@@ -893,7 +905,7 @@ fn one_line_then_fun() {
893
905
 
894
906
  #[test]
895
907
  fn one_line_generic_member() {
896
- let source = parse("enum Js = JsNull | List[Js] | Map[Str, Js]");
908
+ let source = parseRaw("enum Js = JsNull | List[Js] | Map[Str, Js]");
897
909
  let e = onlyEnum(&source);
898
910
  assert_eq!(memberOf(&e.variants[0]).generics.len(), 0);
899
911
  assert_eq!(memberOf(&e.variants[1]).generics.len(), 1);