Pārlūkot izejas kodu

Further inf tweaks.

woollybah 7 gadi atpakaļ
vecāks
revīzija
18200eeb9e
2 mainītis faili ar 13 papildinājumiem un 10 dzēšanām
  1. 9 9
      ctranslator.bmx
  2. 4 1
      expr.bmx

+ 9 - 9
ctranslator.bmx

@@ -384,13 +384,13 @@ Type TCTranslator Extends TTranslator
 			If TLParamType( ty ) Return value
 			If TInt128Type( ty ) Return value
 			If TFloatType( ty ) Then
-				If value = "nan" Or value = "1.#IND0000" Then
+				If value = "nan" Or value.StartsWith("1.#IND0000") Then
 					Return "bbPOSNANf"
-				Else If value="-nan" Or value = "-1.#IND0000" Then
+				Else If value="-nan" Or value.StartsWith("-1.#IND0000") Then
 					Return "bbNEGNANf"
-				Else If value = "inf" Or value = "1.#INF0000" Then
+				Else If value = "inf" Or value.StartsWith("1.#INF0000") Then
 					Return "bbPOSINFf"
-				Else If value = "-inf" Or value = "-1.#INF0000" Then
+				Else If value = "-inf" Or value.StartsWith("-1.#INF0000") Then
 					Return "bbNEGINFf"
 				Else
 					If value.ToLower().Find("e")>=0 Then
@@ -403,13 +403,13 @@ Type TCTranslator Extends TTranslator
 				End If
 			End If
 			If TDoubleType( ty ) Or TFloat128Type(ty) Or TDouble128Type(ty) Or TFloat64Type(ty) Then
-				If value = "nan" Or value = "1.#IND0000" Then
+				If value = "nan" Or value.StartsWith("1.#IND0000") Then
 					Return "bbPOSNANd"
-				Else If value="-nan" Or value = "-1.#IND0000" Then
+				Else If value="-nan" Or value.StartsWith("-1.#IND0000") Then
 					Return "bbNEGNANd"
-				Else If value = "inf" Or value = "1.#INF0000" Then
+				Else If value = "inf" Or value.StartsWith("1.#INF0000") Then
 					Return "bbPOSINFd"
-				Else If value = "-inf" Or value = "-1.#INF0000" Then
+				Else If value = "-inf" Or value.StartsWith("-1.#INF0000") Then
 					Return "bbNEGINFd"
 				Else
 					If value.ToLower().Find("e") >=0 Then
@@ -5034,7 +5034,7 @@ End Rem
 				Return "0"
 			Else
 				If TDecimalType(expr.exprType) Then
-					If s.StartsWith("1.#INF0000") Then
+					If s.StartsWith("1.#INF0000") Or s = "1e1000" Then
 						s = "inf"
 					Else If s.StartsWith("-1.#INF0000") Then
 						s = "-inf"

+ 4 - 1
expr.bmx

@@ -1543,7 +1543,10 @@ Type TCastExpr Extends TExpr
 		EndIf
 
 		If TConstExpr( expr ) Then
-
+			If TDecimalType(TConstExpr( expr ).ty) And TDecimalType(ty) Then
+				Return New TConstExpr.Create(ty, TConstExpr( expr ).value).Semant()
+			End If
+			
 			Local ex:TExpr = EvalConst()
 			If flags & CAST_EXPLICIT Then
 				Return New TCastExpr.Create(exprType, ex, 1).Semant()