From fa3914e6748a57f30cf363eaf06b0871c751f1c4 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 1 Jun 2020 05:16:26 -0700 Subject: [PATCH] Fixed crash with embedded aborted autocomplete methodInfo --- IDEHelper/Compiler/BfExprEvaluator.cpp | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 620d9008..ab58f13a 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -11846,16 +11846,12 @@ void BfExprEvaluator::Visit(BfObjectCreateExpression* objCreateExpr) bindResult.mWantsArgs = true; SetAndRestoreValue prevBindResult(mFunctionBindResult, &bindResult); - BfIRValue appendSizeValue; - //BfTypedValue emtpyThis(BfIRValue(), resolvedTypeRef, resolvedTypeRef->IsStruct()); + BfIRValue appendSizeValue; BfTypedValue emtpyThis(mModule->mBfIRBuilder->GetFakeVal(), resolvedTypeRef, resolvedTypeRef->IsStruct()); BfResolvedArgs argValues(objCreateExpr->mOpenToken, &objCreateExpr->mArguments, &objCreateExpr->mCommas, objCreateExpr->mCloseToken); ResolveArgValues(argValues, BfResolveArgFlag_DeferParamEval); //// - /*SetAndRestoreValue prevAttributeState(mModule->mAttributeState, mPrefixedAttributeState); - if (mPrefixedAttributeState != NULL) - mPrefixedAttributeState->mUsed = true;*/ if (typeInstance == NULL) { // No CTOR needed @@ -11871,8 +11867,8 @@ void BfExprEvaluator::Visit(BfObjectCreateExpression* objCreateExpr) MatchConstructor(objCreateExpr->mTypeRef, objCreateExpr, emtpyThis, typeInstance, argValues, false, true); if ((wasCapturingMethodInfo) && (!autoComplete->mIsCapturingMethodMatchInfo)) { - autoComplete->mIsCapturingMethodMatchInfo = true; - BF_ASSERT(autoComplete->mMethodMatchInfo != NULL); + if (autoComplete->mMethodMatchInfo != NULL) + autoComplete->mIsCapturingMethodMatchInfo = true; } else autoComplete->mIsCapturingMethodMatchInfo = false; @@ -11883,14 +11879,7 @@ void BfExprEvaluator::Visit(BfObjectCreateExpression* objCreateExpr) } mModule->ValidateAllocation(typeInstance, objCreateExpr->mTypeRef); - //prevAttributeState.Restore(); prevBindResult.Restore(); - - /*if ((typeInstance != NULL) && (bindResult.mMethodInstance == NULL)) - { - mModule->AssertErrorState(); - return; - }*/ int allocAlign = resolvedTypeRef->mAlign; if (typeInstance != NULL)