tree_sitter_fsharp/
lib.rs1use tree_sitter_language::LanguageFn;
24
25extern "C" {
26 fn tree_sitter_fsharp() -> *const ();
27 fn tree_sitter_fsharp_signature() -> *const ();
28}
29
30pub const LANGUAGE_FSHARP: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_fsharp) };
32pub const LANGUAGE_SIGNATURE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_fsharp_signature) };
33
34pub const FSHARP_NODE_TYPES: &str = include_str!("../../fsharp/src/node-types.json");
37
38pub const SIGNATURE_NODE_TYPES: &str = include_str!("../../fsharp_signature/src/node-types.json");
41
42pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm");
45pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm");
46pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm");
47pub const TAGS_QUERY: &str = include_str!("../../queries/tags.scm");
48
49#[cfg(test)]
50mod tests {
51 #[test]
52 fn test_fsharp() {
53 let mut parser = tree_sitter::Parser::new();
54 parser
55 .set_language(&super::LANGUAGE_FSHARP.into())
56 .expect("Error loading Fsharp parser");
57
58 let code = r#"
59 module M =
60 let x = 0
61 "#;
62
63 let tree = parser.parse(code, None).unwrap();
64 let root = tree.root_node();
65 assert!(!root.has_error());
66 }
67
68 #[test]
69 fn test_fsharp_signature() {
70 let mut parser = tree_sitter::Parser::new();
71 parser
72 .set_language(&super::LANGUAGE_SIGNATURE.into())
73 .expect("Error loading Fsharp parser");
74
75 let code = r#"
76 module M =
77 val x : int -> int
78 "#;
79
80 let tree = parser.parse(code, None).unwrap();
81 let root = tree.root_node();
82 assert!(!root.has_error());
83 }
84}