git.delta.rocks / jrsonnet / refs/commits / 036eddfba56d

difftreelog

Merge pull request #24 from CertainLach/issue-23

Yaroslav Bulyukin2020-10-31parents: #ce2d8d5 #34125db.patch.diff
in: master

1 file changed

modifiedcrates/jrsonnet-evaluator/src/lib.rsdiffbeforeafterboth
193 pub(crate) fn import_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Val> {193 pub(crate) fn import_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Val> {
194 let file_path = self.resolve_file(from, path)?;194 let file_path = self.resolve_file(from, path)?;
195 {195 {
196 let data = self.data();
196 let files = &self.data().files;197 let files = &data.files;
197 if files.contains_key(&file_path) {198 if files.contains_key(&file_path) {
199 drop(data);
198 return self.evaluate_loaded_file_raw(&file_path);200 return self.evaluate_loaded_file_raw(&file_path);
199 }201 }
200 }202 }
902 Ok(())904 Ok(())
903 }905 }
906
907 struct TestImportResolver(Rc<str>);
908 impl crate::import::ImportResolver for TestImportResolver {
909 fn resolve_file(&self, _: &PathBuf, _: &PathBuf) -> crate::error::Result<Rc<PathBuf>> {
910 Ok(Rc::new(PathBuf::from("/test")))
911 }
912
913 fn load_file_contents(&self, _: &PathBuf) -> crate::error::Result<Rc<str>> {
914 Ok(self.0.clone())
915 }
916
917 unsafe fn as_any(&self) -> &dyn std::any::Any {
918 panic!()
919 }
920 }
921
922 #[test]
923 fn issue_23() {
924 let state = EvaluationState::default();
925 state.set_import_resolver(Box::new(TestImportResolver(r#"import "/test""#.into())));
926 let _ = state.evaluate_file_raw(&PathBuf::from("/test"));
927 }
904}928}
905929