Skip to content

Explicit import to scala.Predef.assert can infer typer results for valid code #24620

@WojciechMazur

Description

@WojciechMazur

There seems to be something strange happening if scala.Predef.assert is explicitlly imported.
Issue spotted by OpenCB in iltotore/iron. Was spotted after applying patch to replace no longer allowed import scala.runtime.stdlibPatches.assert with scala.Predef.assert (required to shadow assert from utest library)

If we'd remove import scala.Predef.assert or use import io.github.iltotore.iron.{*, given} instead of package io.github.iltotore.iron the code would compile (the test code of mentioned library)
Otherwise we get a compile error hinting that implicit conversion was not applied

Issue requires further minimization, I'll try to provide it in the upcoming days

Compiler version

All Scala versions: tested with 3.3.7 and 3.8.0-RC2

Reproducer code

//> using dep "io.github.iltotore::iron-cats:3.2.1"

// import io.github.iltotore.iron.{*, given} // works 
package io.github.iltotore.iron // fails

import _root_.cats.kernel.CommutativeSemigroup
import _root_.cats.instances.all.*
import io.github.iltotore.iron.cats.{*, given}
import io.github.iltotore.iron.constraint.all.*

import scala.Predef.assert // comment it to make it compile

@main def Test = 
    assert(CommutativeSemigroup[Int :| Positive].combine(1, 5) == 6)

Output

error] ./test.scala:14:58
[error] Found:    (1 : Int)
[error] Required: io.github.iltotore.iron.IronType[Int,
[error]   io.github.iltotore.iron.constraint.all.Positive]
[error] 
[error] The following import might fix the problem:
[error] 
[error]   import io.github.iltotore.iron.autoRefine
[error] 
[error]     assert(CommutativeSemigroup[Int :| Positive].combine(1, 5) == 6)
[error]                                                          ^
[error] ./test.scala:14:61
[error] Found:    (5 : Int)
[error] Required: io.github.iltotore.iron.IronType[Int,
[error]   io.github.iltotore.iron.constraint.all.Positive]
[error] 
[error] The following import might fix the problem:
[error] 
[error]   import io.github.iltotore.iron.autoRefine
[error] 
[error]     assert(CommutativeSemigroup[Int :| Positive].combine(1, 5) == 6)
[error]                                                             ^
Error compiling project (Scala 3.3.7, JVM (21))

Expectation

Should compile in every combination

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions