소스 검색

Fix for deferring evaluation of conditionals with nulls for nullables

Brian Fiete 5 년 전
부모
커밋
a8d57c5d28
1개의 변경된 파일5개의 추가작업 그리고 2개의 파일을 삭제
  1. 5 2
      IDEHelper/Compiler/BfDeferEvalChecker.cpp

+ 5 - 2
IDEHelper/Compiler/BfDeferEvalChecker.cpp

@@ -16,6 +16,7 @@ void BfDeferEvalChecker::Visit(BfLiteralExpression* literalExpr)
 {
 {
 	switch (literalExpr->mValue.mTypeCode)
 	switch (literalExpr->mValue.mTypeCode)
 	{
 	{
+	case BfTypeCode_NullPtr:
 	case BfTypeCode_Boolean:
 	case BfTypeCode_Boolean:
 	case BfTypeCode_Char8:
 	case BfTypeCode_Char8:
 	case BfTypeCode_Int8:
 	case BfTypeCode_Int8:
@@ -82,9 +83,11 @@ void BfDeferEvalChecker::Visit(BfInvocationExpression* invocationExpr)
 }
 }
 
 
 void BfDeferEvalChecker::Visit(BfConditionalExpression* condExpr)
 void BfDeferEvalChecker::Visit(BfConditionalExpression* condExpr)
-{		
+{	
+	VisitChild(condExpr->mConditionExpression);
+	bool prev = mNeedsDeferEval;
 	VisitChild(condExpr->mTrueExpression);
 	VisitChild(condExpr->mTrueExpression);
-	bool prev = mNeedsDeferEval;	
+	prev |= mNeedsDeferEval;	
 	VisitChild(condExpr->mFalseExpression);
 	VisitChild(condExpr->mFalseExpression);
 	mNeedsDeferEval |= prev;
 	mNeedsDeferEval |= prev;
 }
 }