Parcourir la source

Rust 2018 edition

Signed-off-by: Sean Young <sean@mess.org>
Sean Young il y a 5 ans
Parent
commit
f6baf16306
65 fichiers modifiés avec 130 ajouts et 207 suppressions
  1. 1 0
      Cargo.toml
  2. 0 3
      build.rs
  3. 2 2
      src/abi/ethereum.rs
  4. 2 2
      src/abi/mod.rs
  5. 3 3
      src/abi/substrate.rs
  6. 0 5
      src/bin/solang.rs
  7. 5 6
      src/codegen/cfg.rs
  8. 5 5
      src/codegen/expression.rs
  9. 1 1
      src/codegen/mod.rs
  10. 3 3
      src/codegen/statements.rs
  11. 2 2
      src/codegen/storage.rs
  12. 1 1
      src/emit/ethabiencoder.rs
  13. 3 3
      src/emit/ewasm.rs
  14. 3 3
      src/emit/generic.rs
  15. 6 7
      src/emit/mod.rs
  16. 3 3
      src/emit/sabre.rs
  17. 3 3
      src/emit/solana.rs
  18. 3 4
      src/emit/substrate.rs
  19. 0 20
      src/lib.rs
  20. 1 2
      src/linker/wasm.rs
  21. 4 4
      src/parser/mod.rs
  22. 2 2
      src/parser/solidity.lalrpop
  23. 5 5
      src/parser/solidity.rs
  24. 3 3
      src/sema/ast.rs
  25. 1 1
      src/sema/builtin.rs
  26. 2 2
      src/sema/contracts.rs
  27. 2 2
      src/sema/diagnostics.rs
  28. 1 1
      src/sema/eval.rs
  29. 1 2
      src/sema/expression.rs
  30. 2 2
      src/sema/functions.rs
  31. 3 3
      src/sema/mod.rs
  32. 1 1
      src/sema/mutability.rs
  33. 2 3
      src/sema/printer.rs
  34. 1 1
      src/sema/statements.rs
  35. 1 1
      src/sema/symtable.rs
  36. 1 1
      src/sema/tags.rs
  37. 2 2
      src/sema/types.rs
  38. 1 1
      src/sema/variables.rs
  39. 0 2
      tests/builtins.rs
  40. 0 8
      tests/ewasm.rs
  41. 0 8
      tests/solana.rs
  42. 1 40
      tests/substrate.rs
  43. 1 1
      tests/substrate_tests/arrays.rs
  44. 1 1
      tests/substrate_tests/builtins.rs
  45. 1 1
      tests/substrate_tests/calls.rs
  46. 1 1
      tests/substrate_tests/contracts.rs
  47. 1 1
      tests/substrate_tests/enums.rs
  48. 1 2
      tests/substrate_tests/events.rs
  49. 1 1
      tests/substrate_tests/expressions.rs
  50. 1 1
      tests/substrate_tests/first.rs
  51. 1 3
      tests/substrate_tests/function_types.rs
  52. 1 1
      tests/substrate_tests/functions.rs
  53. 1 3
      tests/substrate_tests/imports.rs
  54. 1 2
      tests/substrate_tests/inheritance.rs
  55. 1 2
      tests/substrate_tests/libraries.rs
  56. 1 3
      tests/substrate_tests/loops.rs
  57. 1 1
      tests/substrate_tests/mappings.rs
  58. 25 0
      tests/substrate_tests/mod.rs
  59. 1 2
      tests/substrate_tests/modifier.rs
  60. 1 1
      tests/substrate_tests/primitives.rs
  61. 1 1
      tests/substrate_tests/strings.rs
  62. 1 1
      tests/substrate_tests/structs.rs
  63. 1 1
      tests/substrate_tests/tags.rs
  64. 1 1
      tests/substrate_tests/value.rs
  65. 1 3
      tests/substrate_tests/variables.rs

+ 1 - 0
Cargo.toml

@@ -8,6 +8,7 @@ license = "Apache-2.0 OR MIT"
 build = "build.rs"
 description = "Solang Solidity Compiler"
 keywords = [ "solidity", "compiler", "ewasm", "llvm", "substrate" ]
+edition = "2018"
 
 [build-dependencies]
 lalrpop = "0.19"

