diff --git a/vlib/time/time_test.v b/vlib/time/time_test.v index 48ec08cf40..f02c0e85bb 100644 --- a/vlib/time/time_test.v +++ b/vlib/time/time_test.v @@ -286,3 +286,9 @@ fn test_add_seconds_to_time() { future_tm := now_tm.add_seconds(60) assert now_tm.unix < future_tm.unix } + +fn test_plus_equals_duration() { + mut d := time.second + d += time.second + assert d == 2 * time.second +} diff --git a/vlib/v/gen/c/assign.v b/vlib/v/gen/c/assign.v index 97f1fa5273..dbfa12d69d 100644 --- a/vlib/v/gen/c/assign.v +++ b/vlib/v/gen/c/assign.v @@ -454,6 +454,15 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) { g.expr(val) g.writeln(');') return + } else if left_sym.kind == .alias + && g.table.final_sym(g.unwrap_generic(var_type)).is_number() + && !left_sym.has_method(extracted_op) { + g.write(' = ') + g.expr(left) + g.write(' ${extracted_op} ') + g.expr(val) + g.write(';') + return } else { g.write(' = ${styp}_${util.replace_op(extracted_op)}(') method := g.table.find_method(left_sym, extracted_op) or {