Generic extension exception and multiple extension methos for single userdata: fixes#1
Merged
mistial-dev merged 2 commits intomistial-dev:pr-130from Jun 30, 2025
Conversation
added 2 commits
March 8, 2016 11:40
…called extension method in each userdata instance example : userdata.ExtMethod1() --called fine userdata.ExtMethod2() --null indexer!
… case when multiple extension methods with similar signature were available in different extension classes, and one of the extension methods has generic argument as extendable type: TweenSettingsExtensions.SetEase<T>(this T t, Ease ease) where T : Tween; //this one cause exception shot upon calling SetEase SpecialTweenExtensions.SetEase(this Tweener @this, Ease ease)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Attribution
This PR is from @havietisov - originally submitted as
moonsharp-devs#130
In case we called some extension method in context of some userdata, we are not allowed to call
any other because they will not be indexed (always nil)
example :
userdata.ExtMethod1() --called fine
userdata.ExtMethod2() --null indexer!
and, if we call ExtMethod2 first, ExtMethod1 will be nil
ExtensionMethodsRegistry.GetGenericMatch trying to create GetGenericTypeDefinition of type
parameter.
Example:
TweenSettingsExtensions.SetEase(this T t, Ease ease) //causes exception being thrown, because
we are not allowed to create T<>