Browse Source

Avoid putting things like ValueType into Fail types for ValueType.Equals

Brian Fiete 1 year ago
parent
commit
337a94b8b5
1 changed files with 2 additions and 0 deletions
  1. 2 0
      IDEHelper/Compiler/CeMachine.cpp

+ 2 - 0
IDEHelper/Compiler/CeMachine.cpp

@@ -3578,6 +3578,7 @@ BfError* CeContext::Fail(const StringImpl& error)
 		return NULL;
 		return NULL;
 	if (mCurEmitContext != NULL)
 	if (mCurEmitContext != NULL)
 		mCurEmitContext->mFailed = true;
 		mCurEmitContext->mFailed = true;
+	SetAndRestoreValue<BfTypeInstance*> prevTypeInst(mCurModule->mCurTypeInstance, mCallerTypeInstance);
 	auto bfError = mCurModule->Fail(StrFormat("Unable to comptime %s", mCurModule->MethodToString(mCurMethodInstance).c_str()), mCurCallSource->mRefNode, (mCurEvalFlags & CeEvalFlags_PersistantError) != 0);
 	auto bfError = mCurModule->Fail(StrFormat("Unable to comptime %s", mCurModule->MethodToString(mCurMethodInstance).c_str()), mCurCallSource->mRefNode, (mCurEvalFlags & CeEvalFlags_PersistantError) != 0);
 	if (bfError == NULL)
 	if (bfError == NULL)
 		return NULL;
 		return NULL;
@@ -3593,6 +3594,7 @@ BfError* CeContext::Fail(const CeFrame& curFrame, const StringImpl& str)
 {
 {
 	if (mCurEmitContext != NULL)
 	if (mCurEmitContext != NULL)
 		mCurEmitContext->mFailed = true;
 		mCurEmitContext->mFailed = true;
+	SetAndRestoreValue<BfTypeInstance*> prevTypeInst(mCurModule->mCurTypeInstance, mCallerTypeInstance);
 	auto bfError = mCurModule->Fail(StrFormat("Unable to comptime %s", mCurModule->MethodToString(mCurMethodInstance).c_str()), mCurCallSource->mRefNode,
 	auto bfError = mCurModule->Fail(StrFormat("Unable to comptime %s", mCurModule->MethodToString(mCurMethodInstance).c_str()), mCurCallSource->mRefNode,
 		(mCurEvalFlags & CeEvalFlags_PersistantError) != 0,
 		(mCurEvalFlags & CeEvalFlags_PersistantError) != 0,
 		((mCurEvalFlags & CeEvalFlags_DeferIfNotOnlyError) != 0) && !mCurModule->mHadBuildError);
 		((mCurEvalFlags & CeEvalFlags_DeferIfNotOnlyError) != 0) && !mCurModule->mHadBuildError);