+ 0 - 3
build.rs

@@ -1,6 +1,3 @@
-extern crate cc;
-extern crate lalrpop;
-
 use std::process::Command;
 
 fn main() {

+ 2 - 2
src/abi/ethereum.rs

@@ -1,6 +1,6 @@
 // ethereum style ABIs
-use parser::pt;
-use sema::ast::{Namespace, Parameter, Type};
+use crate::parser::pt;
+use crate::sema::ast::{Namespace, Parameter, Type};
 use serde::Serialize;
 
 #[derive(Serialize)]

+ 2 - 2
src/abi/mod.rs

@@ -1,5 +1,5 @@
-use sema::ast::Namespace;
-use Target;
+use crate::sema::ast::Namespace;
+use crate::Target;
 
 pub mod ethereum;
 pub mod substrate;

+ 3 - 3
src/abi/substrate.rs

@@ -1,9 +1,9 @@
 // Parity Substrate style ABIs/Abi
+use crate::parser::pt;
+use crate::sema::ast;
+use crate::sema::tags::render;
 use contract_metadata::*;
 use num_traits::ToPrimitive;
-use parser::pt;
-use sema::ast;
-use sema::tags::render;
 use semver::Version;
 use serde::{Deserialize, Serialize};
 use serde_json::{Map, Value};

+ 0 - 5
src/bin/solang.rs

@@ -1,8 +1,3 @@
-extern crate clap;
-extern crate handlebars;
-extern crate serde;
-extern crate solang;
-
 use clap::{App, Arg, ArgMatches};
 use serde::Serialize;
 use std::collections::HashMap;

+ 5 - 6
src/codegen/cfg.rs

@@ -6,14 +6,13 @@ use std::str;
 
 use super::expression::expression;
 use super::statements::{statement, LoopScopes};
-use hex;
-use parser::pt;
-use sema::ast::{
+use crate::parser::pt;
+use crate::sema::ast::{
     CallTy, Contract, Expression, Function, Namespace, Parameter, StringLocation, Type,
 };
-use sema::contracts::{collect_base_args, visit_bases};
-use sema::symtable::Symtable;
-use Target;
+use crate::sema::contracts::{collect_base_args, visit_bases};
+use crate::sema::symtable::Symtable;
+use crate::Target;
 
 #[allow(clippy::large_enum_variant)]
 #[derive(Clone)]

+ 5 - 5
src/codegen/expression.rs

@@ -1,17 +1,17 @@
 use super::cfg::{ControlFlowGraph, HashTy, Instr, InternalCallTy, Vartable};
 use super::storage::{array_offset, array_pop, array_push, bytes_pop, bytes_push};
+use crate::parser::pt;
+use crate::sema::ast::{Builtin, CallTy, Expression, Namespace, Parameter, StringLocation, Type};
+use crate::sema::eval::eval_const_number;
+use crate::sema::expression::{cast_shift_arg, try_bigint_to_expression, try_cast};
+use crate::Target;
 use num_bigint::BigInt;
 use num_traits::FromPrimitive;
 use num_traits::One;
 use num_traits::ToPrimitive;
 use num_traits::Zero;
-use parser::pt;
-use sema::ast::{Builtin, CallTy, Expression, Namespace, Parameter, StringLocation, Type};
-use sema::eval::eval_const_number;
-use sema::expression::{cast_shift_arg, try_bigint_to_expression, try_cast};
 use std::collections::HashSet;
 use std::ops::Mul;
-use Target;
 
 pub fn expression(
     expr: &Expression,

+ 1 - 1
src/codegen/mod.rs

@@ -5,7 +5,7 @@ mod storage;
 
 use self::cfg::{ControlFlowGraph, Instr, Vartable};
 use self::expression::expression;
-use sema::ast::Namespace;
+use crate::sema::ast::Namespace;
 
 /// The contracts are fully resolved but they do not have any a CFG which is needed for the llvm code emitter
 /// not all contracts need a cfg; only those for which we need the

+ 3 - 3
src/codegen/statements.rs

@@ -3,11 +3,11 @@ use std::collections::LinkedList;
 
 use super::cfg::{ControlFlowGraph, Instr, Vartable};
 use super::expression::{assign_single, emit_function_call, expression};
-use parser::pt;
-use sema::ast::{
+use crate::parser::pt;
+use crate::sema::ast::{
     CallTy, DestructureField, Expression, Function, Namespace, Parameter, Statement, Type,
 };
-use sema::expression::try_cast;
+use crate::sema::expression::try_cast;
 
 /// Resolve a statement, which might be a block of statements or an entire body of a function
 pub fn statement(

+ 2 - 2
src/codegen/storage.rs

@@ -5,8 +5,8 @@ use num_traits::Zero;
 
 use super::cfg::{ControlFlowGraph, Instr, Vartable};
 use super::expression::expression;
-use parser::pt;
-use sema::ast::{Expression, Namespace, Type};
+use crate::parser::pt;
+use crate::sema::ast::{Expression, Namespace, Type};
 
 /// Given a storage slot which is the start of the array, calculate the
 /// offset of the array element. This function exists to avoid doing

+ 1 - 1
src/emit/ethabiencoder.rs

@@ -1,9 +1,9 @@
+use crate::sema::ast;
 use inkwell::types::BasicType;
 use inkwell::values::{BasicValueEnum, FunctionValue, IntValue, PointerValue};
 use inkwell::AddressSpace;
 use inkwell::IntPredicate;
 use num_traits::ToPrimitive;
-use sema::ast;
 
 use super::Contract;
 

+ 3 - 3
src/emit/ewasm.rs

@@ -1,6 +1,6 @@
-use codegen::cfg::HashTy;
-use parser::pt;
-use sema::ast;
+use crate::codegen::cfg::HashTy;
+use crate::parser::pt;
+use crate::sema::ast;
 use std::cell::RefCell;
 use std::collections::HashMap;
 use std::str;

+ 3 - 3
src/emit/generic.rs

@@ -1,6 +1,6 @@
-use codegen::cfg::HashTy;
-use parser::pt;
-use sema::ast;
+use crate::codegen::cfg::HashTy;
+use crate::parser::pt;
+use crate::sema::ast;
 use std::collections::HashMap;
 use std::str;
 

+ 6 - 7
src/emit/mod.rs

@@ -1,7 +1,6 @@
-use hex;
-use parser::pt;
-use sema::ast;
-use sema::ast::{Builtin, Expression, StringLocation};
+use crate::parser::pt;
+use crate::sema::ast;
+use crate::sema::ast::{Builtin, Expression, StringLocation};
 use std::cell::RefCell;
 use std::path::Path;
 use std::str;
@@ -12,6 +11,7 @@ use num_traits::ToPrimitive;
 use std::collections::HashMap;
 use std::collections::VecDeque;
 
+use crate::Target;
 use inkwell::builder::Builder;
 use inkwell::context::Context;
 use inkwell::memory_buffer::MemoryBuffer;
@@ -26,7 +26,6 @@ use inkwell::values::{
 use inkwell::AddressSpace;
 use inkwell::IntPredicate;
 use inkwell::OptimizationLevel;
-use Target;
 
 mod ethabiencoder;
 mod ewasm;
@@ -35,8 +34,8 @@ mod sabre;
 mod solana;
 mod substrate;
 
-use codegen::cfg::{ControlFlowGraph, HashTy, Instr, InternalCallTy, Storage};
-use linker::link;
+use crate::codegen::cfg::{ControlFlowGraph, HashTy, Instr, InternalCallTy, Storage};
+use crate::linker::link;
 
 lazy_static::lazy_static! {
     static ref LLVM_INIT: () = {

+ 3 - 3
src/emit/sabre.rs

@@ -1,6 +1,6 @@
-use codegen::cfg::HashTy;
-use parser::pt;
-use sema::ast;
+use crate::codegen::cfg::HashTy;
+use crate::parser::pt;
+use crate::sema::ast;
 use std::collections::HashMap;
 use std::str;
 

+ 3 - 3
src/emit/solana.rs

@@ -1,6 +1,6 @@
-use codegen::cfg::HashTy;
-use parser::pt;
-use sema::ast;
+use crate::codegen::cfg::HashTy;
+use crate::parser::pt;
+use crate::sema::ast;
 use std::collections::HashMap;
 use std::str;
 

+ 3 - 4
src/emit/substrate.rs

@@ -1,5 +1,6 @@
-use blake2_rfc;
-use codegen::cfg::HashTy;
+use crate::codegen::cfg::HashTy;
+use crate::parser::pt;
+use crate::sema::ast;
 use inkwell::context::Context;
 use inkwell::module::Linkage;
 use inkwell::types::{BasicType, IntType};
@@ -8,8 +9,6 @@ use inkwell::AddressSpace;
 use inkwell::IntPredicate;
 use inkwell::OptimizationLevel;
 use num_traits::ToPrimitive;
-use parser::pt;
-use sema::ast;
 use std::collections::HashMap;
 
 use super::{Contract, TargetRuntime, Variable};

+ 0 - 20
src/lib.rs

@@ -1,23 +1,3 @@
-extern crate blake2_rfc;
-extern crate clap;
-extern crate contract_metadata;
-extern crate hex;
-extern crate inkwell;
-extern crate lalrpop_util;
-extern crate lazy_static;
-extern crate num_bigint;
-extern crate num_derive;
-extern crate num_traits;
-extern crate parity_wasm;
-extern crate phf;
-extern crate semver;
-extern crate serde;
-extern crate serde_derive;
-extern crate serde_json;
-extern crate tempfile;
-extern crate tiny_keccak;
-extern crate unicode_xid;
-
 pub mod abi;
 pub mod codegen;
 mod emit;

+ 1 - 2
src/linker/wasm.rs

@@ -1,4 +1,4 @@
-use parity_wasm;
+use crate::Target;
 use parity_wasm::builder;
 use parity_wasm::elements::{InitExpr, Instruction, Module};
 use std::ffi::CString;
@@ -6,7 +6,6 @@ use std::fs::File;
 use std::io::Read;
 use std::io::Write;
 use tempfile::tempdir;
-use Target;
 
 pub fn link(input: &[u8], name: &str, target: Target) -> Vec<u8> {
     if target == Target::Generic {

+ 4 - 4
src/parser/mod.rs

@@ -6,8 +6,8 @@ pub mod pt;
 #[cfg_attr(rustfmt, rustfmt_skip)]
 pub mod solidity;
 
+use crate::sema::ast::Diagnostic;
 use lalrpop_util::ParseError;
-use sema::ast::Diagnostic;
 
 pub fn parse(src: &str, file_no: usize) -> Result<pt::SourceUnit, Vec<Diagnostic>> {
     // parse phase
@@ -62,9 +62,9 @@ pub fn box_option<T>(o: Option<T>) -> Option<Box<T>> {
 
 #[cfg(test)]
 mod test {
-    use parser::lexer;
-    use parser::pt::*;
-    use parser::solidity;
+    use super::lexer;
+    use super::pt::*;
+    use super::solidity;
 
     #[test]
     fn parse_test() {

+ 2 - 2
src/parser/solidity.lalrpop

@@ -2,10 +2,10 @@ use std::str::FromStr;
 use num_bigint::BigInt;
 use num_bigint::BigUint;
 use num_traits::Pow;
-use parser::pt::*;
 use std::ops::Mul;
-use parser::box_option;
 use lalrpop_util::ParseError;
+use super::pt::*;
+use super::box_option;
 use super::lexer::{Token, LexicalError, CommentType};
 use super::doc::tags;
 

+ 5 - 5
src/parser/solidity.rs

@@ -1,13 +1,13 @@
 // auto-generated: "lalrpop 0.19.1"
-// sha256: 6faba038aaa964784befc7cdfcee592dfa40b9a7b44991b5d2641097556174d9
+// sha256: 31898c44ba4b9b8cf6a22ee3d0f821e6c59115a6fccede53c6cb2775f9f
 use std::str::FromStr;
 use num_bigint::BigInt;
 use num_bigint::BigUint;
 use num_traits::Pow;
-use parser::pt::*;
 use std::ops::Mul;
-use parser::box_option;
 use lalrpop_util::ParseError;
+use super::pt::*;
+use super::box_option;
 use super::lexer::{Token, LexicalError, CommentType};
 use super::doc::tags;
 #[allow(unused_extern_crates)]
@@ -23,10 +23,10 @@ mod __parse__SourceUnit {
     use num_bigint::BigInt;
     use num_bigint::BigUint;
     use num_traits::Pow;
-    use parser::pt::*;
     use std::ops::Mul;
-    use parser::box_option;
     use lalrpop_util::ParseError;
+    use super::super::pt::*;
+    use super::super::box_option;
     use super::super::lexer::{Token, LexicalError, CommentType};
     use super::super::doc::tags;
     #[allow(unused_extern_crates)]

+ 3 - 3
src/sema/ast.rs

@@ -1,11 +1,11 @@
 use super::symtable::Symtable;
-use codegen::cfg::ControlFlowGraph;
+use crate::codegen::cfg::ControlFlowGraph;
+use crate::parser::pt;
+use crate::Target;
 use num_bigint::BigInt;
-use parser::pt;
 use std::collections::HashMap;
 use std::fmt;
 use tiny_keccak::{Hasher, Keccak};
-use Target;
 
 #[derive(PartialEq, Clone, Debug)]
 pub enum Type {

+ 1 - 1
src/sema/builtin.rs

@@ -2,10 +2,10 @@ use super::ast::{Builtin, Diagnostic, Expression, Namespace, Type};
 use super::eval::eval_const_number;
 use super::expression::{cast, expression};
 use super::symtable::Symtable;
+use crate::parser::pt;
 use crate::Target;
 use num_bigint::BigInt;
 use num_traits::One;
-use parser::pt;
 
 pub struct Prototype {
     pub builtin: Builtin,

+ 2 - 2
src/sema/contracts.rs

@@ -1,7 +1,7 @@
+use crate::parser::pt;
 use inkwell::OptimizationLevel;
 use num_bigint::BigInt;
 use num_traits::Zero;
-use parser::pt;
 use std::collections::HashMap;
 use std::collections::HashSet;
 use std::iter::FromIterator;
@@ -12,7 +12,7 @@ use super::functions;
 use super::statements;
 use super::symtable::Symtable;
 use super::variables;
-use emit;
+use crate::emit;
 
 impl ast::Contract {
     /// Create a new contract, abstract contract, interface or library

+ 2 - 2
src/sema/diagnostics.rs

@@ -1,6 +1,6 @@
 use super::ast::{Diagnostic, ErrorType, Level, Namespace, Note};
-use file_cache::FileCache;
-use parser::pt::Loc;
+use crate::file_cache::FileCache;
+use crate::parser::pt::Loc;
 use serde::Serialize;
 
 impl Level {

+ 1 - 1
src/sema/eval.rs

@@ -5,7 +5,7 @@ use num_traits::ToPrimitive;
 use num_traits::Zero;
 
 use super::ast::{Diagnostic, Expression, Namespace};
-use parser::pt;
+use crate::parser::pt;
 
 /// Resolve an expression where a compile-time constant is expected
 pub fn eval_const_number(

+ 1 - 2
src/sema/expression.rs

@@ -21,9 +21,8 @@ use super::builtin;
 use super::contracts::{import_library, is_base};
 use super::eval::eval_const_number;
 use super::symtable::Symtable;
+use crate::parser::pt;
 use crate::Target;
-use hex;
-use parser::pt;
 
 impl Expression {
     /// Return the location for this expression

+ 2 - 2
src/sema/functions.rs

@@ -1,8 +1,8 @@
 use super::ast::{Diagnostic, Function, Namespace, Parameter, Symbol, Type};
 use super::contracts::is_base;
 use super::tags::resolve_tags;
-use parser::pt;
-use Target;
+use crate::parser::pt;
+use crate::Target;
 
 /// Resolve function declaration
 pub fn function_decl(

+ 3 - 3
src/sema/mod.rs

@@ -1,9 +1,9 @@
+use crate::parser::{parse, pt};
+use crate::Target;
 use num_bigint::BigInt;
 use num_traits::Signed;
 use num_traits::Zero;
-use parser::{parse, pt};
 use std::collections::HashMap;
-use Target;
 
 mod address;
 pub mod ast;
@@ -26,7 +26,7 @@ use self::eval::eval_const_number;
 use self::expression::expression;
 use self::functions::{resolve_params, resolve_returns};
 use self::symtable::Symtable;
-use file_cache::FileCache;
+use crate::file_cache::FileCache;
 
 pub type ArrayDimension = Option<(pt::Loc, BigInt)>;
 

+ 1 - 1
src/sema/mutability.rs

@@ -1,7 +1,7 @@
 use super::ast::{
     Builtin, DestructureField, Diagnostic, Expression, Function, Namespace, Statement, Type,
 };
-use parser::pt;
+use crate::parser::pt;
 
 /// check state mutablity
 pub fn mutablity(file_no: usize, ns: &mut Namespace) {

+ 2 - 3
src/sema/printer.rs

@@ -1,7 +1,6 @@
 use super::ast::*;
-use hex;
-use parser::pt;
-use Target;
+use crate::parser::pt;
+use crate::Target;
 
 #[derive(Clone)]
 enum Tree {

+ 1 - 1
src/sema/statements.rs

@@ -5,8 +5,8 @@ use super::expression::{
     match_constructor_to_args, named_function_call_expr, new, try_cast,
 };
 use super::symtable::{LoopScopes, Symtable};
+use crate::parser::pt;
 use num_bigint::BigInt;
-use parser::pt;
 use std::collections::HashMap;
 
 pub fn resolve_function_body(

+ 1 - 1
src/sema/symtable.rs

@@ -4,7 +4,7 @@ use std::collections::LinkedList;
 use std::str;
 
 use super::ast::{Diagnostic, Namespace, Type};
-use parser::pt;
+use crate::parser::pt;
 
 #[derive(Clone)]
 pub struct Variable {

+ 1 - 1
src/sema/tags.rs

@@ -1,5 +1,5 @@
 use super::ast::{Diagnostic, Namespace, Parameter, Tag};
-use parser::pt;
+use crate::parser::pt;
 
 /// Resolve the tags for a type
 pub fn resolve_tags(

+ 2 - 2
src/sema/types.rs

@@ -2,12 +2,12 @@ use super::ast::{
     Contract, Diagnostic, EnumDecl, EventDecl, Namespace, Parameter, StructDecl, Symbol, Tag, Type,
 };
 use super::tags::resolve_tags;
+use crate::parser::pt;
+use crate::Target;
 use num_bigint::BigInt;
 use num_traits::One;
-use parser::pt;
 use std::collections::HashMap;
 use std::ops::Mul;
-use Target;
 
 /// List the types which should be resolved later
 pub struct ResolveFields<'a> {

+ 1 - 1
src/sema/variables.rs

@@ -2,7 +2,7 @@ use super::ast::{ContractVariable, Diagnostic, Namespace, Symbol};
 use super::expression::{cast, expression};
 use super::symtable::Symtable;
 use super::tags::resolve_tags;
-use parser::pt;
+use crate::parser::pt;
 
 pub fn contract_variables(
     def: &pt::ContractDefinition,

+ 0 - 2
tests/builtins.rs

@@ -1,5 +1,3 @@
-extern crate solang;
-
 use solang::sema::ast;
 use solang::sema::builtin;
 

+ 0 - 8
tests/ewasm.rs

@@ -1,11 +1,3 @@
-extern crate ethabi;
-extern crate ethereum_types;
-extern crate num_derive;
-extern crate num_traits;
-extern crate rand;
-extern crate solang;
-extern crate wasmi;
-
 use ethabi::{decode, RawLog, Token};
 use num_derive::FromPrimitive;
 use num_traits::FromPrimitive;

+ 0 - 8
tests/solana.rs

@@ -1,11 +1,3 @@
-//
-extern crate byteorder;
-extern crate ethabi;
-extern crate ethereum_types;
-extern crate libc;
-extern crate solana_rbpf;
-extern crate solang;
-
 mod solana_helpers;
 
 use byteorder::{ByteOrder, LittleEndian, WriteBytesExt};

+ 1 - 40
tests/substrate.rs

@@ -1,19 +1,4 @@
 // Create WASM virtual machine like substrate
-extern crate blake2_rfc;
-extern crate ethabi;
-extern crate ethereum_types;
-extern crate num_bigint;
-extern crate num_derive;
-extern crate num_traits;
-extern crate parity_scale_codec;
-extern crate parity_scale_codec_derive;
-extern crate rand;
-extern crate serde_derive;
-extern crate sha2;
-extern crate solang;
-extern crate tiny_keccak;
-extern crate wasmi;
-
 use num_derive::FromPrimitive;
 use num_traits::FromPrimitive;
 use rand::Rng;
@@ -30,31 +15,7 @@ use solang::sema::ast;
 use solang::sema::diagnostics;
 use solang::{compile, Target};
 
-mod substrate_enums;
-
-#[allow(clippy::unreadable_literal, clippy::naive_bytecount)]
-mod substrate_expressions;
-
-mod substrate_arrays;
-mod substrate_builtins;
-mod substrate_calls;
-mod substrate_contracts;
-mod substrate_events;
-mod substrate_first;
-mod substrate_function_types;
-mod substrate_functions;
-mod substrate_imports;
-mod substrate_inheritance;
-mod substrate_libraries;
-mod substrate_loops;
-mod substrate_mappings;
-mod substrate_modifier;
-mod substrate_primitives;
-mod substrate_strings;
-mod substrate_structs;
-mod substrate_tags;
-mod substrate_value;
-mod substrate_variables;
+mod substrate_tests;
 
 type StorageKey = [u8; 32];
 type Address = [u8; 32];

+ 1 - 1
tests/substrate_arrays/mod.rs → tests/substrate_tests/arrays.rs

@@ -2,7 +2,7 @@ use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 use rand::Rng;
 
-use super::{build_solidity, first_error, parse_and_resolve};
+use crate::{build_solidity, first_error, parse_and_resolve};
 use solang::Target;
 
 #[derive(Debug, PartialEq, Encode, Decode)]

+ 1 - 1
tests/substrate_builtins/mod.rs → tests/substrate_tests/builtins.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::{build_solidity, first_error, first_warning, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, first_warning, no_errors, parse_and_resolve};
 use solang::Target;
 
 #[test]

+ 1 - 1
tests/substrate_calls/mod.rs → tests/substrate_tests/calls.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::{build_solidity, first_error, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, no_errors, parse_and_resolve};
 use solang::Target;
 
 #[derive(Debug, PartialEq, Encode, Decode)]

+ 1 - 1
tests/substrate_contracts/mod.rs → tests/substrate_tests/contracts.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::{build_solidity, first_error, first_warning, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, first_warning, no_errors, parse_and_resolve};
 use solang::Target;
 
 #[derive(Debug, PartialEq, Encode, Decode)]

+ 1 - 1
tests/substrate_enums/mod.rs → tests/substrate_tests/enums.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::{build_solidity, first_error, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, no_errors, parse_and_resolve};
 use solang::Target;
 
 #[test]

+ 1 - 2
tests/substrate_events/mod.rs → tests/substrate_tests/events.rs

@@ -1,5 +1,4 @@
-extern crate solang;
-use super::{build_solidity, first_error, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, no_errors, parse_and_resolve};
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 use solang::file_cache::FileCache;

+ 1 - 1
tests/substrate_expressions/mod.rs → tests/substrate_tests/expressions.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::{Decode, Encode};
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::{build_solidity, first_error, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, no_errors, parse_and_resolve};
 use num_bigint::BigInt;
 use num_bigint::Sign;
 use rand::Rng;

+ 1 - 1
tests/substrate_first/mod.rs → tests/substrate_tests/first.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::build_solidity;
+use crate::build_solidity;
 
 #[test]
 fn simple_solidiy_compile_and_run() {

+ 1 - 3
tests/substrate_function_types/mod.rs → tests/substrate_tests/function_types.rs

@@ -1,6 +1,4 @@
-extern crate solang;
-
-use super::{build_solidity, first_error, parse_and_resolve};
+use crate::{build_solidity, first_error, parse_and_resolve};
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 use solang::Target;

+ 1 - 1
tests/substrate_functions/mod.rs → tests/substrate_tests/functions.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::{build_solidity, first_error, first_warning, no_warnings_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, first_warning, no_warnings_errors, parse_and_resolve};
 use solang::Target;
 
 #[test]

+ 1 - 3
tests/substrate_imports/mod.rs → tests/substrate_tests/imports.rs

@@ -1,6 +1,4 @@
-extern crate solang;
-
-use super::{first_error, no_errors};
+use crate::{first_error, no_errors};
 use solang::file_cache::FileCache;
 use solang::Target;
 

+ 1 - 2
tests/substrate_inheritance/mod.rs → tests/substrate_tests/inheritance.rs

@@ -1,5 +1,4 @@
-extern crate solang;
-use super::{build_solidity, first_error, first_warning, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, first_warning, no_errors, parse_and_resolve};
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 use solang::file_cache::FileCache;

+ 1 - 2
tests/substrate_libraries/mod.rs → tests/substrate_tests/libraries.rs

@@ -1,5 +1,4 @@
-extern crate solang;
-use super::{build_solidity, first_error, parse_and_resolve};
+use crate::{build_solidity, first_error, parse_and_resolve};
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 use solang::Target;

+ 1 - 3
tests/substrate_loops/mod.rs → tests/substrate_tests/loops.rs

@@ -1,6 +1,4 @@
-extern crate solang;
-
-use super::{first_error, parse_and_resolve};
+use crate::{first_error, parse_and_resolve};
 use solang::Target;
 
 #[test]

+ 1 - 1
tests/substrate_mappings/mod.rs → tests/substrate_tests/mappings.rs

@@ -3,7 +3,7 @@ use parity_scale_codec_derive::{Decode, Encode};
 use rand::Rng;
 use std::collections::HashMap;
 
-use super::{build_solidity, first_error, parse_and_resolve};
+use crate::{build_solidity, first_error, parse_and_resolve};
 use solang::Target;
 
 #[test]

+ 25 - 0
tests/substrate_tests/mod.rs

@@ -0,0 +1,25 @@
+mod enums;
+
+#[allow(clippy::unreadable_literal, clippy::naive_bytecount)]
+mod expressions;
+
+mod arrays;
+mod builtins;
+mod calls;
+mod contracts;
+mod events;
+mod first;
+mod function_types;
+mod functions;
+mod imports;
+mod inheritance;
+mod libraries;
+mod loops;
+mod mappings;
+mod modifier;
+mod primitives;
+mod strings;
+mod structs;
+mod tags;
+mod value;
+mod variables;

+ 1 - 2
tests/substrate_modifier/mod.rs → tests/substrate_tests/modifier.rs

@@ -1,5 +1,4 @@
-extern crate solang;
-use super::{build_solidity, first_error, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, no_errors, parse_and_resolve};
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 use solang::Target;

+ 1 - 1
tests/substrate_primitives/mod.rs → tests/substrate_tests/primitives.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::{build_solidity, first_error, first_warning, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, first_warning, no_errors, parse_and_resolve};
 use solang::Target;
 
 #[test]

+ 1 - 1
tests/substrate_strings/mod.rs → tests/substrate_tests/strings.rs

@@ -2,7 +2,7 @@ use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 use rand::Rng;
 
-use super::{build_solidity, first_error, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, no_errors, parse_and_resolve};
 use solang::Target;
 
 #[test]

+ 1 - 1
tests/substrate_structs/mod.rs → tests/substrate_tests/structs.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::{build_solidity, first_error, parse_and_resolve};
+use crate::{build_solidity, first_error, parse_and_resolve};
 use solang::Target;
 
 #[derive(Debug, PartialEq, Encode, Decode)]

+ 1 - 1
tests/substrate_tags/mod.rs → tests/substrate_tests/tags.rs

@@ -1,4 +1,4 @@
-use super::{first_error, parse_and_resolve};
+use crate::{first_error, parse_and_resolve};
 use solang::Target;
 
 #[test]

+ 1 - 1
tests/substrate_value/mod.rs → tests/substrate_tests/value.rs

@@ -1,7 +1,7 @@
 use parity_scale_codec::Encode;
 use parity_scale_codec_derive::{Decode, Encode};
 
-use super::{build_solidity, first_error, no_errors, parse_and_resolve};
+use crate::{build_solidity, first_error, no_errors, parse_and_resolve};
 use solang::Target;
 
 #[test]

+ 1 - 3
tests/substrate_variables/mod.rs → tests/substrate_tests/variables.rs

@@ -1,6 +1,4 @@
-extern crate solang;
-
-use super::{first_error, parse_and_resolve};
+use crate::{first_error, parse_and_resolve};
 use solang::Target;
 
 #[test]