diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 13ae845b..6367d31b 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -8934,6 +8934,7 @@ BfTypedValue BfExprEvaluator::ResolveArgValue(BfResolvedArg& resolvedArg, BfType } localVar->mResolvedType = variableType; + mModule->PopulateType(variableType); if (!variableType->IsValuelessType()) localVar->mAddr = mModule->CreateAlloca(variableType); localVar->mIsReadOnly = isLet; diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 188d817e..9d3c038c 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -9062,7 +9062,11 @@ BfTypedValue BfModule::CreateValueFromExpression(BfExprEvaluator& exprEvaluator, { if ((!mBfIRBuilder->mIgnoreWrites) && (!typedVal.mType->IsDataIncomplete()) && (!typedVal.mType->IsValuelessType()) && (!typedVal.mType->IsVar())) { - BF_ASSERT(!typedVal.mValue.IsFake()); + if (typedVal.mValue.IsFake()) + { + InternalError("Unexpected fakeval in CreateValueFromExpression"); + typedVal = GetDefaultTypedValue(typedVal.mType); + } } typedVal = LoadValue(typedVal, 0, exprEvaluator.mIsVolatileReference); @@ -16461,7 +16465,10 @@ void BfModule::AssertErrorState() if (mCompiler->IsAutocomplete()) return; - BF_ASSERT(mCompiler->mPassInstance->HasFailed()); + if (mCompiler->mPassInstance->HasFailed()) + return; + + InternalError("Compiler in invalid state but AssertErrorState failed to prior error"); } void BfModule::AssertParseErrorState()