diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index bc1fcdd3..15cc6209 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -9629,7 +9629,9 @@ void BfModule::GetActiveTypeGenericParamInstances(SizedArraymGenericTypeInfo->mGenericExtensionInfo != NULL) { - auto activeTypeDef = GetActiveTypeDef(NULL, true); + // Note: original version had useMixinDecl set. Was there a reason for that? Causes issue 2118 + auto activeTypeDef = GetActiveTypeDef(NULL); + if ((activeTypeDef->mTypeDeclaration != genericTypeInst->mTypeDef->mTypeDeclaration) && (activeTypeDef->IsExtension())) { BfTypeDef* lookupTypeDef = activeTypeDef; diff --git a/IDEHelper/Tests/src/Mixins.bf b/IDEHelper/Tests/src/Mixins.bf index 2f665d40..3f7290d4 100644 --- a/IDEHelper/Tests/src/Mixins.bf +++ b/IDEHelper/Tests/src/Mixins.bf @@ -124,6 +124,37 @@ namespace Tests } } + class Foo where T : class + { + static void Test () + { + Helper.Pop!(); + } + } + + extension Foo + { + + } + + class Helper + { + + } + + extension Helper + { + static public mixin Pop () + { + Pop2() + } + + static public T Pop2 () where TVal : var, struct, INumeric + { + return default; + } + } + [Test] public static void TestBasics() { @@ -198,6 +229,8 @@ namespace Tests var sv2 = Unwrap!(svRes)..Trim(); Test.Assert(svRes.Value == "ab "); Test.Assert(sv2 == "ab"); + + Helper.Pop!(); } }