summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semfold.nim5
-rw-r--r--tests/distinct/t9079.nim19
2 files changed, 20 insertions, 4 deletions
diff --git a/compiler/semfold.nim b/compiler/semfold.nim
index 0018f0755..627877cbe 100644
--- a/compiler/semfold.nim
+++ b/compiler/semfold.nim
@@ -37,10 +37,7 @@ proc newIntNodeT*(intVal: BiggestInt, n: PNode; g: ModuleGraph): PNode =
 
 proc newFloatNodeT*(floatVal: BiggestFloat, n: PNode; g: ModuleGraph): PNode =
   result = newFloatNode(nkFloatLit, floatVal)
-  if skipTypes(n.typ, abstractVarRange).kind == tyFloat:
-    result.typ = getFloatLitType(g, result)
-  else:
-    result.typ = n.typ
+  result.typ = n.typ
   result.info = n.info
 
 proc newStrNodeT*(strVal: string, n: PNode; g: ModuleGraph): PNode =
diff --git a/tests/distinct/t9079.nim b/tests/distinct/t9079.nim
new file mode 100644
index 000000000..a891ef27d
--- /dev/null
+++ b/tests/distinct/t9079.nim
@@ -0,0 +1,19 @@
+discard """
+  output: '''
+25.0
+210.0
+'''
+"""
+
+type
+  Dollars = distinct float
+
+proc `$`(d: Dollars): string {.borrow.}
+proc `*` *(a, b: Dollars): Dollars {.borrow.}
+proc `+` *(a, b: Dollars): Dollars {.borrow.}
+
+var a = Dollars(20)
+a = Dollars(25.0)
+echo a
+a = 10.Dollars * (20.Dollars + 1.Dollars)
+echo a