Skip to content

Commit

Permalink
added HashTableBuilder.rootNode to white list (#19943)
Browse files Browse the repository at this point in the history
  • Loading branch information
olhotak authored Mar 25, 2024
2 parents 3197b49 + c222381 commit 7171211
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions compiler/src/dotty/tools/dotc/transform/init/Objects.scala
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,13 @@ import dotty.tools.dotc.core.Flags.AbstractOrTrait
* whole-program analysis. However, the check is not modular in terms of project boundaries.
*
*/
class Objects:
import Decorators.*
class Objects(using Context @constructorOnly):
val immutableHashSetBuider: Symbol = requiredClass("scala.collection.immutable.HashSetBuilder")
// TODO: this should really be an annotation on the rhs of the field initializer rather than the field itself.
val HashSetBuilder_rootNode: Symbol = immutableHashSetBuider.requiredValue("rootNode")

val whiteList = Set(HashSetBuilder_rootNode)

// ----------------------------- abstract domain -----------------------------

Expand Down Expand Up @@ -1687,8 +1693,8 @@ class Objects:
// class body
tpl.body.foreach {
case vdef : ValDef if !vdef.symbol.is(Flags.Lazy) && !vdef.rhs.isEmpty =>
val res = eval(vdef.rhs, thisV, klass)
val sym = vdef.symbol
val res = if (whiteList.contains(sym)) Bottom else eval(vdef.rhs, thisV, klass)
if sym.is(Flags.Mutable) then
val addr = Heap.fieldVarAddr(summon[Regions.Data], sym, State.currentObject)
thisV.initVar(sym, addr)
Expand Down

0 comments on commit 7171211

Please sign in to comment.