-
-
Notifications
You must be signed in to change notification settings - Fork 624
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added generic requirements and generic parameters to Subscript #1242
Added generic requirements and generic parameters to Subscript #1242
Conversation
👋🏻 Hello @leonspok , such a wonderful contribution right before the 2.1.3 release, thank you very much! ContextIn order to enable the dynamic member lookup in |
It would be amazing though if you could edit CHANGELOG.md file to mention this contribution for the release notes. |
Thanks @art-divin! I had a feeling this would require a bit more changes than I did :) |
Thank you, if needed, it is a matter of adding the same file again, hidden behind an '#if', and implementing the 'DynamicMemberLookup' protocol conformance only for non-Darwin platforms. You could also add a test by adjusting 'AutoMockable.stencil' file and doing something with the new type there, then adding code for testing in 'AutoMockable.expected' and 'AutoMockable.swift'. But, as you can see, it involves multiple domains of knowledge, so feel free to just adjust Changelog file for this PR. 🤝 |
@art-divin I'm a bit puzzled by this issue (I get it while running tests with
I don't see the difference between Codable support in |
@leonspok I am running tests, cloned your fork. Best puzzles. |
@leonspok the issue is that there are files which are injected at Runtime of Sourcery into the generated project, which is then compiled to verify that the generated code is compilable Swift code, and these files need to include the new types. In fact, they need to include all types which can be used in templates. So, after adding new types to
ContextBefore, Sourcery did support generating code "for itself" into the file named
|
Here's a patch you can apply which fixes the failing tests. Sourcery-leonspok-c6d93f3-added missing NSCoding facilities.patch |
@art-divin Thank you for the patch! I made the macOS checks passing, but tests on Ubuntu are still failing for different reasons and I'm not even sure if this is caused by my changes. I also added some logic to AutoMockable template to test the new properties of CHANGELOG.md is also updated. I would appreciate if you had a look at the Linux tests. If these failures are caused by my changes, then I'll return to this PR once I'm back from holidays (2nd of January). Thanks! |
👋🏻 Hey @leonspok , Thank you very much for your work! 🤝
I'll debug and report what is the reason and how to resolve it. |
Hi @art-divin! I hope you had a great holiday week! I'm back to work and I'll continue investigating the issue with linux tests. If you have any clues, this would be very helpful :) |
🎉 All tests passed! |
Hey @leonspok , thank you for resilience and eagerness to work with kind_of a messy state regarding the Linux support. Looking forward to our next collab 🙌🏻👏🤝 |
commit 71c2d46 Author: rokridi <mohamed.aymen.landolsi@gmail.com> Date: Tue Jan 9 11:08:43 2024 +0100 [#1251] Swifty generated variable names + fixed generated mocks compilation issues due to method generic parameters (#1252) commit b62a8fc Author: Igor Savelev <igor.savelev@team.bumble.com> Date: Sat Jan 6 04:13:56 2024 +0000 Initialise Subscript's returnTypeName with TypeSyntax, not String (#1250) commit c7b57bc Author: Igor Savelev <igor.savelev@team.bumble.com> Date: Thu Jan 4 17:17:21 2024 +0000 Added isAsync and throws to Subscript (#1249) * Added isAsync and throws to Subscript * Updated Linux version of AutoMockable.swift commit fe41343 Author: Igor Savelev <igor.savelev@team.bumble.com> Date: Thu Jan 4 08:58:37 2024 +0000 Added generic requirements and generic parameters to Subscript (#1242) commit 23179e8 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 27 00:23:47 2023 +0400 docs: update metadata for 2.1.3 release commit e88363c Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 27 00:06:11 2023 +0400 docs: update metadata for 2.1.3 release commit d74237a Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Tue Dec 26 10:25:35 2023 +0400 update SwiftStencilKit & Stencil (#1246) commit 510ba24 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Sun Dec 24 01:16:03 2023 +0400 Introduce package access level (#1245) * added package modifier * added tests for Variable * added tests for package access level commit b11d2d3 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Sat Dec 23 19:39:24 2023 +0400 Add dynamic method modifier support (#1244) * added missing attributes to Attribute.Identifier enum * moved to Attribute.Identifier from raw strings in Method.swift * updated Method (linux version) * updated generated content * added unit tests for dynamic method modifier * added dynamic to Variable * updated generated runtime files * added tests for variable isDynamic * fixed compilation error * fixed compilation error commit 07a8b28 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 04:35:37 2023 +0400 Support method overriding in AutoMockable (#1240) * updated automockable stencil template * updated expected AutoMockable * updated CHANGELOG * added supported case for vararg * Added example protocols for overrides * More flexible support for overridden return types * Added support for closure return type * Added more methods for tests * updated AutoMockable.expected * reverted wrong trailing whitespace trimming * added missing member lookup * Squashed commit of the following: commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup * Squashed commit of the following: commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup * Squashed commit of the following: commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup * Revert "Merge branch 'master' into support-method-overriding" This reverts commit 3c81133, reversing changes made to 48816e2. * Revert "Squashed commit of the following:" This reverts commit 4f7d246. # Conflicts: # Templates/Tests/Expected/AutoMockable.expected * Updated AutoMockable.expected commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup commit db7cc85 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Sun Dec 17 10:00:37 2023 +0400 Fixed incorrect parsing of consequently declared "@" symbols (#1239) * Fixed bug with incorrect parsing of consequently declared "@" symbols * renamed `isMacros` to `isPropertyWrapper` for clarity commit 1502c0f Author: Igor Savelev <igor9774@gmail.com> Date: Fri Dec 15 14:48:48 2023 +0000 Fixed missing attributes in optional closure type name (#1237) * Fixed missing attributes in optional closure type name * Reverted changes in unwrappedTypeName * Added fix for implicitly unwrapped closures * Added forced brackets for optional existential and opaque types * Revert "Added forced brackets for optional existential and opaque types" This reverts commit 50ff6e7. commit 717e0ba Author: Krzysztof Zabłocki <krzysztof.zablocki@pixle.pl> Date: Mon Dec 4 14:42:17 2023 +0100 Update README.md commit 1642f1f Author: Pavel Trafimuk <pavel@viber.com> Date: Fri Dec 1 02:53:57 2023 +0300 Reduced counts of collisions for cache srf filenames (#1231) commit 184ee11 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Mon Nov 27 00:43:34 2023 +0400 Updated XcodeProj to 8.16.0 (#1228) * Updated XcodeProj to 8.16.0 * Updated CHANGELOG
commit 5856e3b Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Tue Jan 9 15:30:34 2024 -0500 Update AutoMockable.expected (#1253) * updated automockable.expected * updated CHANGELOG * attempt to resolve issue on Linux * added missing example code for linux commit 71c2d46 Author: rokridi <mohamed.aymen.landolsi@gmail.com> Date: Tue Jan 9 11:08:43 2024 +0100 [#1251] Swifty generated variable names + fixed generated mocks compilation issues due to method generic parameters (#1252) commit b62a8fc Author: Igor Savelev <igor.savelev@team.bumble.com> Date: Sat Jan 6 04:13:56 2024 +0000 Initialise Subscript's returnTypeName with TypeSyntax, not String (#1250) commit c7b57bc Author: Igor Savelev <igor.savelev@team.bumble.com> Date: Thu Jan 4 17:17:21 2024 +0000 Added isAsync and throws to Subscript (#1249) * Added isAsync and throws to Subscript * Updated Linux version of AutoMockable.swift commit fe41343 Author: Igor Savelev <igor.savelev@team.bumble.com> Date: Thu Jan 4 08:58:37 2024 +0000 Added generic requirements and generic parameters to Subscript (#1242) commit 23179e8 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 27 00:23:47 2023 +0400 docs: update metadata for 2.1.3 release commit e88363c Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 27 00:06:11 2023 +0400 docs: update metadata for 2.1.3 release commit d74237a Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Tue Dec 26 10:25:35 2023 +0400 update SwiftStencilKit & Stencil (#1246) commit 510ba24 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Sun Dec 24 01:16:03 2023 +0400 Introduce package access level (#1245) * added package modifier * added tests for Variable * added tests for package access level commit b11d2d3 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Sat Dec 23 19:39:24 2023 +0400 Add dynamic method modifier support (#1244) * added missing attributes to Attribute.Identifier enum * moved to Attribute.Identifier from raw strings in Method.swift * updated Method (linux version) * updated generated content * added unit tests for dynamic method modifier * added dynamic to Variable * updated generated runtime files * added tests for variable isDynamic * fixed compilation error * fixed compilation error commit 07a8b28 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 04:35:37 2023 +0400 Support method overriding in AutoMockable (#1240) * updated automockable stencil template * updated expected AutoMockable * updated CHANGELOG * added supported case for vararg * Added example protocols for overrides * More flexible support for overridden return types * Added support for closure return type * Added more methods for tests * updated AutoMockable.expected * reverted wrong trailing whitespace trimming * added missing member lookup * Squashed commit of the following: commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup * Squashed commit of the following: commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup * Squashed commit of the following: commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup * Revert "Merge branch 'master' into support-method-overriding" This reverts commit 3c81133, reversing changes made to 48816e2. * Revert "Squashed commit of the following:" This reverts commit 4f7d246. # Conflicts: # Templates/Tests/Expected/AutoMockable.expected * Updated AutoMockable.expected commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup commit db7cc85 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Sun Dec 17 10:00:37 2023 +0400 Fixed incorrect parsing of consequently declared "@" symbols (#1239) * Fixed bug with incorrect parsing of consequently declared "@" symbols * renamed `isMacros` to `isPropertyWrapper` for clarity commit 1502c0f Author: Igor Savelev <igor9774@gmail.com> Date: Fri Dec 15 14:48:48 2023 +0000 Fixed missing attributes in optional closure type name (#1237) * Fixed missing attributes in optional closure type name * Reverted changes in unwrappedTypeName * Added fix for implicitly unwrapped closures * Added forced brackets for optional existential and opaque types * Revert "Added forced brackets for optional existential and opaque types" This reverts commit 50ff6e7. commit 717e0ba Author: Krzysztof Zabłocki <krzysztof.zablocki@pixle.pl> Date: Mon Dec 4 14:42:17 2023 +0100 Update README.md commit 1642f1f Author: Pavel Trafimuk <pavel@viber.com> Date: Fri Dec 1 02:53:57 2023 +0300 Reduced counts of collisions for cache srf filenames (#1231) commit 184ee11 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Mon Nov 27 00:43:34 2023 +0400 Updated XcodeProj to 8.16.0 (#1228) * Updated XcodeProj to 8.16.0 * Updated CHANGELOG
commit 5856e3b Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Tue Jan 9 15:30:34 2024 -0500 Update AutoMockable.expected (#1253) * updated automockable.expected * updated CHANGELOG * attempt to resolve issue on Linux * added missing example code for linux commit 71c2d46 Author: rokridi <mohamed.aymen.landolsi@gmail.com> Date: Tue Jan 9 11:08:43 2024 +0100 [#1251] Swifty generated variable names + fixed generated mocks compilation issues due to method generic parameters (#1252) commit b62a8fc Author: Igor Savelev <igor.savelev@team.bumble.com> Date: Sat Jan 6 04:13:56 2024 +0000 Initialise Subscript's returnTypeName with TypeSyntax, not String (#1250) commit c7b57bc Author: Igor Savelev <igor.savelev@team.bumble.com> Date: Thu Jan 4 17:17:21 2024 +0000 Added isAsync and throws to Subscript (#1249) * Added isAsync and throws to Subscript * Updated Linux version of AutoMockable.swift commit fe41343 Author: Igor Savelev <igor.savelev@team.bumble.com> Date: Thu Jan 4 08:58:37 2024 +0000 Added generic requirements and generic parameters to Subscript (#1242) commit 23179e8 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 27 00:23:47 2023 +0400 docs: update metadata for 2.1.3 release commit e88363c Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 27 00:06:11 2023 +0400 docs: update metadata for 2.1.3 release commit d74237a Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Tue Dec 26 10:25:35 2023 +0400 update SwiftStencilKit & Stencil (#1246) commit 510ba24 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Sun Dec 24 01:16:03 2023 +0400 Introduce package access level (#1245) * added package modifier * added tests for Variable * added tests for package access level commit b11d2d3 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Sat Dec 23 19:39:24 2023 +0400 Add dynamic method modifier support (#1244) * added missing attributes to Attribute.Identifier enum * moved to Attribute.Identifier from raw strings in Method.swift * updated Method (linux version) * updated generated content * added unit tests for dynamic method modifier * added dynamic to Variable * updated generated runtime files * added tests for variable isDynamic * fixed compilation error * fixed compilation error commit 07a8b28 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 04:35:37 2023 +0400 Support method overriding in AutoMockable (#1240) * updated automockable stencil template * updated expected AutoMockable * updated CHANGELOG * added supported case for vararg * Added example protocols for overrides * More flexible support for overridden return types * Added support for closure return type * Added more methods for tests * updated AutoMockable.expected * reverted wrong trailing whitespace trimming * added missing member lookup * Squashed commit of the following: commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup * Squashed commit of the following: commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup * Squashed commit of the following: commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup * Revert "Merge branch 'master' into support-method-overriding" This reverts commit 3c81133, reversing changes made to 48816e2. * Revert "Squashed commit of the following:" This reverts commit 4f7d246. # Conflicts: # Templates/Tests/Expected/AutoMockable.expected * Updated AutoMockable.expected commit 7f85e02 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Wed Dec 20 01:10:31 2023 +0400 Support for variadic types as method arguments (#1241) * Added support for variadic types as method arguments * Added changelog entry * added example protocol with varargs * support for vararg in return type's closure * added missing member lookup commit db7cc85 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Sun Dec 17 10:00:37 2023 +0400 Fixed incorrect parsing of consequently declared "@" symbols (#1239) * Fixed bug with incorrect parsing of consequently declared "@" symbols * renamed `isMacros` to `isPropertyWrapper` for clarity commit 1502c0f Author: Igor Savelev <igor9774@gmail.com> Date: Fri Dec 15 14:48:48 2023 +0000 Fixed missing attributes in optional closure type name (#1237) * Fixed missing attributes in optional closure type name * Reverted changes in unwrappedTypeName * Added fix for implicitly unwrapped closures * Added forced brackets for optional existential and opaque types * Revert "Added forced brackets for optional existential and opaque types" This reverts commit 50ff6e7. commit 717e0ba Author: Krzysztof Zabłocki <krzysztof.zablocki@pixle.pl> Date: Mon Dec 4 14:42:17 2023 +0100 Update README.md commit 1642f1f Author: Pavel Trafimuk <pavel@viber.com> Date: Fri Dec 1 02:53:57 2023 +0300 Reduced counts of collisions for cache srf filenames (#1231) commit 184ee11 Author: Ruslan Alikhamov <r.alikhamov@gmail.com> Date: Mon Nov 27 00:43:34 2023 +0400 Updated XcodeProj to 8.16.0 (#1228) * Updated XcodeProj to 8.16.0 * Updated CHANGELOG
We found that there is no enough information in the current version of
Subscript
. Following the recommendation from #996, I added:GenericParameter
to describe the contents of generic parameters clause in subscript definitiongenericParameters
,genericRequirements
andisGeneric
to Subscript model.Now this example:
Produces output (protocol part is removed):