about summary refs log tree commit diff
path: root/users/grfn/achilles/src/compiler.rs
diff options
context:
space:
mode:
Diffstat (limited to 'users/grfn/achilles/src/compiler.rs')
-rw-r--r--users/grfn/achilles/src/compiler.rs89
1 files changed, 0 insertions, 89 deletions
diff --git a/users/grfn/achilles/src/compiler.rs b/users/grfn/achilles/src/compiler.rs
deleted file mode 100644
index 45b215473d..0000000000
--- a/users/grfn/achilles/src/compiler.rs
+++ /dev/null
@@ -1,89 +0,0 @@
-use std::fmt::{self, Display};
-use std::path::Path;
-use std::str::FromStr;
-use std::{fs, result};
-
-use clap::Clap;
-use test_strategy::Arbitrary;
-
-use crate::codegen::{self, Codegen};
-use crate::common::Result;
-use crate::passes::hir::{monomorphize, strip_positive_units};
-use crate::{parser, tc};
-
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Arbitrary)]
-pub enum OutputFormat {
-    LLVM,
-    Bitcode,
-}
-
-impl Default for OutputFormat {
-    fn default() -> Self {
-        Self::Bitcode
-    }
-}
-
-impl FromStr for OutputFormat {
-    type Err = String;
-
-    fn from_str(s: &str) -> result::Result<Self, Self::Err> {
-        match s {
-            "llvm" => Ok(Self::LLVM),
-            "binary" => Ok(Self::Bitcode),
-            _ => Err(format!(
-                "Invalid output format {}, expected one of {{llvm, binary}}",
-                s
-            )),
-        }
-    }
-}
-
-impl Display for OutputFormat {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        match self {
-            OutputFormat::LLVM => f.write_str("llvm"),
-            OutputFormat::Bitcode => f.write_str("binary"),
-        }
-    }
-}
-
-#[derive(Clap, Debug, PartialEq, Eq, Default)]
-pub struct CompilerOptions {
-    #[clap(long, short = 'f', default_value)]
-    format: OutputFormat,
-}
-
-pub fn compile_file(input: &Path, output: &Path, options: &CompilerOptions) -> Result<()> {
-    let src = fs::read_to_string(input)?;
-    let (_, decls) = parser::toplevel(&src)?;
-    let mut decls = tc::typecheck_toplevel(decls)?;
-    monomorphize::run_toplevel(&mut decls);
-    strip_positive_units::run_toplevel(&mut decls);
-
-    let context = codegen::Context::create();
-    let mut codegen = Codegen::new(
-        &context,
-        &input
-            .file_stem()
-            .map_or("UNKNOWN".to_owned(), |s| s.to_string_lossy().into_owned()),
-    );
-    for decl in &decls {
-        codegen.codegen_decl(decl)?;
-    }
-    match options.format {
-        OutputFormat::LLVM => codegen.print_to_file(output)?,
-        OutputFormat::Bitcode => codegen.binary_to_file(output)?,
-    }
-    Ok(())
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-    use test_strategy::proptest;
-
-    #[proptest]
-    fn output_format_display_from_str_round_trip(of: OutputFormat) {
-        assert_eq!(OutputFormat::from_str(&of.to_string()), Ok(of));
-    }
-}