Skip to content

Commit 28bf386

Browse files
Use explicit InlineNumeric for BigDecimal
1 parent 66db95a commit 28bf386

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

InlineNumeric.scala

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -219,32 +219,33 @@ object tests:
219219
inline def foo[T: InlineNumeric](a: T, b: T) =
220220
a + b * b
221221

222-
inline def integDiv[T: InlineIntegral](a: T, b: T) =
222+
inline def div[T: InlineIntegral](a: T, b: T) =
223223
import InlineIntegral.{/, %}
224224
a / b % b
225225

226-
inline def fracDiv[T: InlineFractional](a: T, b: T) =
226+
inline def div[T: InlineFractional](a: T, b: T) =
227227
import InlineFractional.{/}
228228
a / b + a
229229

230-
inline def bar[T: InlineNumeric](a: T) = a.toInt
230+
inline def bar[T: InlineNumeric](a: T) =
231+
a.toInt
231232

232-
inline def signInt[T: InlineIntegral](a: T) = a.sign
233-
inline def signFrac[T: InlineFractional](a: T) = a.sign
233+
inline def sign[T: InlineNumeric](a: T) =
234+
a.sign
234235

235236
def test(a: Int, b: Int) =
236-
foo(a, b) // should be a + b * b // can check with -Xprint:inlining
237-
foo(a.toShort, b.toShort) // should be a + b * b
237+
val v1 = foo(a, b) // should be a + b * b // can check with -Xprint:inlining
238+
val v2 = foo(a.toShort, b.toShort) // should be a + b * b
238239

239-
integDiv(BigDecimal(a), BigDecimal(b)) // should be BigDecimal(a) quot BigDecimal(b) remainder BigDecimal(b)
240-
fracDiv(BigDecimal(a), BigDecimal(b)) // should be BigDecimal(a) / BigDecimal(b) + BigDecimal(a)
240+
val v3 = div(BigDecimal(a), BigDecimal(b))(using BigDecimalAsIfInlineIntegral) // should be BigDecimal(a) quot BigDecimal(b) remainder BigDecimal(b)
241+
val v4 = div(BigDecimal(a), BigDecimal(b))(using BigDecimalIsInlineFractional) // should be BigDecimal(a) / BigDecimal(b) + BigDecimal(a)
241242

242-
bar(a.toFloat) // should be a.toFloat.toInt
243-
bar(a) // should be a
243+
val v5 = bar(a.toFloat) // should be a.toFloat.toInt
244+
val v6 = bar(a) // should be a
244245

245-
signInt(a)
246-
signInt(a.toChar)
247-
signFrac(-7F)
246+
val v7 = sign(a)
247+
val v8 = sign(a.toChar)
248+
val v9 = sign(-7F)
248249

249-
signInt(BigDecimal(a))
250-
signFrac(BigDecimal(a)) // the condition with isNan() should be removed
250+
val v10 = sign(BigDecimal(a))(using BigDecimalAsIfInlineIntegral)
251+
val v11 = sign(BigDecimal(a))(using BigDecimalIsInlineFractional) // the condition with isNan() should be removed, i.e. it should be equivalent to v10

0 commit comments

Comments
 (0)