// compile | |
// Copyright 2016 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
// Issue 17918: slice out-of-bounds in ssa/cse | |
package dead | |
import ( | |
"fmt" | |
"time" | |
) | |
var ( | |
units = []struct { | |
divisor time.Duration | |
unit rune | |
}{ | |
{1000000, 's'}, | |
{60, 'm'}, | |
{60, 'h'}, | |
{24, 'd'}, | |
{7, 'w'}, | |
} | |
) | |
func foobar(d time.Duration) string { | |
d /= time.Microsecond | |
unit := 'u' | |
for _, f := range units { | |
if d%f.divisor != 0 { | |
break | |
} | |
d /= f.divisor | |
unit = f.unit | |
} | |
return fmt.Sprintf("%d%c", d, unit) | |
} |