From dfbf7a2792a4019ea2792a4526e83058f184c75d Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sun, 29 Sep 2019 07:42:58 -0700 Subject: [PATCH] We were failing on an invalid type lookup in a tuple bind --- IDEHelper/Compiler/BfStmtEvaluator.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index ca2498b3..c52294d1 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -2089,8 +2089,10 @@ void BfModule::HandleCaseEnumMatch_Tuple(BfTypedValue tupleVal, const BfSizedArr if (!isVarOrLet) { auto wantType = ResolveTypeRef(varDecl->mTypeRef); + if (wantType == NULL) + wantType = mContext->mBfObjectType; if (wantType != NULL) - tupleElement = Cast(varDecl->mTypeRef, tupleElement, wantType); + tupleElement = Cast(varDecl->mTypeRef, tupleElement, wantType); if (!tupleElement) tupleElement = GetDefaultTypedValue(wantType); } @@ -4828,8 +4830,11 @@ void BfModule::Visit(BfUsingStatement* usingStmt) AssertErrorState(); failed = true; } - else - embeddedValue = BfTypedValue(localVar->mAddr, localVar->mResolvedType, true); + else + { + embeddedValue = exprEvaluator.LoadLocal(localVar); + } + //exprEvaluator.CheckModifyResult(embeddedValue, usingStmt->mVariableDeclaration->mNameNode,); } else { @@ -4839,7 +4844,7 @@ void BfModule::Visit(BfUsingStatement* usingStmt) } if (!failed) - { + { exprEvaluator.mFunctionBindResult = &functionBindResult; BfResolvedArgs resolvedArgs; exprEvaluator.MatchMethod(usingStmt->mVariableDeclaration, NULL, embeddedValue, false, false, "Dispose", resolvedArgs, NULL);