Skip to content

Commit 116b88c

Browse files
committed
Simplify: No need to put owner and region in object
1 parent 69521b3 commit 116b88c

File tree

1 file changed

+6
-14
lines changed

1 file changed

+6
-14
lines changed

compiler/src/dotty/tools/dotc/transform/init/Objects.scala

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -123,29 +123,25 @@ object Objects:
123123
/**
124124
* Rerepsents values that are instances of the specified class.
125125
*
126-
* For immutable classes (classes without mutable fields, non-transitive), the parameter regions
127-
* is always empty and `owner` is `NoSymbol`.
128-
*
129126
* Note that the 2nd parameter block does not take part in the definition of equality.
130127
*/
131128
case class OfClass private (
132-
klass: ClassSymbol, outer: Value, ctor: Symbol, args: List[Value], env: Env.Data,
133-
regions: Regions.Data, owner: Symbol)(
129+
klass: ClassSymbol, outer: Value, ctor: Symbol, args: List[Value], env: Env.Data)(
134130
valsMap: mutable.Map[Symbol, Value], varsMap: mutable.Map[Symbol, Heap.Addr], outersMap: mutable.Map[ClassSymbol, Value])
135131
extends Ref(valsMap, varsMap, outersMap):
136132
def widenedCopy(outer: Value, args: List[Value], env: Env.Data): OfClass =
137-
new OfClass(klass, outer, ctor, args, env, regions, owner)(this.valsMap, this.varsMap, outersMap)
133+
new OfClass(klass, outer, ctor, args, env)(this.valsMap, this.varsMap, outersMap)
138134

139135
def show(using Context) =
140136
val valFields = vals.map(_.show + " -> " + _.show)
141137
"OfClass(" + klass.show + ", outer = " + outer + ", args = " + args.map(_.show) + ", vals = " + valFields + ")"
142138

143139
object OfClass:
144140
def apply(
145-
klass: ClassSymbol, outer: Value, ctor: Symbol, args: List[Value], env: Env.Data, regions: Regions.Data, owner: Symbol)(
141+
klass: ClassSymbol, outer: Value, ctor: Symbol, args: List[Value], env: Env.Data)(
146142
using Context
147143
): OfClass =
148-
val instance = new OfClass(klass, outer, ctor, args, env, regions, owner)(
144+
val instance = new OfClass(klass, outer, ctor, args, env)(
149145
valsMap = mutable.Map.empty, varsMap = mutable.Map.empty, outersMap = mutable.Map.empty
150146
)
151147
instance.initOuter(klass, outer)
@@ -515,7 +511,7 @@ object Objects:
515511
if height == 0 then Cold
516512
else Fun(code, thisV.widen(height), klass, env.widen(height))
517513

518-
case ref @ OfClass(klass, outer, _, args, env, _, _) =>
514+
case ref @ OfClass(klass, outer, _, args, env) =>
519515
if height == 0 then
520516
Cold
521517
else
@@ -747,11 +743,7 @@ object Objects:
747743
// klass.enclosingMethod returns its primary constructor
748744
Env.resolveEnv(klass.owner.enclosingMethod, outer, summon[Env.Data]).getOrElse(Cold -> Env.NoEnv)
749745

750-
// Immutable objects do not care about owners and context
751-
val owner = if isMutable(klass) then State.currentObject else NoSymbol
752-
val regions = if isMutable(klass) then summon[Regions.Data] else Regions.empty
753-
754-
val instance = OfClass(klass, outerWidened, ctor, args.map(_.value), envWidened, regions, owner)
746+
val instance = OfClass(klass, outerWidened, ctor, args.map(_.value), envWidened)
755747
callConstructor(instance, ctor, args)
756748
instance
757749

0 commit comments

Comments
 (0)