cgen: fix struct field init within fn without result type (fix #24970) (#24973)

This commit is contained in:
Felipe Pena 2025-07-25 12:11:18 -03:00 committed by GitHub
parent e5eed5c5a4
commit d9c7387da0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 38 additions and 1 deletions

View File

@ -7239,10 +7239,10 @@ fn (mut g Gen) or_block(var_name string, or_block ast.OrExpr, return_type ast.Ty
g.writeln('\t${styp} ${err_obj} = {0};')
if g.fn_decl.return_type.has_flag(.result) {
g.writeln('\t${err_obj}.is_error = true;')
g.writeln('\t${err_obj}.err = ${cvar_name}${tmp_op}err;')
} else if g.fn_decl.return_type.has_flag(.option) {
g.writeln('\t${err_obj}.state = 2;')
}
g.writeln('\t${err_obj}.err = ${cvar_name}${tmp_op}err;')
g.writeln('\treturn ${err_obj};')
}
}

View File

@ -0,0 +1,5 @@
_result_math__big__Integer _t1 = math__big__integer_from_string(_S("115792089237316195423570985008687907853269984665640564039457584007913129639747"));
if (_t1.is_error) {
math__big__Integer _t2 = {0};
return _t2;
}

View File

View File

@ -0,0 +1,32 @@
import math
import math.big { Integer }
import crypto.rand
struct SSS {
mut:
prime Integer = big.integer_from_string('115792089237316195423570985008687907853269984665640564039457584007913129639747')!
}
// random returns a random number from the range (0, prime-1) inclusive
fn (s SSS) random() !Integer {
mut result := big.zero_int + s.prime
result = result - big.one_int
return rand.int_big(result)
}
// mod_inverse computes the multiplicative inverse of the number on the field
// prime; more specifically, number * inverse == 1; Note: number should never be
// zero
fn mod_inverse(number Integer) Integer {
s := SSS{}
copy := number % s.prime
pcopy := s.prime
_, _, y := math.egcd(pcopy.int(), copy.int())
return (s.prime + big.integer_from_i64(y)) % s.prime
}
fn main() {
mod_inverse(big.integer_from_string('1')!)
}