Browse Source

Fixed explicit variant->bool casting bug.

Mark Sibly 7 years ago
parent
commit
5791e308cb
1 changed files with 7 additions and 3 deletions
  1. 7 3
      src/mx2cc/expr.monkey2

+ 7 - 3
src/mx2cc/expr.monkey2

@@ -606,16 +606,20 @@ Class CastExpr Extends Expr
 		Local castOp:=value.FindValue( "cast" )
 		Local castOp:=value.FindValue( "cast" )
 		If castOp value=castOp.Invoke( Null )
 		If castOp value=castOp.Invoke( Null )
 
 
-		'simple upcast?		
+		'simple upcast - probably shouldn't?		
 		If value.type.DistanceToType( type )>=0
 		If value.type.DistanceToType( type )>=0
+			
 			'special case variant->bool
 			'special case variant->bool
 			If value.type.Equals( Type.VariantType ) And type.Equals( Type.BoolType )
 			If value.type.Equals( Type.VariantType ) And type.Equals( Type.BoolType )
-				Return New ExplicitCastValue( type,value )
+				
+				Return New ExplicitCastValue( type,value.ToRValue() )
+			
 			Endif
 			Endif
+			
 			Return value.UpCast( type )
 			Return value.UpCast( type )
+			
 		Endif
 		Endif
 
 
-		'nope...		
 		value=value.ToRValue()
 		value=value.ToRValue()
 		
 		
 		If Not value.type.CanCastToType( type ) 
 		If Not value.type.CanCastToType( type )