Kaynağa Gözat

Fixed empty return with lambda return type inference

Brian Fiete 4 yıl önce
ebeveyn
işleme
97d9a4508d
1 değiştirilmiş dosya ile 8 ekleme ve 16 silme
  1. 8 16
      IDEHelper/Compiler/BfStmtEvaluator.cpp

+ 8 - 16
IDEHelper/Compiler/BfStmtEvaluator.cpp

@@ -4941,30 +4941,22 @@ void BfModule::Visit(BfReturnStatement* returnStmt)
 	if (returnStmt->mExpression == NULL)
 	{
 		MarkScopeLeft(&mCurMethodState->mHeadScope);
-		if (retType->IsVoid())
+		
+		if ((retType != NULL) && (retType->IsVoid()))
 		{
 			EmitReturn(BfTypedValue());
 			return;
 		}
 
-		if (retType != NULL)
-		{
-			Fail("Expected return value", returnStmt);
-			return;
-		}				
-
-		EmitReturn(GetDefaultTypedValue(retType));		
-		return;
+		Fail("Expected return value", returnStmt);
+		if (retType != NULL)			
+			EmitReturn(GetDefaultTypedValue(retType));
+		else
+			EmitReturn(BfTypedValue());
+		return;		
 	}
 
 	BfType* expectingReturnType = retType;
-	if ((expectingReturnType != NULL) && (expectingReturnType->IsVar()))
-	{
-		NOP;
-		// 		expectingReturnType = NULL;
-	}
-
-	
 	BfType* origType;
 	BfExprEvaluator exprEvaluator(this);
 	bool alreadyWritten = false;