diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 5783d221..cbd6a711 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -3074,6 +3074,11 @@ BfTypedValue BfExprEvaluator::LoadLocal(BfLocalVariable* varDecl, bool allowRef) localResult = BfTypedValue(varDecl->mAddr, varDecl->mResolvedType, BfTypedValueKind_SplatHead); else if (!varDecl->mResolvedType->IsValuelessType()) localResult = BfTypedValue(varDecl->mValue, varDecl->mResolvedType, BfTypedValueKind_SplatHead); + else if ((varDecl->mResolvedType->IsRef()) && (!allowRef)) + { + BF_ASSERT(varDecl->mResolvedType->IsValuelessType()); + localResult = BfTypedValue(varDecl->mValue, varDecl->mResolvedType->GetUnderlyingType()); + } else localResult = BfTypedValue(varDecl->mValue, varDecl->mResolvedType); //BF_ASSERT(varDecl->mValue.IsArg()); diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 10cf5256..0b223e4d 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -15887,6 +15887,7 @@ void BfModule::ProcessMethod_SetupParams(BfMethodInstance* methodInstance, BfTyp paramVar->mIsSplat = true; // Treat skipped (valueless) as a splat paramVar->mValue = mBfIRBuilder->GetFakeVal(); } + paramVar->mIsLowered = resolvedType->GetLoweredType(BfTypeUsage_Parameter, &loweredTypeCode, &loweredTypeCode2) != BfTypeCode_None; paramVar->mIsStruct = resolvedType->IsComposite() && !resolvedType->IsTypedPrimitive(); paramVar->mParamIdx = paramIdx;