fix: use apply() instead of get() for Maps
This commit is contained in:
parent
30cf42ee3a
commit
ae9625b586
@ -120,12 +120,15 @@ object renamer {
|
|||||||
globalNumbering: mutable.Map[String, Int],
|
globalNumbering: mutable.Map[String, Int],
|
||||||
errors: mutable.Builder[Error, List[Error]]
|
errors: mutable.Builder[Error, List[Error]]
|
||||||
): Unit = {
|
): Unit = {
|
||||||
scope.current.withDefault(scope.parent).get((ident.v, identType)) match {
|
// Unfortunately map defaults only work with `.apply()`, which throws an error when the key is not found.
|
||||||
case Some(Ident(_, uid)) => ident.uid = uid
|
// Neither is there a way to check whether a default exists, so we have to use a try-catch.
|
||||||
case None => {
|
try {
|
||||||
|
val Ident(_, uid) = scope.current.withDefault(scope.parent)((ident.v, identType))
|
||||||
|
ident.uid = uid
|
||||||
|
} catch {
|
||||||
|
case _: NoSuchElementException =>
|
||||||
errors += Error.UndefinedIdentifier(ident, identType)
|
errors += Error.UndefinedIdentifier(ident, identType)
|
||||||
scope.add(?, ident, identType)
|
scope.add(?, ident, identType)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user