diff --git a/TODO.md b/TODO.md index 4cc369d..a0f51c0 100644 --- a/TODO.md +++ b/TODO.md @@ -42,3 +42,5 @@ struct CompilerPass { } -change "Type...." names in parser.rs to "Anno..." for non-collision with names in typechecking.rs + +-get rid of code pertaining to compilation specifically, have a more generation notion of "execution type" diff --git a/schala-lib/src/language.rs b/schala-lib/src/language.rs index f554b4b..e44fd18 100644 --- a/schala-lib/src/language.rs +++ b/schala-lib/src/language.rs @@ -18,7 +18,8 @@ pub struct EvalOptions { #[derive(Debug, Default)] pub struct LanguageOutput { output: String, - artifacts: Vec + artifacts: Vec, + failed: bool, } impl LanguageOutput { @@ -91,6 +92,9 @@ impl TraceArtifact { pub trait ProgrammingLanguageInterface { fn evaluate_in_repl(&mut self, input: &str, eval_options: &EvalOptions) -> LanguageOutput; + fn evaluate_noninteractive(&mut self, input: &str, eval_options: &EvalOptions) -> LanguageOutput { + self.evaluate_in_repl(input, eval_options) + } fn get_language_name(&self) -> String; fn get_source_file_suffix(&self) -> String; fn compile(&mut self, _input: &str) -> LLVMCodeString { diff --git a/schala-lib/src/lib.rs b/schala-lib/src/lib.rs index 260183a..573a410 100644 --- a/schala-lib/src/lib.rs +++ b/schala-lib/src/lib.rs @@ -197,8 +197,8 @@ impl Repl { fn input_handler(&mut self, input: &str) -> String { let ref mut language = self.languages[self.current_language_index]; - let interpretor_output = language.evaluate_in_repl(input, &self.options); - interpretor_output.to_string() + let interpreter_output = language.evaluate_in_repl(input, &self.options); + interpreter_output.to_string() } fn handle_interpreter_directive(&mut self, input: &str) -> bool {