From fb23269e3305d21abf44f67c0b4fe001c2d26312 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Fri, 6 Nov 2020 09:48:39 -0800 Subject: [PATCH] Fixed issue with non-static mixin usage inside a lambda --- IDEHelper/Compiler/BfModule.cpp | 3 ++- IDEHelper/Tests/src/Mixins.bf | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index f4521f6f..4f4b2270 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -13032,7 +13032,8 @@ BfTypedValue BfModule::ReferenceStaticField(BfFieldInstance* fieldInstance) BfTypedValue BfModule::GetThis() { auto useMethodState = mCurMethodState; - while ((useMethodState != NULL) && (useMethodState->mClosureState != NULL) && (useMethodState->mClosureState->mCapturing)) + while ((useMethodState != NULL) && (useMethodState->mClosureState != NULL) && (useMethodState->mClosureState->mCapturing) && + (useMethodState->mMixinState == NULL)) { useMethodState = useMethodState->mPrevMethodState; } diff --git a/IDEHelper/Tests/src/Mixins.bf b/IDEHelper/Tests/src/Mixins.bf index 166c2287..288d74e9 100644 --- a/IDEHelper/Tests/src/Mixins.bf +++ b/IDEHelper/Tests/src/Mixins.bf @@ -62,6 +62,17 @@ namespace Tests Test.Assert(val1 == 123); GetVal2!(var val2); Test.Assert(val2 == 234); + + void CheckStr(char8* cStr) + { + Test.Assert(StringView(cStr) == "Test"); + } + + function void(StringView sv) func = (sv) => + { + CheckStr(sv.ToScopeCStr!()); + }; + func("Test"); } [Test]