Skip to content

Commit 2020309

Browse files
committed
Merge #222: 🐛 Add a check for multiple definitions of the type alias
a673dd4 fix: add a check for multiple definitions of the type alias (LesterEvSe) Pull request description: ACKs for top commit: KyrylR: utACK a673dd4 Tree-SHA512: fa6016b692649d1104fcab67e6911e466535d051a287149b9c7b96e7731046629433f855408a7d94495c6219563fbf92ea3fa7f0b12efee3875366ebb8b6c07a
2 parents 7a786b9 + a673dd4 commit 2020309

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

src/ast.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -617,8 +617,11 @@ impl Scope {
617617
///
618618
/// There are any undefined aliases.
619619
pub fn insert_alias(&mut self, name: AliasName, ty: AliasedType) -> Result<(), Error> {
620-
let resolved_ty = self.resolve(&ty)?;
621-
self.aliases.insert(name, resolved_ty);
620+
if self.aliases.contains_key(&name) {
621+
return Err(Error::RedefinedAlias(name));
622+
}
623+
624+
let _ = self.aliases.insert(name, self.resolve(&ty)?);
622625
Ok(())
623626
}
624627

src/error.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ pub enum Error {
428428
ExpressionNotConstant,
429429
IntegerOutOfBounds(UIntType),
430430
UndefinedVariable(Identifier),
431+
RedefinedAlias(AliasName),
431432
UndefinedAlias(AliasName),
432433
VariableReuseInPattern(Identifier),
433434
WitnessReused(WitnessName),
@@ -546,6 +547,10 @@ impl fmt::Display for Error {
546547
f,
547548
"Variable `{identifier}` is not defined"
548549
),
550+
Error::RedefinedAlias(identifier) => write!(
551+
f,
552+
"Type alias `{identifier}` was defined multiple times"
553+
),
549554
Error::UndefinedAlias(identifier) => write!(
550555
f,
551556
"Type alias `{identifier}` is not defined"

0 commit comments

Comments
 (0)