vlib,cgen: cleanup array inits using `.repeat() instead of new init syntax

pull/5542/head
Emily Hudson 2020-06-27 20:46:04 +01:00 committed by GitHub
parent 2669610be9
commit c84bafbdae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 52 additions and 53 deletions

View File

@ -68,7 +68,7 @@ pub fn new(size int) BitField {
output := BitField{ output := BitField{
size: size size: size
//field: *u32(calloc(bitnslots(size) * slot_size / 8)) //field: *u32(calloc(bitnslots(size) * slot_size / 8))
field: [u32(0)].repeat(bitnslots(size)) field: []u32{len:bitnslots(size)}
} }
return output return output
} }
@ -394,7 +394,7 @@ pub fn (mut instance BitField) resize(new_size int) {
new_bitnslots := bitnslots(new_size) new_bitnslots := bitnslots(new_size)
old_size := instance.size old_size := instance.size
old_bitnslots := bitnslots(old_size) old_bitnslots := bitnslots(old_size)
mut field := [u32(0)].repeat(new_bitnslots) mut field := []u32{len:new_bitnslots}
for i := 0; i < old_bitnslots && i < new_bitnslots; i++ { for i := 0; i < old_bitnslots && i < new_bitnslots; i++ {
field[i] = instance.field[i] field[i] = instance.field[i]
} }

View File

@ -1,7 +1,6 @@
import bitfield import bitfield
import rand import rand
import time
fn test_bf_new_size() { fn test_bf_new_size() {
instance := bitfield.new(75) instance := bitfield.new(75)

View File

@ -7,7 +7,7 @@ pub fn run (op fn(), label string, code Wi_si_code, status int) int {
sys_exit(0) sys_exit(0)
} }
siginfo := [0].repeat(int(Sig_index.si_size)) siginfo := []int{len:int(Sig_index.si_size)}
e := sys_waitid(.p_pid, child, intptr(&siginfo[0]), .wexited, 0) e := sys_waitid(.p_pid, child, intptr(&siginfo[0]), .wexited, 0)

View File

@ -40,7 +40,7 @@ fn check_read_write_pipe() {
// sys_read // sys_read
// sys_close // sys_close
// //
buffer0 := [byte(0)].repeat(128) buffer0 := []byte{len:(128)}
buffer := byteptr(buffer0.data) buffer := byteptr(buffer0.data)
fd := [-1, -1] fd := [-1, -1]
@ -87,7 +87,7 @@ fn check_read_file() {
sys_close sys_close
sys_open sys_open
*/ */
buffer0 := [byte(0)].repeat(128) buffer0 := []byte{len:(128)}
buffer := byteptr(buffer0.data) buffer := byteptr(buffer0.data)
test_file := "sample_text1.txt" test_file := "sample_text1.txt"

View File

@ -8,7 +8,7 @@ fn check_string_eq () {
} }
fn check_i64_tos() { fn check_i64_tos() {
buffer0 := [byte(0)].repeat(128) buffer0 := []byte{len:(128)}
buffer := byteptr(buffer0.data) buffer := byteptr(buffer0.data)
s0 := i64_tos(buffer, 70, 140, 10) s0 := i64_tos(buffer, 70, 140, 10)

View File

@ -399,7 +399,7 @@ pub fn (c byte) is_capital() bool {
} }
pub fn (b []byte) clone() []byte { pub fn (b []byte) clone() []byte {
mut res := [byte(0)].repeat(b.len) mut res := []byte{len: b.len}
//mut res := make([]byte, {repeat:b.len}) //mut res := make([]byte, {repeat:b.len})
for i in 0..b.len { for i in 0..b.len {
res[i] = b[i] res[i] = b[i]

View File

@ -379,7 +379,7 @@ fn (n &mapnode) subkeys(mut keys []string, at int) int {
} }
pub fn (m &SortedMap) keys() []string { pub fn (m &SortedMap) keys() []string {
mut keys := [''].repeat(m.len) mut keys := []string{len:m.len}
if isnil(m.root) || m.root.len == 0 { if isnil(m.root) || m.root.len == 0 {
return keys return keys
} }

View File

@ -595,7 +595,7 @@ fn (s string) index_kmp(p string) int {
if p.len > s.len { if p.len > s.len {
return -1 return -1
} }
mut prefix := [0].repeat(p.len) mut prefix := []int{len:p.len}
mut j := 0 mut j := 0
for i := 1; i < p.len; i++ { for i := 1; i < p.len; i++ {
for p.str[j] != p.str[i] && j > 0 { for p.str[j] != p.str[i] && j > 0 {
@ -1326,7 +1326,7 @@ pub fn (s string) bytes() []byte {
if s.len == 0 { if s.len == 0 {
return [] return []
} }
mut buf := [byte(0)].repeat(s.len) mut buf := []byte{ len:s.len }
C.memcpy(buf.data, s.str, s.len) C.memcpy(buf.data, s.str, s.len)
return buf return buf
} }

View File

@ -30,7 +30,7 @@ fn new_aes_cbc(b AesCipher, iv []byte) AesCbc {
b: b, b: b,
block_size: b.block_size(), block_size: b.block_size(),
iv: iv.clone(), iv: iv.clone(),
tmp: [byte(0)].repeat(b.block_size()), tmp: []byte{len:(b.block_size()),}
} }
} }

View File

@ -9,8 +9,8 @@ module aes
fn new_cipher_generic(key []byte) AesCipher { fn new_cipher_generic(key []byte) AesCipher {
n := key.len + 28 n := key.len + 28
mut c := AesCipher{ mut c := AesCipher{
enc: [u32(0)].repeat(n) enc: []u32{len:(n)}
dec: [u32(0)].repeat(n) dec: []u32{len:(n)}
} }
expand_key_generic(key, mut c.enc, mut c.dec) expand_key_generic(key, mut c.enc, mut c.dec)
return c return c

View File

@ -38,8 +38,8 @@ mut:
} }
fn (mut d Digest) reset() { fn (mut d Digest) reset() {
d.s = [u32(0)].repeat(4) d.s = []u32{len:(4)}
d.x = [byte(0)].repeat(block_size) d.x = []byte{len:(block_size)}
d.s[0] = u32(init0) d.s[0] = u32(init0)
d.s[1] = u32(init1) d.s[1] = u32(init1)
d.s[2] = u32(init2) d.s[2] = u32(init2)
@ -105,7 +105,7 @@ pub fn (mut d Digest) checksum() []byte {
// //
// 1 byte end marker :: 0-63 padding bytes :: 8 byte length // 1 byte end marker :: 0-63 padding bytes :: 8 byte length
// tmp := [1 + 63 + 8]byte{0x80} // tmp := [1 + 63 + 8]byte{0x80}
mut tmp := [byte(0)].repeat(1 + 63 + 8) mut tmp := []byte{len:(1 + 63 + 8)}
tmp[0] = 0x80 tmp[0] = 0x80
pad := ((55 - d.len) % 64) // calculate number of padding bytes pad := ((55 - d.len) % 64) // calculate number of padding bytes
binary.little_endian_put_u64(mut tmp[1+pad..], d.len<<3) // append length in bits binary.little_endian_put_u64(mut tmp[1+pad..], d.len<<3) // append length in bits
@ -117,7 +117,7 @@ pub fn (mut d Digest) checksum() []byte {
panic('d.nx != 0') panic('d.nx != 0')
} }
digest := [byte(0)].repeat(size) digest := []byte{len:(size)}
binary.little_endian_put_u32(mut digest, d.s[0]) binary.little_endian_put_u32(mut digest, d.s[0])
binary.little_endian_put_u32(mut digest[4..], d.s[1]) binary.little_endian_put_u32(mut digest[4..], d.s[1])

View File

@ -38,7 +38,7 @@ pub fn int_u64(max u64) ?u64 {
fn bytes_to_u64(b []byte) []u64 { fn bytes_to_u64(b []byte) []u64 {
ws := 64/8 ws := 64/8
mut z := [u64(0)].repeat((b.len + ws - 1) / ws) mut z := []u64{len:((b.len + ws - 1) / ws)}
mut i := b.len mut i := b.len
for k := 0; i >= ws; k++ { for k := 0; i >= ws; k++ {
z[k] = binary.big_endian_u64(b[i-ws..i]) z[k] = binary.big_endian_u64(b[i-ws..i])

View File

@ -30,7 +30,7 @@ pub fn new_cipher(key []byte) ?Cipher {
return error('crypto.rc4: invalid key size ' + key.len.str()) return error('crypto.rc4: invalid key size ' + key.len.str())
} }
mut c := Cipher{ mut c := Cipher{
s: [u32(0)].repeat(256) s: []u32{len:(256)}
} }
for i in 0..256 { for i in 0..256 {
c.s[i] = u32(i) c.s[i] = u32(i)

View File

@ -40,8 +40,8 @@ mut:
} }
fn (mut d Digest) reset() { fn (mut d Digest) reset() {
d.x = [byte(0)].repeat(chunk) d.x = []byte{len:(chunk)}
d.h = [u32(0)].repeat(5) d.h = []u32{len:(5)}
d.h[0] = u32(init0) d.h[0] = u32(init0)
d.h[1] = u32(init1) d.h[1] = u32(init1)
d.h[2] = u32(init2) d.h[2] = u32(init2)
@ -105,7 +105,7 @@ pub fn (d &Digest) sum(b_in []byte) []byte {
fn (mut d Digest) checksum() []byte { fn (mut d Digest) checksum() []byte {
mut len := d.len mut len := d.len
// Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64.
mut tmp := [byte(0)].repeat(64) mut tmp := []byte{len:(64)}
tmp[0] = 0x80 tmp[0] = 0x80
@ -120,7 +120,7 @@ fn (mut d Digest) checksum() []byte {
binary.big_endian_put_u64(mut tmp, len) binary.big_endian_put_u64(mut tmp, len)
d.write(tmp[..8]) d.write(tmp[..8])
mut digest := [byte(0)].repeat(size) mut digest := []byte{len:(size)}
binary.big_endian_put_u32(mut digest, d.h[0]) binary.big_endian_put_u32(mut digest, d.h[0])
binary.big_endian_put_u32(mut digest[4..], d.h[1]) binary.big_endian_put_u32(mut digest[4..], d.h[1])

View File

@ -19,7 +19,7 @@ const (
fn block_generic(mut dig Digest, p_ []byte) { fn block_generic(mut dig Digest, p_ []byte) {
mut p := p_ mut p := p_
mut w := [u32(0)].repeat(16) mut w := []u32{len:(16)}
mut h0 := dig.h[0] mut h0 := dig.h[0]
mut h1 := dig.h[1] mut h1 := dig.h[1]
mut h2 := dig.h[2] mut h2 := dig.h[2]

View File

@ -52,8 +52,8 @@ mut:
} }
fn (mut d Digest) reset() { fn (mut d Digest) reset() {
d.h = [u32(0)].repeat(8) d.h = []u32{len:(8)}
d.x = [byte(0)].repeat(chunk) d.x = []byte{len:(chunk)}
if !d.is224 { if !d.is224 {
d.h[0] = u32(init0) d.h[0] = u32(init0)
d.h[1] = u32(init1) d.h[1] = u32(init1)
@ -144,7 +144,7 @@ fn (d &Digest) sum(b_in []byte) []byte {
fn (mut d Digest) checksum() []byte { fn (mut d Digest) checksum() []byte {
mut len := d.len mut len := d.len
// Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64.
mut tmp := [byte(0)].repeat(64) mut tmp := []byte{len:(64)}
tmp[0] = 0x80 tmp[0] = 0x80
if int(len)%64 < 56 { if int(len)%64 < 56 {
d.write(tmp[..56-int(len)%64]) d.write(tmp[..56-int(len)%64])
@ -161,7 +161,7 @@ fn (mut d Digest) checksum() []byte {
panic('d.nx != 0') panic('d.nx != 0')
} }
digest := [byte(0)].repeat(size) digest := []byte{len:(size)}
binary.big_endian_put_u32(mut digest, d.h[0]) binary.big_endian_put_u32(mut digest, d.h[0])
binary.big_endian_put_u32(mut digest[4..], d.h[1]) binary.big_endian_put_u32(mut digest[4..], d.h[1])
@ -194,7 +194,7 @@ pub fn sum224(data []byte) []byte {
mut d := new224() mut d := new224()
d.write(data) d.write(data)
sum := d.checksum() sum := d.checksum()
sum224 := [byte(0)].repeat(size224) sum224 := []byte{len:(size224)}
copy(sum224, sum[..size224]) copy(sum224, sum[..size224])
return sum224 return sum224
} }

View File

@ -83,7 +83,7 @@ const (
fn block_generic(mut dig Digest, p_ []byte) { fn block_generic(mut dig Digest, p_ []byte) {
mut p := p_ mut p := p_
mut w := [u32(0)].repeat(64) mut w := []u32{len:(64)}
mut h0 := dig.h[0] mut h0 := dig.h[0]
mut h1 := dig.h[1] mut h1 := dig.h[1]

View File

@ -70,8 +70,8 @@ mut:
} }
fn (mut d Digest) reset() { fn (mut d Digest) reset() {
d.h = [u64(0)].repeat(8) d.h = []u64{len:(8)}
d.x = [byte(0)].repeat(chunk) d.x = []byte{len:(chunk)}
match d.function { match d.function {
.sha384 { .sha384 {
d.h[0] = init0_384 d.h[0] = init0_384
@ -212,7 +212,7 @@ fn (d &Digest) sum(b_in []byte) []byte {
fn (mut d Digest) checksum() []byte { fn (mut d Digest) checksum() []byte {
// Padding. Add a 1 bit and 0 bits until 112 bytes mod 128. // Padding. Add a 1 bit and 0 bits until 112 bytes mod 128.
mut len := d.len mut len := d.len
mut tmp := [byte(0)].repeat(128) mut tmp := []byte{len:(128)}
tmp[0] = 0x80 tmp[0] = 0x80
if int(len) % 128 < 112 { if int(len) % 128 < 112 {
d.write(tmp[..112 - int(len) % 128]) d.write(tmp[..112 - int(len) % 128])
@ -228,7 +228,7 @@ fn (mut d Digest) checksum() []byte {
if d.nx != 0 { if d.nx != 0 {
panic('d.nx != 0') panic('d.nx != 0')
} }
mut digest := [byte(0)].repeat(size) mut digest := []byte{len:(size)}
binary.big_endian_put_u64(mut digest, d.h[0]) binary.big_endian_put_u64(mut digest, d.h[0])
binary.big_endian_put_u64(mut digest[8..], d.h[1]) binary.big_endian_put_u64(mut digest[8..], d.h[1])
binary.big_endian_put_u64(mut digest[16..], d.h[2]) binary.big_endian_put_u64(mut digest[16..], d.h[2])
@ -254,7 +254,7 @@ pub fn sum384(data []byte) []byte {
mut d := new_digest(.sha384) mut d := new_digest(.sha384)
d.write(data) d.write(data)
sum := d.checksum() sum := d.checksum()
sum384 := [byte(0)].repeat(size384) sum384 := []byte{len:(size384)}
copy(sum384, sum[..size384]) copy(sum384, sum[..size384])
return sum384 return sum384
} }
@ -264,7 +264,7 @@ pub fn sum512_224(data []byte) []byte {
mut d := new_digest(.sha512_224) mut d := new_digest(.sha512_224)
d.write(data) d.write(data)
sum := d.checksum() sum := d.checksum()
sum224 := [byte(0)].repeat(size224) sum224 := []byte{len:(size224)}
copy(sum224, sum[..size224]) copy(sum224, sum[..size224])
return sum224 return sum224
} }
@ -274,7 +274,7 @@ pub fn sum512_256(data []byte) []byte {
mut d := new_digest(.sha512_256) mut d := new_digest(.sha512_256)
d.write(data) d.write(data)
sum := d.checksum() sum := d.checksum()
sum256 := [byte(0)].repeat(size256) sum256 := []byte{len:(size256)}
copy(sum256, sum[..size256]) copy(sum256, sum[..size256])
return sum256 return sum256
} }

View File

@ -95,7 +95,7 @@ const (
fn block_generic(mut dig Digest, p_ []byte) { fn block_generic(mut dig Digest, p_ []byte) {
mut p := p_ mut p := p_
mut w := [u64(0)].repeat(80) mut w := []u64{len:(80)}
mut h0 := dig.h[0] mut h0 := dig.h[0]
mut h1 := dig.h[1] mut h1 := dig.h[1]
mut h2 := dig.h[2] mut h2 := dig.h[2]

View File

@ -256,14 +256,14 @@ fn escape(s string, mode EncodingMode) string {
if space_count == 0 && hex_count == 0 { if space_count == 0 && hex_count == 0 {
return s return s
} }
buf := [byte(0)].repeat(64) buf := []byte{len:(64)}
mut t := []byte{} mut t := []byte{}
required := s.len + 2 * hex_count required := s.len + 2 * hex_count
if required <= buf.len { if required <= buf.len {
t = buf[..required] t = buf[..required]
} }
else { else {
t = [byte(0)].repeat(required) t = []byte{len:(required)}
} }
if hex_count == 0 { if hex_count == 0 {
copy(t, s.bytes()) copy(t, s.bytes())

View File

@ -26,7 +26,7 @@ fn mt19937_basic_test() {
fn gen_randoms(seed_data []u32, bound int) []u64 { fn gen_randoms(seed_data []u32, bound int) []u64 {
bound_u64 := u64(bound) bound_u64 := u64(bound)
mut randoms := [u64(0)].repeat(20) mut randoms := []u64{len:(20)}
mut rnd := mt19937.MT19937RNG{} mut rnd := mt19937.MT19937RNG{}
rnd.seed(seed_data) rnd.seed(seed_data)
for i in 0 .. 20 { for i in 0 .. 20 {

View File

@ -16,7 +16,7 @@ const (
fn gen_randoms(seed_data []u32, bound int) []u64 { fn gen_randoms(seed_data []u32, bound int) []u64 {
bound_u64 := u64(bound) bound_u64 := u64(bound)
mut randoms := [u64(0)].repeat(20) mut randoms := []u64{len:(20)}
mut rnd := musl.MuslRNG{} mut rnd := musl.MuslRNG{}
rnd.seed(seed_data) rnd.seed(seed_data)
for i in 0 .. 20 { for i in 0 .. 20 {

View File

@ -16,7 +16,7 @@ const (
fn gen_randoms(seed_data []u32, bound int) []u64 { fn gen_randoms(seed_data []u32, bound int) []u64 {
bound_u64 := u64(bound) bound_u64 := u64(bound)
mut randoms := [u64(0)].repeat(20) mut randoms := []u64{len:(20)}
mut rnd := splitmix64.SplitMix64RNG{} mut rnd := splitmix64.SplitMix64RNG{}
rnd.seed(seed_data) rnd.seed(seed_data)
for i in 0 .. 20 { for i in 0 .. 20 {

View File

@ -16,7 +16,7 @@ const (
fn gen_randoms(seed_data []u32, bound int) []u64 { fn gen_randoms(seed_data []u32, bound int) []u64 {
bound_u64 := u64(bound) bound_u64 := u64(bound)
mut randoms := [u64(0)].repeat(20) mut randoms := []u64{len:(20)}
mut rnd := wyrand.WyRandRNG{} mut rnd := wyrand.WyRandRNG{}
rnd.seed(seed_data) rnd.seed(seed_data)
for i in 0 .. 20 { for i in 0 .. 20 {

View File

@ -479,7 +479,7 @@ enum CharClass_parse_state {
} }
fn (re RE) get_char_class(pc int) string { fn (re RE) get_char_class(pc int) string {
buf := [byte(0)].repeat(re.cc.len) buf := []byte{len:(re.cc.len)}
mut buf_ptr := &byte(&buf) mut buf_ptr := &byte(&buf)
mut cc_i := re.prog[pc].cc_index mut cc_i := re.prog[pc].cc_index

View File

@ -77,7 +77,7 @@ fn (d Dec32) get_string_32(neg bool, i_n_digit int, i_pad_digit int) string {
fw_zeros = pad_digit -out_len fw_zeros = pad_digit -out_len
} }
mut buf := [byte(0)].repeat(out_len + 5 + 1 +1) // sign + mant_len + . + e + e_sign + exp_len(2) + \0 mut buf := []byte{len:int(out_len + 5 + 1 +1)} // sign + mant_len + . + e + e_sign + exp_len(2) + \0}
mut i := 0 mut i := 0
if neg { if neg {

View File

@ -90,7 +90,7 @@ fn (d Dec64) get_string_64(neg bool, i_n_digit int, i_pad_digit int) string {
fw_zeros = pad_digit - out_len fw_zeros = pad_digit - out_len
} }
mut buf := [byte(0)].repeat(out_len + 6 + 1 +1 + fw_zeros) // sign + mant_len + . + e + e_sign + exp_len(2) + \0 mut buf := []byte{len:(out_len + 6 + 1 +1 + fw_zeros)} // sign + mant_len + . + e + e_sign + exp_len(2) + \0}
mut i := 0 mut i := 0
if neg { if neg {

View File

@ -114,8 +114,8 @@ pub fn (mut pool PoolProcessor) work_on_pointers(items []voidptr) {
pool.results = [] pool.results = []
pool.thread_contexts = [] pool.thread_contexts = []
pool.items << items pool.items << items
pool.results = [voidptr(0)].repeat(pool.items.len) pool.results = []voidptr{len:(pool.items.len)}
pool.thread_contexts << [voidptr(0)].repeat(pool.items.len) pool.thread_contexts << []voidptr{len:(pool.items.len)}
pool.waitgroup.add(njobs) pool.waitgroup.add(njobs)
for i := 0; i < njobs; i++ { for i := 0; i < njobs; i++ {
if njobs > 1 { if njobs > 1 {

View File

@ -841,9 +841,9 @@ fn (mut g Gen) for_in(it ast.ForInStmt) {
g.writeln(', $key, &($val_styp[]){ $zero }));') g.writeln(', $key, &($val_styp[]){ $zero }));')
} }
g.stmts(it.stmts) g.stmts(it.stmts)
g.writeln('/* for in map cleanup*/ string_free(&$key);')
g.writeln('}') g.writeln('}')
g.writeln('/*for in map cleanup*/') g.writeln('/*for in map cleanup*/')
g.writeln('for (int $idx = 0; $idx < ${keys_tmp}.len; $idx++) { string_free(&(($key_styp*)${keys_tmp}.data)[$idx]); }')
g.writeln('array_free(&$keys_tmp);') g.writeln('array_free(&$keys_tmp);')
} else if it.cond_type.has_flag(.variadic) { } else if it.cond_type.has_flag(.variadic) {
g.writeln('// FOR IN cond_type/variadic') g.writeln('// FOR IN cond_type/variadic')

View File

@ -25,7 +25,7 @@ fn get_user_opt() ?User {
fn (u &User) foo() { fn (u &User) foo() {
age := u.age age := u.age
zzz := [''].repeat(u.age) zzz := []string{len:(u.age)}
a := 10 a := 10
if a in [10, 20, 30] { if a in [10, 20, 30] {
b := 10 b := 10

View File

@ -148,7 +148,7 @@ fn build_keys() map[string]Kind {
// TODO remove once we have `enum Kind { name('name') if('if') ... }` // TODO remove once we have `enum Kind { name('name') if('if') ... }`
fn build_token_str() []string { fn build_token_str() []string {
mut s := [''].repeat(nr_tokens) mut s := []string{len:(nr_tokens)}
s[Kind.unknown] = 'unknown' s[Kind.unknown] = 'unknown'
s[Kind.eof] = 'eof' s[Kind.eof] = 'eof'
s[Kind.name] = 'name' s[Kind.name] = 'name'