Sha256: d0a4eb3a054fe5ccf399a791ebb375150e00cd25bad2e2bf921cdd407214e196

Contents?: true

Size: 920 Bytes

Versions: 3

Compression:

Stored size: 920 Bytes

Contents

//! Compilation process, from AST to Sema to Sequences of Insts.

use std::path::Path;

use crate::error::Errors;
use crate::{ast, codegen, sema, trie};

/// Compile the given AST definitions into Rust source code.
pub fn compile(defs: &ast::Defs, options: &codegen::CodegenOptions) -> Result<String, Errors> {
    let mut typeenv = sema::TypeEnv::from_ast(defs)?;
    let termenv = sema::TermEnv::from_ast(&mut typeenv, defs)?;
    crate::overlap::check(&mut typeenv, &termenv)?;
    let tries = trie::build_tries(&termenv);
    Ok(codegen::codegen(&typeenv, &termenv, &tries, options))
}

/// Compile the given files into Rust source code.
pub fn from_files<P: AsRef<Path>>(
    inputs: impl IntoIterator<Item = P>,
    options: &codegen::CodegenOptions,
) -> Result<String, Errors> {
    let lexer = crate::lexer::Lexer::from_files(inputs)?;
    let defs = crate::parser::parse(lexer)?;
    compile(&defs, options)
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
wasmtime-5.0.0 ./ext/cargo-vendor/cranelift-isle-0.92.0/src/compile.rs
wasmtime-0.4.1 ./ext/cargo-vendor/cranelift-isle-0.91.0/src/compile.rs
wasmtime-0.4.0 ./ext/cargo-vendor/cranelift-isle-0.91.0/src/compile.rs