Skip to content

Commit

Permalink
sema: fix enum field value processing
Browse files Browse the repository at this point in the history
  • Loading branch information
mertcandav committed Feb 16, 2024
1 parent 625e050 commit a80e003
Showing 1 changed file with 14 additions and 14 deletions.
28 changes: 14 additions & 14 deletions std/jule/sema/sema.jule
Original file line number Diff line number Diff line change
Expand Up @@ -580,24 +580,20 @@ impl Sema {
dc.check()
}

fn check_generic_quantity(mut self, required: int, given: int, error_token: Token): (ok: bool) {
fn check_generic_quantity(mut self, required: int, given: int, token: Token): (ok: bool) {
match {
| required == 0 && given > 0:
self.push_err(error_token, LogMsg.NotHasGenerics)
self.push_err(token, LogMsg.NotHasGenerics)
ret false

| required > 0 && given == 0:
self.push_err(error_token, LogMsg.HasGenerics)
self.push_err(token, LogMsg.HasGenerics)
ret false

| required < given:
self.push_err(error_token, LogMsg.GenericsOverflow)
self.push_err(token, LogMsg.GenericsOverflow)
ret false

| required > given:
self.push_err(error_token, LogMsg.MissingGenerics)
self.push_err(token, LogMsg.MissingGenerics)
ret false

|:
ret true
}
Expand Down Expand Up @@ -1201,19 +1197,23 @@ impl Sema {
}

fn check_enum_items_int(mut &self, mut &e: &Enum) {
let mut max = u64(types::max(e.kind.kind.prim().to_str()))
let prim = e.kind.kind.prim()
let mut max = u64(types::max(prim.to_str()))
for (i, mut item) in e.items {
if max == 0 {
self.push_err(item.token, LogMsg.OverflowLimits)
} else {
max--
}

if item.auto_expr() {
item.value = &Value{
data: &Data{
constant: Const.new_u64(max - (max - u64(i))),
},
data: new(Data),
}
match {
| types::is_sig_int(prim.to_str()):
item.value.data.constant = Const.new_i64(i64(max - (max - u64(i))))
|:
item.value.data.constant = Const.new_u64(max - (max - u64(i)))
}
item.value.data.model = item.value.data.constant
} else {
Expand Down

0 comments on commit a80e003

Please sign in to comment.