refactor(vm): cleanup, trait docs, reenable interpreter tests
This commit is contained in:
@@ -52,7 +52,7 @@ pub fn generate(
|
||||
let enums_files = enums::generate(&pedia, &enums, workspace)?;
|
||||
eprintln!("Formatting generated files...");
|
||||
for file in &enums_files {
|
||||
prepend_generated_comment_and_format(file)?;
|
||||
prepend_generated_comment_and_format(file, "enums")?;
|
||||
}
|
||||
return Ok(());
|
||||
}
|
||||
@@ -61,18 +61,18 @@ pub fn generate(
|
||||
eprintln!("generating database...");
|
||||
|
||||
let database_files = database::generate_database(&pedia, &enums, workspace)?;
|
||||
generated_files.extend(database_files);
|
||||
generated_files.extend(database_files.into_iter().map(|path| (path, "database")));
|
||||
}
|
||||
|
||||
if modules.contains(&"instructions") {
|
||||
eprintln!("generating instructions...");
|
||||
let inst_files = instructions::generate_instructions(&pedia, workspace)?;
|
||||
generated_files.extend(inst_files);
|
||||
generated_files.extend(inst_files.into_iter().map(|path| (path, "instructions")));
|
||||
}
|
||||
|
||||
eprintln!("Formatting generated files...");
|
||||
for file in &generated_files {
|
||||
prepend_generated_comment_and_format(file)?;
|
||||
for (file, module) in &generated_files {
|
||||
prepend_generated_comment_and_format(file, module)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
@@ -98,29 +98,33 @@ fn format_rust(content: impl ToTokens) -> color_eyre::Result<String> {
|
||||
Ok(prettyplease::unparse(&content))
|
||||
}
|
||||
|
||||
fn prepend_generated_comment_and_format(file_path: &std::path::Path) -> color_eyre::Result<()> {
|
||||
fn prepend_generated_comment_and_format(file_path: &std::path::Path, module: &str) -> color_eyre::Result<()> {
|
||||
use std::io::Write;
|
||||
let tmp_path = file_path.with_extension("rs.tmp");
|
||||
{
|
||||
let mut tmp = std::fs::File::create(&tmp_path)?;
|
||||
let src = syn::parse_file(&std::fs::read_to_string(file_path)?)?;
|
||||
|
||||
let formated = format_rust(quote::quote! {
|
||||
// =================================================
|
||||
// !! <-----> DO NOT MODIFY <-----> !!
|
||||
//
|
||||
// This module was automatically generated by an
|
||||
// xtask
|
||||
//
|
||||
// run `cargo xtask generate` from the workspace
|
||||
// to regenerate
|
||||
//
|
||||
// =================================================
|
||||
let formated = format_rust(src)?;
|
||||
|
||||
#src
|
||||
})?;
|
||||
|
||||
write!(&mut tmp, "{formated}")?;
|
||||
write!(&mut tmp, "\
|
||||
// =================================================\n\
|
||||
// !! <-----> DO NOT MODIFY <-----> !!\n\
|
||||
//\n\
|
||||
// This module was automatically generated by an\n\
|
||||
// xtask\n\
|
||||
//\n\
|
||||
// run\n\
|
||||
//\n\
|
||||
// `cargo xtask generate -m {module}` \n\
|
||||
//\n\
|
||||
// from the workspace to regenerate\n\
|
||||
//\n\
|
||||
// =================================================\n\
|
||||
\n\
|
||||
{formated}\
|
||||
"
|
||||
)?;
|
||||
}
|
||||
std::fs::remove_file(file_path)?;
|
||||
std::fs::rename(&tmp_path, file_path)?;
|
||||
|
||||
@@ -229,9 +229,9 @@ fn write_prefab_map<T: std::io::Write>(
|
||||
writer,
|
||||
"{}",
|
||||
quote! {
|
||||
use crate::enums::script_enums::*;
|
||||
use crate::enums::basic_enums::*;
|
||||
use crate::enums::{MemoryAccess, ConnectionType, ConnectionRole};
|
||||
use crate::enums::script::*;
|
||||
use crate::enums::basic::*;
|
||||
use crate::enums::{MemoryAccess, ConnectionType, ConnectionRole, MachineTier};
|
||||
use crate::templates::*;
|
||||
}
|
||||
)?;
|
||||
@@ -241,10 +241,7 @@ fn write_prefab_map<T: std::io::Write>(
|
||||
let hash = prefab.prefab().prefab_hash;
|
||||
let obj = syn::parse_str::<syn::Expr>(&uneval::to_string(prefab)?)?;
|
||||
let entry = quote! {
|
||||
(
|
||||
#hash,
|
||||
#obj.into(),
|
||||
)
|
||||
map.insert(#hash, #obj.into());
|
||||
};
|
||||
Ok(entry)
|
||||
})
|
||||
@@ -255,9 +252,9 @@ fn write_prefab_map<T: std::io::Write>(
|
||||
quote! {
|
||||
pub fn build_prefab_database() -> std::collections::BTreeMap<i32, crate::templates::ObjectTemplate> {
|
||||
#[allow(clippy::unreadable_literal)]
|
||||
std::collections::BTreeMap::from([
|
||||
#(#entries),*
|
||||
])
|
||||
let mut map: std::collections::BTreeMap<i32, crate::templates::ObjectTemplate> = std::collections::BTreeMap::new();
|
||||
#(#entries)*
|
||||
map
|
||||
}
|
||||
},
|
||||
)?;
|
||||
|
||||
@@ -433,8 +433,7 @@ where
|
||||
"{}",
|
||||
quote! {
|
||||
#[derive(#(#derives),*)]
|
||||
#[cfg_attr(feature = "tsify", derive(Tsify))]
|
||||
#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))]
|
||||
#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
|
||||
#additional_strum
|
||||
#[repr(#repr)]
|
||||
pub enum #name {
|
||||
|
||||
@@ -13,7 +13,8 @@ pub fn generate_instructions(
|
||||
.join("ic10emu")
|
||||
.join("src")
|
||||
.join("vm")
|
||||
.join("instructions");
|
||||
.join("instructions")
|
||||
.join("codegen");
|
||||
if !instructions_path.exists() {
|
||||
std::fs::create_dir(&instructions_path)?;
|
||||
}
|
||||
@@ -84,8 +85,7 @@ fn write_instructions_enum<T: std::io::Write>(
|
||||
"{}",
|
||||
quote::quote! {#[derive(Debug, Display, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Serialize, Deserialize)]
|
||||
#[derive(EnumIter, EnumString, EnumProperty, FromRepr)]
|
||||
#[cfg_attr(feature = "tsify", derive(Tsify))]
|
||||
#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))]
|
||||
#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
|
||||
#[strum(use_phf, serialize_all = "lowercase")]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum InstructionOp {
|
||||
|
||||
Reference in New Issue
Block a user