Skip to content

Commit 3c32ef4

Browse files
committed
Move the logic of getting ctor params to trees
1 parent 4b3fa86 commit 3c32ef4

File tree

3 files changed

+7
-11
lines changed

3 files changed

+7
-11
lines changed

hkmc2/shared/src/main/scala/hkmc2/codegen/Lowering.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ class Lowering(using TL, Raise, Elaborator.State):
220220
subTerm(trm): st =>
221221
val args = args0.getOrElse(Nil)
222222
val clsParams = cls match
223-
case cls: ClassSymbol => cls.params
223+
case cls: ClassSymbol => cls.tree.params
224224
case _: ModuleSymbol => Nil
225225
assert(args0.isEmpty || clsParams.length === args.length)
226226
def mkArgs(args: Ls[(LocalSymbol & NamedSymbol) -> BlockLocalSymbol])(using Subst): Case -> Block = args match

hkmc2/shared/src/main/scala/hkmc2/semantics/Symbol.scala

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,7 @@ class TermSymbol(val k: TermDefKind, val owner: Opt[InnerSymbol], val id: Tree.I
125125
override def toString: Str = s"${owner.getOrElse("")}.${id.name}"
126126

127127

128-
sealed trait CtorSymbol extends Symbol:
129-
/** Get parameter symbols. */
130-
def params: Ls[LocalSymbol & NamedSymbol] = Nil
128+
sealed trait CtorSymbol extends Symbol
131129

132130
case class Extr(isTop: Bool) extends CtorSymbol:
133131
def nme: Str = if isTop then "Top" else "Bot"
@@ -161,13 +159,6 @@ class ClassSymbol(val tree: Tree.TypeDef, val id: Tree.Ident)
161159
def arity: Int = defn match
162160
case S(d) => d.paramsOpt.fold(0)(_.length)
163161
case N => tree.paramLists.headOption.fold(0)(_.fields.length)
164-
/** Get parameter symbols. Create new symbols if not elaborated. */
165-
override lazy val params: Ls[LocalSymbol & NamedSymbol] = defn match
166-
case S(d) => d.paramsOpt.fold(Nil)(_.map(_._2))
167-
case N => tree.paramLists.headOption.fold(Nil): tup =>
168-
tup.fields.iterator.flatMap(_.param).map:
169-
case (id, _) => TermSymbol(ParamBind, S(this), id)
170-
.toList
171162

172163
class ModuleSymbol(val tree: Tree.TypeDef, val id: Tree.Ident)
173164
extends MemberSymbol[ModuleDef] with CtorSymbol with InnerSymbol:

hkmc2/shared/src/main/scala/hkmc2/syntax/Tree.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,4 +288,9 @@ trait TypeDefImpl extends TypeOrTermDef:
288288
case _ =>
289289
Map.empty
290290

291+
lazy val params: Ls[semantics.TermSymbol] =
292+
this.paramLists.headOption.fold(Nil): tup =>
293+
tup.fields.iterator.flatMap(_.param).map:
294+
case (id, _) => semantics.TermSymbol(ParamBind, symbol.asClsLike, id)
295+
.toList
291296

0 commit comments

Comments
 (0)