From f00a27a38feda081f358166e19bdd1fd0c49a65b Mon Sep 17 00:00:00 2001 From: Rerumu Date: Wed, 17 Nov 2021 21:43:43 -0500 Subject: [PATCH] Refactor import order --- src/backend/edition/data.rs | 6 ++++-- src/backend/edition/luajit.rs | 6 ++++-- src/backend/edition/luau.rs | 6 ++++-- src/backend/translation/level_1.rs | 29 ++++++++++++++++++++++++--- src/backend/translation/level_2.rs | 32 +++++------------------------- src/backend/translation/level_3.rs | 9 ++++++--- src/data.rs | 6 ++++-- src/main.rs | 2 +- 8 files changed, 54 insertions(+), 42 deletions(-) diff --git a/src/backend/edition/data.rs b/src/backend/edition/data.rs index f22a982..88762c9 100644 --- a/src/backend/edition/data.rs +++ b/src/backend/edition/data.rs @@ -1,7 +1,9 @@ -use super::{luajit::LuaJIT, luau::Luau}; -use crate::backend::helper::writer::Writer; use std::{fmt::Display, io::Result}; +use crate::backend::helper::writer::Writer; + +use super::{luajit::LuaJIT, luau::Luau}; + pub struct Infix { rhs: &'static str, inner: T, diff --git a/src/backend/edition/luajit.rs b/src/backend/edition/luajit.rs index e2c3d35..4e52983 100644 --- a/src/backend/edition/luajit.rs +++ b/src/backend/edition/luajit.rs @@ -1,7 +1,9 @@ -use super::data::{Edition, Infix}; -use crate::backend::helper::writer::Writer; use std::io::Result; +use crate::backend::helper::writer::Writer; + +use super::data::{Edition, Infix}; + pub struct LuaJIT; impl Edition for LuaJIT { diff --git a/src/backend/edition/luau.rs b/src/backend/edition/luau.rs index 58419d2..1a5f338 100644 --- a/src/backend/edition/luau.rs +++ b/src/backend/edition/luau.rs @@ -1,7 +1,9 @@ -use super::data::{Edition, Infix}; -use crate::backend::helper::writer::Writer; use std::io::Result; +use crate::backend::helper::writer::Writer; + +use super::data::{Edition, Infix}; + pub struct Luau; impl Edition for Luau { diff --git a/src/backend/translation/level_1.rs b/src/backend/translation/level_1.rs index 421b8f3..7c6d770 100644 --- a/src/backend/translation/level_1.rs +++ b/src/backend/translation/level_1.rs @@ -1,4 +1,7 @@ -use super::level_2::list_to_range; +use std::{fmt::Display, io::Result, ops::Range}; + +use parity_wasm::elements::{BrTableData, Instruction}; + use crate::{ backend::{ edition::data::Edition, @@ -6,8 +9,28 @@ use crate::{ }, data::{Arity, Code, Module}, }; -use parity_wasm::elements::{BrTableData, Instruction}; -use std::{fmt::Display, io::Result}; + +pub fn list_to_range(list: &[u32]) -> Vec<(Range, u32)> { + let mut result = Vec::new(); + let mut index = 0; + + while index < list.len() { + let start = index; + + loop { + index += 1; + + // if end of list or next value is not equal, break + if index == list.len() || list[index - 1] != list[index] { + break; + } + } + + result.push((start..index, list[start])); + } + + result +} #[derive(PartialEq)] pub enum Label { diff --git a/src/backend/translation/level_2.rs b/src/backend/translation/level_2.rs index fca4ebb..3d8ad87 100644 --- a/src/backend/translation/level_2.rs +++ b/src/backend/translation/level_2.rs @@ -1,4 +1,7 @@ -use super::level_1::Body; +use std::io::{Result, Write}; + +use parity_wasm::elements::Instruction; + use crate::{ backend::{ edition::data::Edition, @@ -6,33 +9,8 @@ use crate::{ }, data::Module, }; -use parity_wasm::elements::Instruction; -use std::{ - io::{Result, Write}, - ops::Range, -}; -pub fn list_to_range(list: &[u32]) -> Vec<(Range, u32)> { - let mut result = Vec::new(); - let mut index = 0; - - while index < list.len() { - let start = index; - - loop { - index += 1; - - // if end of list or next value is not equal, break - if index == list.len() || list[index - 1] != list[index] { - break; - } - } - - result.push((start..index, list[start])); - } - - result -} +use super::level_1::Body; pub fn gen_init_expression(code: &[Instruction], w: Writer) -> Result<()> { assert!(code.len() == 2); diff --git a/src/backend/translation/level_3.rs b/src/backend/translation/level_3.rs index d352cc0..7318c66 100755 --- a/src/backend/translation/level_3.rs +++ b/src/backend/translation/level_3.rs @@ -1,10 +1,13 @@ -use super::level_2::{gen_function, gen_init_expression}; +use std::io::Result; + +use parity_wasm::elements::{External, ImportCountType, Internal, ResizableLimits}; + use crate::{ backend::{edition::data::Edition, helper::writer::Writer}, data::Module, }; -use parity_wasm::elements::{External, ImportCountType, Internal, ResizableLimits}; -use std::io::Result; + +use super::level_2::{gen_function, gen_init_expression}; const RUNTIME_DATA: &str = " local add = rt.add diff --git a/src/data.rs b/src/data.rs index 69b449e..f702b80 100755 --- a/src/data.rs +++ b/src/data.rs @@ -1,8 +1,10 @@ -use crate::backend::helper::writer::ordered_iter; +use std::{borrow::Cow, convert::TryInto}; + use parity_wasm::elements::{ External, FunctionType, ImportEntry, Instruction, Local, Module as WasmModule, Type, }; -use std::{borrow::Cow, convert::TryInto}; + +use crate::backend::helper::writer::ordered_iter; pub struct Code<'a> { pub num_local: u32, diff --git a/src/main.rs b/src/main.rs index 883b9be..e0faaa3 100755 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ use backend::{edition::data::from_string, translation::level_3}; use data::Module; -use parity_wasm::elements::deserialize_file; +use parity_wasm::deserialize_file; mod backend; mod data;