diff --git a/.github/workflows/bevy_api_gen.yml b/.github/workflows/bevy_api_gen.yml new file mode 100644 index 0000000000..3c34eaec11 --- /dev/null +++ b/.github/workflows/bevy_api_gen.yml @@ -0,0 +1,135 @@ +on: + pull_request: + paths: + - "crates/bevy_api_gen/**" + push: + branches: + - main + paths: + - "crates/bevy_api_gen/**" + + +name: Check and Lint - bevy_api_gen + +jobs: + check: + name: Check - bevy_api_gen + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + sparse-checkout: 'crates/bevy_api_gen' + sparse-checkout-cone-mode: false + - name: Move bevy_api_gen to root + run: | + mv crates/bevy_api_gen/* . + rm -rf crates + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly-2024-01-24 + override: true + - name: Rust Cache + uses: Swatinem/rust-cache@v2.7.3 + - name: Clear space + run: rm -rf /usr/share/dotnet; rm -rf /opt/ghc; rm -rf "/usr/local/share/boost"; rm -rf "$AGENT_TOOLSDIRECTORY" + - uses: actions-rs/cargo@v1 + with: + command: check + args: --profile=ephemeral-build + + fmt: + name: Rustfmt - bevy_api_gen + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + sparse-checkout: 'crates/bevy_api_gen' + sparse-checkout-cone-mode: false + - name: Move bevy_api_gen to root + run: | + mv crates/bevy_api_gen/* . + rm -rf crates + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + components: rustfmt + toolchain: nightly-2024-01-24 + override: true + - name: Rust Cache + uses: Swatinem/rust-cache@v2.7.3 + - uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + clippy: + name: Clippy - bevy_api_gen + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + sparse-checkout: 'crates/bevy_api_gen' + sparse-checkout-cone-mode: false + - name: Move bevy_api_gen to root + run: | + mv crates/bevy_api_gen/* . + rm -rf crates + - uses: actions-rs/toolchain@v1 + with: + toolchain: nightly-2024-01-24 + components: clippy + override: true + - name: Rust Cache + uses: Swatinem/rust-cache@v2.7.3 + - uses: actions-rs/cargo@v1 + with: + command: clippy + args: --profile=ephemeral-build -- -D warnings + tests: + name: Tests - bevy_api_gen + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + sparse-checkout: 'crates/bevy_api_gen' + sparse-checkout-cone-mode: false + - name: Move bevy_api_gen to root + run: | + mv crates/bevy_api_gen/* . + rm -rf crates + - uses: actions-rs/toolchain@v1 + with: + toolchain: nightly-2024-01-24 + override: true + - name: Rust Cache + uses: Swatinem/rust-cache@v2.7.3 + - uses: actions-rs/cargo@v1 + with: + command: test + args: --profile=ephemeral-build + docs: + name: Docs - bevy_api_gen + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + sparse-checkout: 'crates/bevy_api_gen' + sparse-checkout-cone-mode: false + - name: Move bevy_api_gen to root + run: | + mv crates/bevy_api_gen/* . + rm -rf crates + - uses: actions-rs/toolchain@v1 + with: + toolchain: nightly-2024-01-24 + override: true + - name: Rust Cache + uses: Swatinem/rust-cache@v2.7.3 + # - name: Find docs.rs features + # run: echo "DOCS_FEATURES=$(cargo metadata --no-deps | python -c "import sys,json; [print(','.join(x['metadata']['docs.rs']['features'])) for x in json.load(sys.stdin)['packages'] if x['name'] == 'bevy_mod_scripting']")" >> $GITHUB_OUTPUT + # id: features + - uses: actions-rs/cargo@v1 + with: + command: doc + args: --profile=ephemeral-build diff --git a/.github/workflows/ci.yml b/.github/workflows/bevy_mod_scripting.yml similarity index 72% rename from .github/workflows/ci.yml rename to .github/workflows/bevy_mod_scripting.yml index 2963086345..a19ad24ee3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/bevy_mod_scripting.yml @@ -1,11 +1,17 @@ on: pull_request: + paths-ignore: + - 'crates/bevy_api_gen/**' + - 'crates/macro_tests/**' push: branches: - main + paths-ignore: + - 'crates/bevy_api_gen/**' + - 'crates/macro_tests/**' -name: Check and Lint +name: Check and Lint - bevy_mod_scripting jobs: check: @@ -14,20 +20,20 @@ jobs: strategy: matrix: run_args: [ - {os: windows-latest, lua: lua54, cross: null}, - {os: macOS-latest, lua: lua54, cross: null}, - # {os: ubuntu-latest, lua: lua54, cross: aarch64-unknown-linux-gnu}, see https://github.com/houseabsolute/actions-rust-cross/issues/15 - {os: ubuntu-latest, lua: lua51, cross: null}, - {os: ubuntu-latest, lua: lua52, cross: null}, - {os: ubuntu-latest, lua: lua53, cross: null}, - {os: ubuntu-latest, lua: lua54, cross: null}, - {os: ubuntu-latest, lua: luajit, cross: null}, - {os: ubuntu-latest, lua: luajit52, cross: null} + {os: windows-latest, lua: lua54, cross: x86_64-pc-windows-msvc}, + {os: macOS-latest, lua: lua54, cross: x86_64-apple-darwin}, + {os: ubuntu-latest, lua: lua54, cross: aarch64-unknown-linux-gnu}, + {os: ubuntu-latest, lua: lua51, cross: x86_64-unknown-linux-gnu}, + {os: ubuntu-latest, lua: lua52, cross: x86_64-unknown-linux-gnu}, + {os: ubuntu-latest, lua: lua53, cross: x86_64-unknown-linux-gnu}, + {os: ubuntu-latest, lua: lua54, cross: x86_64-unknown-linux-gnu}, + {os: ubuntu-latest, lua: luajit, cross: x86_64-unknown-linux-gnu}, + {os: ubuntu-latest, lua: luajit52, cross: x86_64-unknown-linux-gnu} ] steps: - - name: Install alsa and udev + - if: runner.os == 'linux' + name: Install alsa and udev run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev - if: runner.os == 'linux' - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: @@ -36,18 +42,10 @@ jobs: override: true - name: Rust Cache uses: Swatinem/rust-cache@v2.7.3 - # for x86 builds - - if: matrix.run_args.cross == null - uses: actions-rs/cargo@v1 - with: - command: check - args: --workspace --features=${{ matrix.run_args.lua }},rhai,teal,lua_script_api,rhai_script_api,rune - # for non x86 cross-compiled builds - - if: matrix.run_args.cross != null + - if: runner.os != 'windows' name: Clear space - run: sudo rm -rf /usr/share/dotnet; sudo rm -rf /opt/ghc; sudo rm -rf "/usr/local/share/boost"; sudo rm -rf "$AGENT_TOOLSDIRECTORY" - - if: matrix.run_args.cross != null - uses: houseabsolute/actions-rust-cross@v0 + run: rm -rf /usr/share/dotnet; rm -rf /opt/ghc; rm -rf "/usr/local/share/boost"; rm -rf "$AGENT_TOOLSDIRECTORY" + - uses: houseabsolute/actions-rust-cross@v0 with: command: check target: ${{ matrix.run_args.cross }} @@ -101,7 +99,6 @@ jobs: uses: actions/checkout@v3 - name: Install alsa and udev run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev - - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: stable diff --git a/.github/workflows/macro_tests.yml b/.github/workflows/macro_tests.yml new file mode 100644 index 0000000000..a4e17c547a --- /dev/null +++ b/.github/workflows/macro_tests.yml @@ -0,0 +1,33 @@ +on: + pull_request: + paths: + - "crates/macro_tests/**" + push: + branches: + - main + paths: + - "crates/macro_tests/**" + + +name: Run macro tests + +jobs: + tests: + name: Macro Tests + runs-on: ubuntu-latest + steps: + - name: Clear space + run: sudo rm -rf /usr/share/dotnet; sudo rm -rf /opt/ghc; sudo rm -rf "/usr/local/share/boost"; sudo rm -rf "$AGENT_TOOLSDIRECTORY" + - uses: actions/checkout@v3 + - name: Install alsa and udev + run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Rust Cache + uses: Swatinem/rust-cache@v2.7.3 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + - run: cd crates/macro_tests && cargo test --profile=ephemeral-build diff --git a/.vscode/settings.json b/.vscode/settings.json index 5a25c44622..3cf59b3095 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,6 +11,7 @@ "rust-analyzer.rustc.source": "discover", "rust-analyzer.linkedProjects": [ "./crates/bevy_api_gen/Cargo.toml", + // "./crates/macro_tests/Cargo.toml", "Cargo.toml", ], "rust-analyzer.check.invocationStrategy": "per_workspace", diff --git a/Cargo.toml b/Cargo.toml index 99bdab2dcf..b1ae011738 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,7 +94,7 @@ members = [ "crates/bevy_mod_scripting_common", ] resolver = "2" -exclude = ["bevy_api_gen"] +exclude = ["crates/bevy_api_gen", "crates/macro_tests"] [profile.dev] debug = 1 diff --git a/crates/bevy_api_gen/Cargo.toml b/crates/bevy_api_gen/Cargo.toml index 5180c068c3..ab42559be1 100644 --- a/crates/bevy_api_gen/Cargo.toml +++ b/crates/bevy_api_gen/Cargo.toml @@ -23,6 +23,12 @@ path = "src/bin/main.rs" name = "bevy-api-gen-driver" path = "src/bin/driver.rs" +[profile.ephemeral-build] +inherits = "dev" +opt-level = 2 +codegen-units = 8 +incremental = false +debug = false [rust-analyzer.rustc] source = "discover" diff --git a/crates/bevy_api_gen/clippy.toml b/crates/bevy_api_gen/clippy.toml new file mode 100644 index 0000000000..cbc4eccef5 --- /dev/null +++ b/crates/bevy_api_gen/clippy.toml @@ -0,0 +1 @@ +type-complexity-threshold=1000 \ No newline at end of file diff --git a/crates/bevy_api_gen/src/passes/find_methods_and_fields.rs b/crates/bevy_api_gen/src/passes/find_methods_and_fields.rs index 070978aec3..9046dadd95 100644 --- a/crates/bevy_api_gen/src/passes/find_methods_and_fields.rs +++ b/crates/bevy_api_gen/src/passes/find_methods_and_fields.rs @@ -1,7 +1,10 @@ use indexmap::IndexMap; use log::{info, trace}; use rustc_ast::Attribute; -use rustc_hir::{def_id::{DefId, LOCAL_CRATE}, Unsafety}; +use rustc_hir::{ + def_id::{DefId, LOCAL_CRATE}, + Unsafety, +}; use rustc_infer::infer::TyCtxtInferExt; use rustc_middle::ty::{AdtKind, AssocKind, FieldDef, FnSig, ParamEnv, Ty, TyCtxt, TyKind}; use rustc_span::Symbol; @@ -24,7 +27,6 @@ pub(crate) fn find_methods_and_fields(ctxt: &mut BevyCtxt<'_>, _args: &Args) -> match adt_def.adt_kind() { AdtKind::Enum => { - let strats = adt_def.variants().iter().flat_map(|variant| { if has_reflect_ignore_attr(ctxt.tcx.get_attrs_unchecked(variant.def_id)) { // TODO: is this the right approach? do we need to still include those variants? or do we just provide dummies @@ -102,7 +104,6 @@ pub(crate) fn find_methods_and_fields(ctxt: &mut BevyCtxt<'_>, _args: &Args) -> return None; } - let trait_did = ctxt .tcx .impl_trait_ref(*impl_did) @@ -122,9 +123,14 @@ pub(crate) fn find_methods_and_fields(ctxt: &mut BevyCtxt<'_>, _args: &Args) -> ctxt.tcx.fn_sig(fn_did).instantiate_identity(), ); - if let Some(unstability) = ctxt.tcx.lookup_stability(fn_did) { + if let Some(unstability) = ctxt.tcx.lookup_stability(fn_did) { if unstability.is_unstable() { - log::debug!("Skipping unstable function: `{}` on type: `{}` feature: {:?}", ctxt.tcx.item_name(fn_did), ctxt.tcx.item_name(def_id), unstability.feature.as_str()); + log::debug!( + "Skipping unstable function: `{}` on type: `{}` feature: {:?}", + ctxt.tcx.item_name(fn_did), + ctxt.tcx.item_name(def_id), + unstability.feature.as_str() + ); return None; } }; @@ -132,8 +138,12 @@ pub(crate) fn find_methods_and_fields(ctxt: &mut BevyCtxt<'_>, _args: &Args) -> let is_unsafe = sig.unsafety == Unsafety::Unsafe; if trait_did.is_none() && !ctxt.tcx.visibility(fn_did).is_public() { - log::info!("Skipping non-public function: `{}` on type: `{}`", fn_name, ctxt.tcx.item_name(def_id)); - return None + log::info!( + "Skipping non-public function: `{}` on type: `{}`", + fn_name, + ctxt.tcx.item_name(def_id) + ); + return None; } let arg_names = ctxt.tcx.fn_arg_names(fn_did); @@ -227,7 +237,6 @@ fn report_field_not_supported( variant_did: Option, reason: &'static str, ) { - let normalised_ty = tcx.normalize_erasing_regions( tcx.param_env(type_did), tcx.type_of(f_did).instantiate_identity(), @@ -243,7 +252,7 @@ fn report_field_not_supported( } /// Checks each field individually and returns reflection strategies -fn process_fields<'tcx,'f, I: Iterator>( +fn process_fields<'tcx, 'f, I: Iterator>( tcx: TyCtxt<'tcx>, meta_loader: &MetaLoader, reflect_types: &IndexMap>, @@ -253,8 +262,7 @@ fn process_fields<'tcx,'f, I: Iterator>( ) -> Vec<(DefId, ReflectionStrategy)> { fields .map(move |f| { - - if !f.vis.is_public(){ + if !f.vis.is_public() { return (f.did, crate::ReflectionStrategy::Filtered); } @@ -272,7 +280,7 @@ fn process_fields<'tcx,'f, I: Iterator>( && type_is_supported_as_proxy_return_val(tcx, reflect_types, meta_loader, field_ty) { (f.did, crate::ReflectionStrategy::Proxy) - } else if !has_reflect_ignore_attr(tcx.get_attrs_unchecked(f.did)) { + } else if !has_reflect_ignore_attr(tcx.get_attrs_unchecked(f.did)) { (f.did, crate::ReflectionStrategy::Reflection) } else { (f.did, crate::ReflectionStrategy::Filtered) @@ -330,7 +338,7 @@ fn type_is_adt_and_reflectable<'tcx>( // for other crates, reach for meta data // we know a reflect impl can ONLY exist in one of two places due to orphan rules: - // 1) the bevy_reflect crate + // 1) the bevy_reflect crate // 2) the crate that defines the type // so search for these metas! let crate_name = tcx.crate_name(did.krate).to_ident_string(); @@ -342,15 +350,18 @@ fn type_is_adt_and_reflectable<'tcx>( vec![crate_name, "bevy_reflect".to_string()] }; - let meta = match meta_sources.iter().find_map(|s| meta_loader.meta_for(s)){ + let meta = match meta_sources.iter().find_map(|s| meta_loader.meta_for(s)) { Some(meta) => meta, None => return false, // TODO: is it possible we get false negatives here ? perhaps due to parallel compilation ? or possibly because of dependency order }; let contains_hash = meta.contains_def_path_hash(tcx.def_path_hash(did)); - log::trace!("Meta for type: `{}`, contained in meta `{}`", tcx.item_name(did), contains_hash); + log::trace!( + "Meta for type: `{}`, contained in meta `{}`", + tcx.item_name(did), + contains_hash + ); contains_hash - }) } @@ -381,10 +392,15 @@ fn type_is_supported_as_non_proxy_return_val<'tcx>( if let TyKind::Ref(region, _, _) = ty.kind() { if !region.get_name().is_some_and(|rn| rn.as_str() == "'static") { return false; - } + } } - impls_trait(tcx, param_env, ty, cached_traits.mlua_into_lua_multi.unwrap()) + impls_trait( + tcx, + param_env, + ty, + cached_traits.mlua_into_lua_multi.unwrap(), + ) } pub(crate) fn impls_trait<'tcx>( diff --git a/crates/bevy_api_gen/src/passes/find_reflect_types.rs b/crates/bevy_api_gen/src/passes/find_reflect_types.rs index ead4680d6f..2f9b5a7b65 100644 --- a/crates/bevy_api_gen/src/passes/find_reflect_types.rs +++ b/crates/bevy_api_gen/src/passes/find_reflect_types.rs @@ -7,7 +7,7 @@ use crate::{Args, BevyCtxt, ReflectType, DEF_PATHS_REFLECT}; pub(crate) fn find_reflect_types(ctxt: &mut BevyCtxt<'_>, args: &Args) -> bool { let tcx = &ctxt.tcx; let ignored_types = match &args.cmd { - crate::Command::Generate { ignored_types, .. } => ignored_types, + crate::Command::Generate { ignored_types, .. } => ignored_types, _ => return true, }; @@ -40,7 +40,7 @@ pub(crate) fn find_reflect_types(ctxt: &mut BevyCtxt<'_>, args: &Args) -> bool { .flat_map(|(self_ty, impl_dids)| impl_dids.iter().zip(std::iter::repeat(self_ty))) .filter_map(|(impl_did, self_ty)| { let generics = tcx.generics_of(*impl_did); - (impl_did.is_local() && + (impl_did.is_local() && // only non parametrized simple types are allowed, i.e. "MyStruct" is allowed but "MyStruct" isn't generics.count() == 0 && self_ty.def().is_some_and(|did| { diff --git a/crates/languages/bevy_mod_scripting_lua_derive/Cargo.toml b/crates/languages/bevy_mod_scripting_lua_derive/Cargo.toml index a3c5451518..56104dd0be 100644 --- a/crates/languages/bevy_mod_scripting_lua_derive/Cargo.toml +++ b/crates/languages/bevy_mod_scripting_lua_derive/Cargo.toml @@ -36,15 +36,3 @@ serde_derive = "1.0.137" indexmap = { version = "1.9.1", features = ["serde"] } strum = { version = "0.24.1", features = ["derive"] } vec1 = "1.10.1" - -[dev-dependencies] -trybuild = "1.0" -bevy = { workspace = true, default-features = false } -bevy_mod_scripting = { path = "../../../../bevy_mod_scripting", features = [ - "lua", - "lua_script_api", - "lua54", -] } -bevy_script_api = { path = "../../bevy_script_api" } -bevy_mod_scripting_lua = { path = "../bevy_mod_scripting_lua" } -bevy_mod_scripting_core = { workspace = true } diff --git a/crates/macro_tests/Cargo.toml b/crates/macro_tests/Cargo.toml new file mode 100644 index 0000000000..ded3d2b727 --- /dev/null +++ b/crates/macro_tests/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "macro_tests" +version = "0.1.0" +edition = "2021" +private = true + +[profile.ephemeral-build] +inherits = "dev" +opt-level = 2 +codegen-units = 8 +incremental = false +debug = false + +[dependencies] + +[dev-dependencies] +trybuild = "1.0" +bevy = { version = "0.13.1", default-features = false } +bevy_mod_scripting = { path = "../../", features = [ + "lua", + "lua_script_api", + "lua54", +] } +bevy_script_api = { path = "../bevy_script_api" } +bevy_mod_scripting_lua = { path = "../languages/bevy_mod_scripting_lua" } +bevy_mod_scripting_core = { path = "../bevy_mod_scripting_core" } diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/references/non-proxy-reference.rs b/crates/macro_tests/tests/fail/references/non-proxy-reference.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/references/non-proxy-reference.rs rename to crates/macro_tests/tests/fail/references/non-proxy-reference.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/references/non-proxy-reference.stderr b/crates/macro_tests/tests/fail/references/non-proxy-reference.stderr similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/references/non-proxy-reference.stderr rename to crates/macro_tests/tests/fail/references/non-proxy-reference.stderr diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/references/output-with-proxy-reference.rs b/crates/macro_tests/tests/fail/references/output-with-proxy-reference.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/references/output-with-proxy-reference.rs rename to crates/macro_tests/tests/fail/references/output-with-proxy-reference.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/references/output-with-proxy-reference.stderr b/crates/macro_tests/tests/fail/references/output-with-proxy-reference.stderr similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/references/output-with-proxy-reference.stderr rename to crates/macro_tests/tests/fail/references/output-with-proxy-reference.stderr diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-argument-count.rs b/crates/macro_tests/tests/fail/simple/invalid-argument-count.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-argument-count.rs rename to crates/macro_tests/tests/fail/simple/invalid-argument-count.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-argument-count.stderr b/crates/macro_tests/tests/fail/simple/invalid-argument-count.stderr similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-argument-count.stderr rename to crates/macro_tests/tests/fail/simple/invalid-argument-count.stderr diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-argument-type.rs b/crates/macro_tests/tests/fail/simple/invalid-argument-type.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-argument-type.rs rename to crates/macro_tests/tests/fail/simple/invalid-argument-type.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-argument-type.stderr b/crates/macro_tests/tests/fail/simple/invalid-argument-type.stderr similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-argument-type.stderr rename to crates/macro_tests/tests/fail/simple/invalid-argument-type.stderr diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-function-type.rs b/crates/macro_tests/tests/fail/simple/invalid-function-type.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-function-type.rs rename to crates/macro_tests/tests/fail/simple/invalid-function-type.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-function-type.stderr b/crates/macro_tests/tests/fail/simple/invalid-function-type.stderr similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-function-type.stderr rename to crates/macro_tests/tests/fail/simple/invalid-function-type.stderr diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-output-type-custom-body.rs b/crates/macro_tests/tests/fail/simple/invalid-output-type-custom-body.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-output-type-custom-body.rs rename to crates/macro_tests/tests/fail/simple/invalid-output-type-custom-body.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-output-type-custom-body.stderr b/crates/macro_tests/tests/fail/simple/invalid-output-type-custom-body.stderr similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-output-type-custom-body.stderr rename to crates/macro_tests/tests/fail/simple/invalid-output-type-custom-body.stderr diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-output-type.rs b/crates/macro_tests/tests/fail/simple/invalid-output-type.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-output-type.rs rename to crates/macro_tests/tests/fail/simple/invalid-output-type.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-output-type.stderr b/crates/macro_tests/tests/fail/simple/invalid-output-type.stderr similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/invalid-output-type.stderr rename to crates/macro_tests/tests/fail/simple/invalid-output-type.stderr diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/method-without-receiver.rs b/crates/macro_tests/tests/fail/simple/method-without-receiver.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/method-without-receiver.rs rename to crates/macro_tests/tests/fail/simple/method-without-receiver.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/method-without-receiver.stderr b/crates/macro_tests/tests/fail/simple/method-without-receiver.stderr similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/fail/simple/method-without-receiver.stderr rename to crates/macro_tests/tests/fail/simple/method-without-receiver.stderr diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/macro_tests.rs b/crates/macro_tests/tests/macro_tests.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/macro_tests.rs rename to crates/macro_tests/tests/macro_tests.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/containers/option-argument.rs b/crates/macro_tests/tests/success/containers/option-argument.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/containers/option-argument.rs rename to crates/macro_tests/tests/success/containers/option-argument.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/containers/option-output.rs b/crates/macro_tests/tests/success/containers/option-output.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/containers/option-output.rs rename to crates/macro_tests/tests/success/containers/option-output.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/containers/vec-argument.rs b/crates/macro_tests/tests/success/containers/vec-argument.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/containers/vec-argument.rs rename to crates/macro_tests/tests/success/containers/vec-argument.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/containers/vec-output.rs b/crates/macro_tests/tests/success/containers/vec-output.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/containers/vec-output.rs rename to crates/macro_tests/tests/success/containers/vec-output.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/references/proxy-non-receiver-reference.rs b/crates/macro_tests/tests/success/references/proxy-non-receiver-reference.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/references/proxy-non-receiver-reference.rs rename to crates/macro_tests/tests/success/references/proxy-non-receiver-reference.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/function.rs b/crates/macro_tests/tests/success/simple/function.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/function.rs rename to crates/macro_tests/tests/success/simple/function.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/metafunction.rs b/crates/macro_tests/tests/success/simple/metafunction.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/metafunction.rs rename to crates/macro_tests/tests/success/simple/metafunction.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/metamethod-owned-receiver.rs b/crates/macro_tests/tests/success/simple/metamethod-owned-receiver.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/metamethod-owned-receiver.rs rename to crates/macro_tests/tests/success/simple/metamethod-owned-receiver.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/metamethod.rs b/crates/macro_tests/tests/success/simple/metamethod.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/metamethod.rs rename to crates/macro_tests/tests/success/simple/metamethod.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/method-owned-receiver.rs b/crates/macro_tests/tests/success/simple/method-owned-receiver.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/method-owned-receiver.rs rename to crates/macro_tests/tests/success/simple/method-owned-receiver.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/method.rs b/crates/macro_tests/tests/success/simple/method.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/method.rs rename to crates/macro_tests/tests/success/simple/method.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutable-function.rs b/crates/macro_tests/tests/success/simple/mutable-function.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutable-function.rs rename to crates/macro_tests/tests/success/simple/mutable-function.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutable-metafunction.rs b/crates/macro_tests/tests/success/simple/mutable-metafunction.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutable-metafunction.rs rename to crates/macro_tests/tests/success/simple/mutable-metafunction.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutating-metamethod-owned-receiver.rs b/crates/macro_tests/tests/success/simple/mutating-metamethod-owned-receiver.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutating-metamethod-owned-receiver.rs rename to crates/macro_tests/tests/success/simple/mutating-metamethod-owned-receiver.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutating-metamethod.rs b/crates/macro_tests/tests/success/simple/mutating-metamethod.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutating-metamethod.rs rename to crates/macro_tests/tests/success/simple/mutating-metamethod.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutating-method-owned-receiver.rs b/crates/macro_tests/tests/success/simple/mutating-method-owned-receiver.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutating-method-owned-receiver.rs rename to crates/macro_tests/tests/success/simple/mutating-method-owned-receiver.rs diff --git a/crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutating-method.rs b/crates/macro_tests/tests/success/simple/mutating-method.rs similarity index 100% rename from crates/languages/bevy_mod_scripting_lua_derive/tests/success/simple/mutating-method.rs rename to crates/macro_tests/tests/success/simple/mutating-method.rs