Skip to content

Commit

Permalink
Revert "Drop redundant butNot = Param clause in isAnchor" (#21566)
Browse files Browse the repository at this point in the history
This reverts commit 9d88c80. 
Closes #21521

The `ClassTypeParamCreationFlags` include both `TypeParam` and `Deferred`.
In effect, a class type parameter was considered an anchor for implicit search, 
by `sym.is(Deferred)` as a sufficient condition.

For a failing example, one can try asserting:
```scala
|| sym.is(Deferred).ensuring(_ == sym.is(Deferred, butNot = Param))
```
in `ImplicitRunInfo#isAnchor` and a test with `summon[Ordering[Int]]`.

In that example, at least, the flags happen to be set by
`Scala2Unpickler#readDisambiguatedSymbol`:

https://github.com/scala/scala3/blob/614170f4545ea6da8f07e0c4b0f2fdfe01377270/compiler/src/dotty/tools/dotc/core/unpickleScala2/Scala2Unpickler.scala#L560
  • Loading branch information
EugeneFlesselle authored Sep 14, 2024
2 parents e5be3a1 + 1b1dd16 commit eb42a4d
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion compiler/src/dotty/tools/dotc/typer/Implicits.scala
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,7 @@ trait ImplicitRunInfo:
private def isAnchor(sym: Symbol) =
sym.isClass && !isExcluded(sym)
|| sym.isOpaqueAlias
|| sym.is(Deferred)
|| sym.is(Deferred, butNot = Param)
|| sym.info.isMatchAlias

private def computeIScope(rootTp: Type): OfTypeImplicits =
Expand Down

0 comments on commit eb42a4d

Please sign in to comment.