cgen/fmt: fix assign_stmt fix & cgen test & hash tests & fmt
parent
630913d872
commit
083964522b
|
@ -7,7 +7,7 @@
|
|||
module crc32
|
||||
|
||||
// polynomials
|
||||
const (
|
||||
pub const (
|
||||
ieee = 0xedb88320
|
||||
castagnoli = 0x82f63b78
|
||||
koopman = 0xeb31d82e
|
||||
|
@ -26,7 +26,7 @@ mut:
|
|||
fn(c mut Crc32) generate_table(poly int) {
|
||||
for i in 0..256 {
|
||||
mut crc := u32(i)
|
||||
for j in 0..8 {
|
||||
for _ in 0..8 {
|
||||
if crc & u32(1) == u32(1) {
|
||||
crc = (crc >> 1) ^ u32(poly)
|
||||
} else {
|
||||
|
@ -40,7 +40,7 @@ fn(c mut Crc32) generate_table(poly int) {
|
|||
fn(c &Crc32) sum32(b []byte) u32 {
|
||||
mut crc := ~u32(0)
|
||||
for i in 0..b.len {
|
||||
crc = c.table[byte(crc)^b[i]] ^ u32(crc >> u32(8))
|
||||
crc = c.table[byte(crc)^b[i]] ^ (crc >> 8)
|
||||
}
|
||||
return ~crc
|
||||
}
|
||||
|
|
|
@ -4,12 +4,12 @@ fn test_hash_crc32() {
|
|||
b1 := 'testing crc32'.bytes()
|
||||
sum1 := crc32.sum(b1)
|
||||
assert sum1 == u32(1212124400)
|
||||
assert sum1.hex() == '0x483f8cf0'
|
||||
assert sum1.hex() == '483f8cf0'
|
||||
|
||||
|
||||
c := crc32.new(crc32.ieee)
|
||||
b2 := 'testing crc32 again'.bytes()
|
||||
sum2 := c.checksum(b2)
|
||||
assert sum2 == u32(1420327025)
|
||||
assert sum2.hex() == '0x54a87871'
|
||||
assert sum2.hex() == '54a87871'
|
||||
}
|
||||
|
|
|
@ -7,6 +7,6 @@ fn test_fnv1a() {
|
|||
a := 'apple'
|
||||
b := fnv1a.sum64_string(a)
|
||||
c := fnv1a.sum64(a.bytes())
|
||||
assert b.hex() == '0xf74a62a458befdbf'
|
||||
assert c.hex() == '0xf74a62a458befdbf'
|
||||
assert b.hex() == 'f74a62a458befdbf'
|
||||
assert c.hex() == 'f74a62a458befdbf'
|
||||
}
|
||||
|
|
|
@ -42,8 +42,8 @@ pub fn (b mut Builder) write(s string) {
|
|||
|
||||
pub fn (b mut Builder) go_back(n int) {
|
||||
b.buf.trim(b.buf.len-n)
|
||||
//b.len -= n
|
||||
}
|
||||
b.len -= n
|
||||
}
|
||||
|
||||
pub fn (b mut Builder) writeln(s string) {
|
||||
// for c in s {
|
||||
|
|
|
@ -27,6 +27,10 @@ pub fn (node &FnDecl) str(t &table.Table) string {
|
|||
name := node.name.after('.')
|
||||
f.write('fn ${receiver}${name}(')
|
||||
for i, arg in node.args {
|
||||
// skip receiver
|
||||
if node.is_method && i == 0 {
|
||||
continue
|
||||
}
|
||||
is_last_arg := i == node.args.len - 1
|
||||
should_add_type := is_last_arg || node.args[i + 1].typ != arg.typ ||
|
||||
(node.is_variadic && i == node.args.len - 2)
|
||||
|
|
|
@ -302,14 +302,16 @@ fn (g mut Gen) gen_assign_stmt(assign_stmt ast.AssignStmt) {
|
|||
g.expr(assign_stmt.right[0])
|
||||
g.writeln(';')
|
||||
for i, ident in assign_stmt.left {
|
||||
if ident.kind == .blank_ident {
|
||||
continue
|
||||
}
|
||||
ident_var_info := ident.var_info()
|
||||
styp := g.typ(ident_var_info.typ)
|
||||
if ident.kind == .blank_ident {
|
||||
g.writeln('{ $styp _ = ${mr_var_name}.arg$i};')
|
||||
}
|
||||
else {
|
||||
g.writeln('$styp $ident.name = ${mr_var_name}.arg$i;')
|
||||
if assign_stmt.op == .decl_assign {
|
||||
g.write('$styp ')
|
||||
}
|
||||
g.expr(ident)
|
||||
g.writeln(' = ${mr_var_name}.arg$i;')
|
||||
}
|
||||
}
|
||||
// `a := 1` | `a,b := 1,2`
|
||||
|
@ -339,7 +341,11 @@ fn (g mut Gen) gen_assign_stmt(assign_stmt ast.AssignStmt) {
|
|||
}
|
||||
}
|
||||
else {
|
||||
g.write('$styp $ident.name = ')
|
||||
if assign_stmt.op == .decl_assign {
|
||||
g.write('$styp ')
|
||||
}
|
||||
g.expr(ident)
|
||||
g.write(' = ')
|
||||
g.expr(val)
|
||||
}
|
||||
g.writeln(';')
|
||||
|
|
|
@ -90,7 +90,7 @@ i < 10; i++) {
|
|||
bool q = true || false;
|
||||
bool b2 = array_get(bools, 0) || true;
|
||||
bool b3 = get_bool() || true;
|
||||
int f = array_int_first(nums);
|
||||
int f = array_first(nums);
|
||||
string d = tos3("d");
|
||||
println(string_add(s, d));
|
||||
}
|
||||
|
|
|
@ -175,7 +175,6 @@ fn end() {
|
|||
e := 2 + 3 * 4
|
||||
//mut a := [1,2,3]
|
||||
//(a << 4) + 2
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ int main() {
|
|||
a.a = tos3("da");
|
||||
a.b.a = 111;
|
||||
string a1 = a.a;
|
||||
int a2 = Bar_testa(b);
|
||||
int a2 = Bar_testa(&b);
|
||||
int c = testa();
|
||||
c = 1;
|
||||
string d = testb(1);
|
||||
|
@ -57,8 +57,8 @@ int main() {
|
|||
string ma1 = tos3("hello");
|
||||
string ma2 = tos3("vlang");
|
||||
multi_return_int_string mr_578 = mr_test();
|
||||
int mr1 = mr_578->arg[0];
|
||||
string mr2 = mr_578->arg[1];
|
||||
int mr1 = mr_578.arg0;
|
||||
string mr2 = mr_578.arg1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue