From 646ccd9520e46d009a76377ea54e2bedc930fa03 Mon Sep 17 00:00:00 2001 From: Moritz Bischof Date: Thu, 1 Feb 2024 18:52:33 +0100 Subject: [PATCH] use stupidly large types in E2E test - maybe it fails on CI? --- e2e/workspace/crate1/src/lib.rs | 2 +- e2e/workspace/crate2/src/lib.rs | 2 +- e2e/workspace/parent/src/main.rs | 84 ++++++++++++++++++++++++++++++++ ts-rs/src/export.rs | 3 +- 4 files changed, 88 insertions(+), 3 deletions(-) diff --git a/e2e/workspace/crate1/src/lib.rs b/e2e/workspace/crate1/src/lib.rs index 650b721..afa0546 100644 --- a/e2e/workspace/crate1/src/lib.rs +++ b/e2e/workspace/crate1/src/lib.rs @@ -2,5 +2,5 @@ use ts_rs::TS; #[derive(TS)] pub struct Crate1 { - pub x: i32 + pub x: [[[i32; 128]; 128]; 128], } \ No newline at end of file diff --git a/e2e/workspace/crate2/src/lib.rs b/e2e/workspace/crate2/src/lib.rs index c824681..9617cfb 100644 --- a/e2e/workspace/crate2/src/lib.rs +++ b/e2e/workspace/crate2/src/lib.rs @@ -2,5 +2,5 @@ use ts_rs::TS; #[derive(TS)] pub struct Crate2 { - pub x: i32 + pub x: [[[i32; 128]; 128]; 128], } diff --git a/e2e/workspace/parent/src/main.rs b/e2e/workspace/parent/src/main.rs index 5f05ae7..12c9f4e 100644 --- a/e2e/workspace/parent/src/main.rs +++ b/e2e/workspace/parent/src/main.rs @@ -12,3 +12,87 @@ pub struct Parent { pub crate1: Crate1, pub crate2: Crate2, } +#[derive(TS)] +#[ts(export)] +pub struct Parent2 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent3 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent4 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent5 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent6 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent7 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent8 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent9 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent10 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent11 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent12 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent13 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent14 { + pub crate1: Crate1, + pub crate2: Crate2, +} +#[derive(TS)] +#[ts(export)] +pub struct Parent15 { + pub crate1: Crate1, + pub crate2: Crate2, +} diff --git a/ts-rs/src/export.rs b/ts-rs/src/export.rs index 82d6509..94957a1 100644 --- a/ts-rs/src/export.rs +++ b/ts-rs/src/export.rs @@ -31,6 +31,7 @@ pub enum ExportError { /// Exports `T` to the file specified by the `#[ts(export_to = ..)]` attribute. /// Additionally, all dependencies of `T` will be exported as well. +/// /// TODO: This might cause a race condition: /// If two types `A` and `B` are `#[ts(export)]` and depend on type `C`, /// then both tests for exporting `A` and `B` will try to write `C` to `C.ts`. @@ -133,7 +134,7 @@ fn generate_decl(out: &mut String) { /// Push an import statement for all dependencies of `T` fn generate_imports(out: &mut String) -> Result<(), ExportError> { let path = - Path::new(T::EXPORT_TO.ok_or(ExportError::CannotBeExported(std::any::type_name::()))?); + Path::new(T::EXPORT_TO.ok_or(CannotBeExported(std::any::type_name::()))?); let deps = T::dependencies(); let deduplicated_deps = deps