diff options
author | Florian Klink <flokli@flokli.de> | 2023-12-30T20·53+0100 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-12-31T13·15+0000 |
commit | 12f9b95a2c75a757a36c4147eb011d096e8f48be (patch) | |
tree | 14ecada9404d8289564efea9a7c8c5e77bfd3951 /tvix/eval/src | |
parent | 4fba57c2c90f2e7b02da9187e59f8d64deef3fb2 (diff) |
feat(tvix/eval): accept impl AsRef<str> for code r/7290
We're also happy to consume strings, or other owned stringy types. Change-Id: I5bead4407976134815d8f879f9f70468e6af1dc4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10476 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/eval/src')
-rw-r--r-- | tvix/eval/src/lib.rs | 20 | ||||
-rw-r--r-- | tvix/eval/src/tests/mod.rs | 2 |
2 files changed, 15 insertions, 7 deletions
diff --git a/tvix/eval/src/lib.rs b/tvix/eval/src/lib.rs index 37db2b7bf418..ddc281323454 100644 --- a/tvix/eval/src/lib.rs +++ b/tvix/eval/src/lib.rs @@ -179,7 +179,11 @@ impl<'co, 'ro> Evaluation<'co, 'ro> { /// reporting, and for resolving relative paths in impure functions) /// This does not *run* the code, it only provides analysis (errors and /// warnings) of the compiler. - pub fn compile_only(mut self, code: &str, location: Option<PathBuf>) -> EvaluationResult { + pub fn compile_only( + mut self, + code: impl AsRef<str>, + location: Option<PathBuf>, + ) -> EvaluationResult { let mut result = EvaluationResult::default(); let source = self.source_map(); @@ -188,14 +192,14 @@ impl<'co, 'ro> Evaluation<'co, 'ro> { .map(|p| p.to_string_lossy().to_string()) .unwrap_or_else(|| "[code]".into()); - let file = source.add_file(location_str, code.into()); + let file = source.add_file(location_str, code.as_ref().to_string()); let mut noop_observer = observer::NoOpObserver::default(); let compiler_observer = self.compiler_observer.take().unwrap_or(&mut noop_observer); parse_compile_internal( &mut result, - code, + code.as_ref(), file, location, source, @@ -211,7 +215,11 @@ impl<'co, 'ro> Evaluation<'co, 'ro> { /// Evaluate the provided source code, at an optional location of the source /// code (i.e. path to the file it was read from; used for error reporting, /// and for resolving relative paths in impure functions) - pub fn evaluate(mut self, code: &str, location: Option<PathBuf>) -> EvaluationResult { + pub fn evaluate( + mut self, + code: impl AsRef<str>, + location: Option<PathBuf>, + ) -> EvaluationResult { let mut result = EvaluationResult::default(); let source = self.source_map(); @@ -220,7 +228,7 @@ impl<'co, 'ro> Evaluation<'co, 'ro> { .map(|p| p.to_string_lossy().to_string()) .unwrap_or_else(|| "[code]".into()); - let file = source.add_file(location_str, code.into()); + let file = source.add_file(location_str, code.as_ref().to_string()); let mut noop_observer = observer::NoOpObserver::default(); let compiler_observer = self.compiler_observer.take().unwrap_or(&mut noop_observer); @@ -232,7 +240,7 @@ impl<'co, 'ro> Evaluation<'co, 'ro> { let (lambda, globals) = match parse_compile_internal( &mut result, - code, + code.as_ref(), file.clone(), location, source, diff --git a/tvix/eval/src/tests/mod.rs b/tvix/eval/src/tests/mod.rs index 7ec702883465..af0a160f8917 100644 --- a/tvix/eval/src/tests/mod.rs +++ b/tvix/eval/src/tests/mod.rs @@ -57,7 +57,7 @@ fn eval_test(code_path: &str, expect_success: bool) { eval.strict = true; eval.builtins.extend(mock_builtins::builtins()); - let result = eval.evaluate(&code, Some(code_path.into())); + let result = eval.evaluate(code, Some(code_path.into())); let failed = match result.value { Some(Value::Catchable(_)) => true, _ => !result.errors.is_empty(), |