From ff6c7c5b90910ceb157ad99d1b136cbcb17cc74f Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 26 Dec 2020 07:36:26 -0800 Subject: [PATCH] Fixed mixins parameter mutability with splattables --- IDEHelper/Compiler/BfDefBuilder.cpp | 1 + IDEHelper/Compiler/BfModule.cpp | 2 +- IDEHelper/Compiler/BfResolvedTypeUtils.cpp | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfDefBuilder.cpp b/IDEHelper/Compiler/BfDefBuilder.cpp index 7c7d0e95..e0f9a2f1 100644 --- a/IDEHelper/Compiler/BfDefBuilder.cpp +++ b/IDEHelper/Compiler/BfDefBuilder.cpp @@ -586,6 +586,7 @@ BfMethodDef* BfDefBuilder::CreateMethodDef(BfMethodDeclaration* methodDeclaratio if (methodDeclaration->mNameNode != NULL) methodDef->mName = methodDeclaration->mNameNode->ToString(); methodDef->mMethodType = BfMethodType_Mixin; + methodDef->mIsNoSplat = true; } else { diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 5cea7464..3d193cc7 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -16848,7 +16848,7 @@ void BfModule::ProcessMethod_SetupParams(BfMethodInstance* methodInstance, BfTyp { paramVar->mIsSplat = true; } - else if (resolvedType->IsComposite() && resolvedType->IsSplattable()) + else if ((resolvedType->IsComposite()) && (resolvedType->IsSplattable())) { if ((!mIsConstModule) && (methodInstance->AllowsSplatting())) { diff --git a/IDEHelper/Compiler/BfResolvedTypeUtils.cpp b/IDEHelper/Compiler/BfResolvedTypeUtils.cpp index 71851fd1..b171624a 100644 --- a/IDEHelper/Compiler/BfResolvedTypeUtils.cpp +++ b/IDEHelper/Compiler/BfResolvedTypeUtils.cpp @@ -2479,6 +2479,8 @@ BfFieldDef* BfTupleType::AddField(const StringImpl& name) void BfTupleType::Finish() { + BF_ASSERT(!mTypeFailed); + auto bfSystem = mTypeDef->mSystem; mSource = new BfSource(bfSystem); mTypeDef->mSource = mSource;