| // 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) |
| } |