1use std::sync::Arc;
2
3#[derive(Clone)]
6pub struct SourceFile {
7 pub name: Arc<str>,
9 pub text: Arc<String>,
11}
12
13impl SourceFile {
14 pub fn new(name: impl Into<Arc<str>>, text: impl Into<Arc<String>>) -> Self {
16 Self {
17 name: name.into(),
18 text: text.into(),
19 }
20 }
21}
22
23#[cfg(test)]
24mod tests {
25 use super::SourceFile;
26
27 #[test]
28 fn source_file_basic() {
29 let name = "main.rl";
30 let text = "println(\"foobar\")";
31
32 let source_file = SourceFile::new(name, text.to_string());
33
34 assert_eq!(&*source_file.name, name);
35 assert_eq!(&*source_file.text, text);
36 }
37}