From c10dfbce789e52ebfc578f88bc0b50f1970a368e Mon Sep 17 00:00:00 2001 From: Leo Date: Sat, 27 Apr 2024 02:30:04 -0400 Subject: [PATCH] Fixed issue where createFrom would misidentify strings as arrays (#3435) * Update check for Array-like variables * Updated binding tests to reflect changes * Update documentation to reflect changes * Fixed PR number in changelog --------- Co-authored-by: Lea Anthony --- .../binding_anonymous_sub_struct_multi_level_test.go | 2 +- .../binding_test/binding_anonymous_sub_struct_test.go | 2 +- .../binding/binding_test/binding_emptystruct_test.go | 2 +- .../binding/binding_test/binding_importedmap_test.go | 4 ++-- .../binding/binding_test/binding_importedslice_test.go | 4 ++-- .../binding/binding_test/binding_importedstruct_test.go | 4 ++-- .../binding/binding_test/binding_nestedfield_test.go | 2 +- .../binding/binding_test/binding_tsgeneration_test.go | 8 ++++---- v2/internal/typescriptify/typescriptify.go | 2 +- website/docs/howdoesitwork.mdx | 2 +- website/src/pages/changelog.mdx | 1 + 11 files changed, 17 insertions(+), 16 deletions(-) diff --git a/v2/internal/binding/binding_test/binding_anonymous_sub_struct_multi_level_test.go b/v2/internal/binding/binding_test/binding_anonymous_sub_struct_multi_level_test.go index 3c888ab27d5..29777481ba3 100644 --- a/v2/internal/binding/binding_test/binding_anonymous_sub_struct_multi_level_test.go +++ b/v2/internal/binding/binding_test/binding_anonymous_sub_struct_multi_level_test.go @@ -45,7 +45,7 @@ export namespace binding_test { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/v2/internal/binding/binding_test/binding_anonymous_sub_struct_test.go b/v2/internal/binding/binding_test/binding_anonymous_sub_struct_test.go index 53617efac45..11afe4f0d83 100644 --- a/v2/internal/binding/binding_test/binding_anonymous_sub_struct_test.go +++ b/v2/internal/binding/binding_test/binding_anonymous_sub_struct_test.go @@ -39,7 +39,7 @@ export namespace binding_test { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/v2/internal/binding/binding_test/binding_emptystruct_test.go b/v2/internal/binding/binding_test/binding_emptystruct_test.go index c36603e6439..ffb85e865b3 100644 --- a/v2/internal/binding/binding_test/binding_emptystruct_test.go +++ b/v2/internal/binding/binding_test/binding_emptystruct_test.go @@ -34,7 +34,7 @@ export namespace binding_test { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/v2/internal/binding/binding_test/binding_importedmap_test.go b/v2/internal/binding/binding_test/binding_importedmap_test.go index 54fb261a8af..7fa11d54b0e 100644 --- a/v2/internal/binding/binding_test/binding_importedmap_test.go +++ b/v2/internal/binding/binding_test/binding_importedmap_test.go @@ -32,7 +32,7 @@ export namespace binding_test { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { @@ -62,7 +62,7 @@ export namespace binding_test_import { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/v2/internal/binding/binding_test/binding_importedslice_test.go b/v2/internal/binding/binding_test/binding_importedslice_test.go index b4a63689c8b..5abf55b4331 100644 --- a/v2/internal/binding/binding_test/binding_importedslice_test.go +++ b/v2/internal/binding/binding_test/binding_importedslice_test.go @@ -32,7 +32,7 @@ export namespace binding_test { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { @@ -62,7 +62,7 @@ export namespace binding_test_import { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/v2/internal/binding/binding_test/binding_importedstruct_test.go b/v2/internal/binding/binding_test/binding_importedstruct_test.go index 1629be9faeb..1e94453c231 100644 --- a/v2/internal/binding/binding_test/binding_importedstruct_test.go +++ b/v2/internal/binding/binding_test/binding_importedstruct_test.go @@ -33,7 +33,7 @@ export namespace binding_test { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { @@ -63,7 +63,7 @@ export namespace binding_test_import { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/v2/internal/binding/binding_test/binding_nestedfield_test.go b/v2/internal/binding/binding_test/binding_nestedfield_test.go index c2e4fcf9f69..66dd11cbffe 100644 --- a/v2/internal/binding/binding_test/binding_nestedfield_test.go +++ b/v2/internal/binding/binding_test/binding_nestedfield_test.go @@ -44,7 +44,7 @@ export namespace binding_test { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/v2/internal/binding/binding_test/binding_tsgeneration_test.go b/v2/internal/binding/binding_test/binding_tsgeneration_test.go index b627772fe18..06bcae97d21 100644 --- a/v2/internal/binding/binding_test/binding_tsgeneration_test.go +++ b/v2/internal/binding/binding_test/binding_tsgeneration_test.go @@ -107,7 +107,7 @@ export namespace binding_test { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { @@ -172,7 +172,7 @@ export namespace binding_test { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { @@ -204,7 +204,7 @@ export namespace binding_test { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { @@ -239,7 +239,7 @@ export namespace binding_test { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/v2/internal/typescriptify/typescriptify.go b/v2/internal/typescriptify/typescriptify.go index c06a8b2ec79..82a74437bcd 100644 --- a/v2/internal/typescriptify/typescriptify.go +++ b/v2/internal/typescriptify/typescriptify.go @@ -24,7 +24,7 @@ const ( if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map(elem => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/website/docs/howdoesitwork.mdx b/website/docs/howdoesitwork.mdx index 6e23d5eb94d..496e19d009a 100644 --- a/website/docs/howdoesitwork.mdx +++ b/website/docs/howdoesitwork.mdx @@ -418,7 +418,7 @@ export namespace main { if (!a) { return a; } - if (a.slice) { + if (a.slice && a.map) { return (a as any[]).map((elem) => this.convertValues(elem, classs)); } else if ("object" === typeof a) { if (asMap) { diff --git a/website/src/pages/changelog.mdx b/website/src/pages/changelog.mdx index 57604ef834c..37ba7746e4b 100644 --- a/website/src/pages/changelog.mdx +++ b/website/src/pages/changelog.mdx @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed an issue where certain calls to createFrom in TypeScript would fail. Changed by [@twonull](https://github.com/twonull) in [PR](https://github.com/wailsapp/wails/pull/3435) - Fixed some typos in comments. Changed by [@reallylowest](https://github.com/reallylowest) in [PR](https://github.com/wailsapp/wails/pull/3357) - Fixed an issue where the destination file was not properly closed after copying. Changed by [@testwill](https://github.com/testwill) in [PR](https://github.com/wailsapp/wails/pull/3384) - Fixed an issue where `xattr` calls were not working. Fixed by [@leaanthony](https://github.com/wailsapp/wails/pull/3328)