0
1
mirror of https://github.com/golang/go synced 2025-06-16 17:48:47 +00:00
Files
.github
api
doc
lib
misc
src
test
abi
alias3.dir
asmhdr.dir
bench
chan
closure3.dir
closure5.dir
codegen
ddd2.dir
dwarf
fixedbugs
import2.dir
import4.dir
interface
intrinsic.dir
ken
linkname.dir
method4.dir
oldescape_linkname.dir
retjmp.dir
runtime
stress
syntax
typeparam
uintptrescapes.dir
235.go
64bit.go
README.md
alg.go
alias.go
alias1.go
alias2.go
alias3.go
align.go
append.go
append1.go
args.go
armimm.go
asmhdr.go
assign.go
assign1.go
atomicload.go
bigalg.go
bigmap.go
blank.go
blank1.go
bom.go
bombad.go
bounds.go
cannotassign.go
chancap.go
chanlinear.go
char_lit.go
char_lit1.go
checkbce.go
clearfat.go
closedchan.go
closure.go
closure1.go
closure2.go
closure3.go
closure4.go
closure5.go
closure6.go
closure7.go
cmp.go
cmp6.go
cmplx.go
cmplxdivide.c
cmplxdivide.go
cmplxdivide1.go
complit.go
complit1.go
compos.go
const.go
const1.go
const2.go
const3.go
const4.go
const5.go
const6.go
const7.go
convT2X.go
convert.go
convert1.go
convert2.go
convert3.go
convert4.go
convlit.go
convlit1.go
copy.go
copy1.go
crlf.go
ddd.go
ddd1.go
ddd2.go
decl.go
declbad.go
defer.go
defererrcheck.go
deferfin.go
defernil.go
deferprint.go
deferprint.out
devirt.go
directive.go
divide.go
divmod.go
embedfunc.go
embedvers.go
empty.go
env.go
eof.go
eof1.go
escape.go
escape2.go
escape2n.go
escape3.go
escape4.go
escape5.go
escape_array.go
escape_calls.go
escape_closure.go
escape_field.go
escape_goto.go
escape_hash_maphash.go
escape_iface.go
escape_indir.go
escape_level.go
escape_map.go
escape_param.go
escape_runtime_atomic.go
escape_selfassign.go
escape_slice.go
escape_struct_param1.go
escape_struct_param2.go
escape_struct_return.go
escape_sync_atomic.go
escape_unsafe.go
fibo.go
finprofiled.go
float_lit.go
float_lit2.go
float_lit3.go
floatcmp.go
for.go
func.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go
func8.go
funcdup.go
funcdup2.go
fuse.go
gc.go
gc1.go
gc2.go
gcgort.go
gcstring.go
goprint.go
goprint.out
goto.go
heapsampling.go
helloworld.go
helloworld.out
if.go
import.go
import1.go
import2.go
import4.go
import5.go
import6.go
index.go
index0.go
index1.go
index2.go
indirect.go
indirect1.go
init.go
init1.go
initcomma.go
initempty.go
initexp.go
initialize.go
initializerr.go
initloop.go
inline.go
inline_big.go
inline_caller.go
inline_callers.go
inline_endian.go
inline_literal.go
inline_math_bits_rotate.go
inline_sync.go
inline_variadic.go
int_lit.go
intcvt.go
intrinsic.go
intrinsic_atomic.go
iota.go
label.go
label1.go
linkmain.go
linkmain_run.go
linkname.go
linkname2.go
linkobj.go
linkx.go
linkx_run.go
literal.go
literal2.go
live.go
live1.go
live2.go
live_regabi.go
live_syscall.go
locklinear.go
loopbce.go
mainsig.go
makechan.go
makemap.go
makenew.go
makeslice.go
mallocfin.go
map.go
map1.go
mapclear.go
maplinear.go
maymorestack.go
mergemul.go
method.go
method1.go
method2.go
method3.go
method4.go
method5.go
method6.go
method7.go
named.go
named1.go
nil.go
nilcheck.go
nilptr.go
nilptr2.go
nilptr3.go
nilptr4.go
nilptr5.go
nilptr5_aix.go
nilptr5_wasm.go
nilptr_aix.go
nosplit.go
notinheap.go
notinheap2.go
notinheap3.go
nowritebarrier.go
nul1.go
opt_branchlikely.go
parentype.go
peano.go
phiopt.go
print.go
print.out
printbig.go
printbig.out
prove.go
range.go
recover.go
recover1.go
recover2.go
recover3.go
recover4.go
recover5.go
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go
reflectmethod4.go
reflectmethod5.go
reflectmethod6.go
reflectmethod7.go
reflectmethod8.go
rename.go
rename1.go
reorder.go
reorder2.go
retjmp.go
return.go
rotate.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
run.go
rune.go
runtime.go
shift1.go
shift2.go
sieve.go
sigchld.go
sigchld.out
simassign.go
sinit.go
sinit_run.go
sizeof.go
slice3.go
slice3err.go
slicecap.go
sliceopt.go
solitaire.go
stack.go
stackobj.go
stackobj2.go
stackobj3.go
strcopy.go
strength.go
string_lit.go
stringrange.go
struct0.go
switch.go
switch2.go
switch3.go
switch4.go
switch5.go
switch6.go
switch7.go
tinyfin.go
torture.go
turing.go
typecheck.go
typecheckloop.go
typeswitch.go
typeswitch1.go
typeswitch2.go
typeswitch2b.go
typeswitch3.go
uintptrescapes.go
uintptrescapes2.go
uintptrescapes3.go
undef.go
unsafebuiltins.go
used.go
utf.go
varerr.go
varinit.go
winbatch.go
writebarrier.go
zerodivide.go
.gitattributes
.gitignore
AUTHORS
CONTRIBUTING.md
CONTRIBUTORS
LICENSE
PATENTS
README.md
SECURITY.md
codereview.cfg
go/test/intcvt.go
Rob Pike 501f0b578f test: commentary for [h-m]*.go
R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/5674112
2012-02-23 18:47:26 +11:00

182 lines
4.3 KiB
Go

// run
// Copyright 2009 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.
// Test implicit and explicit conversions of constants.
package main
const (
ci8 = -1 << 7
ci16 = -1<<15 + 100
ci32 = -1<<31 + 100000
ci64 = -1<<63 + 10000000001
cu8 = 1<<8 - 1
cu16 = 1<<16 - 1234
cu32 = 1<<32 - 1234567
cu64 = 1<<64 - 1234567890123
cf32 = 1e8 + 0.5
cf64 = -1e8 + 0.5
)
var (
i8 int8 = ci8
i16 int16 = ci16
i32 int32 = ci32
i64 int64 = ci64
u8 uint8 = cu8
u16 uint16 = cu16
u32 uint32 = cu32
u64 uint64 = cu64
// f32 float32 = 1e8 + 0.5
// f64 float64 = -1e8 + 0.5
)
func chki8(i, v int8) {
if i != v {
println(i, "!=", v)
panic("fail")
}
}
func chki16(i, v int16) {
if i != v {
println(i, "!=", v)
panic("fail")
}
}
func chki32(i, v int32) {
if i != v {
println(i, "!=", v)
panic("fail")
}
}
func chki64(i, v int64) {
if i != v {
println(i, "!=", v)
panic("fail")
}
}
func chku8(i, v uint8) {
if i != v {
println(i, "!=", v)
panic("fail")
}
}
func chku16(i, v uint16) {
if i != v {
println(i, "!=", v)
panic("fail")
}
}
func chku32(i, v uint32) {
if i != v {
println(i, "!=", v)
panic("fail")
}
}
func chku64(i, v uint64) {
if i != v {
println(i, "!=", v)
panic("fail")
}
}
//func chkf32(f, v float32) { if f != v { println(f, "!=", v); panic("fail") } }
//func chkf64(f, v float64) { if f != v { println(f, "!=", v); panic("fail") } }
func main() {
chki8(int8(i8), ci8&0xff-1<<8)
chki8(int8(i16), ci16&0xff)
chki8(int8(i32), ci32&0xff-1<<8)
chki8(int8(i64), ci64&0xff)
chki8(int8(u8), cu8&0xff-1<<8)
chki8(int8(u16), cu16&0xff)
chki8(int8(u32), cu32&0xff)
chki8(int8(u64), cu64&0xff)
// chki8(int8(f32), 0)
// chki8(int8(f64), 0)
chki16(int16(i8), ci8&0xffff-1<<16)
chki16(int16(i16), ci16&0xffff-1<<16)
chki16(int16(i32), ci32&0xffff-1<<16)
chki16(int16(i64), ci64&0xffff-1<<16)
chki16(int16(u8), cu8&0xffff)
chki16(int16(u16), cu16&0xffff-1<<16)
chki16(int16(u32), cu32&0xffff)
chki16(int16(u64), cu64&0xffff-1<<16)
// chki16(int16(f32), 0)
// chki16(int16(f64), 0)
chki32(int32(i8), ci8&0xffffffff-1<<32)
chki32(int32(i16), ci16&0xffffffff-1<<32)
chki32(int32(i32), ci32&0xffffffff-1<<32)
chki32(int32(i64), ci64&0xffffffff)
chki32(int32(u8), cu8&0xffffffff)
chki32(int32(u16), cu16&0xffffffff)
chki32(int32(u32), cu32&0xffffffff-1<<32)
chki32(int32(u64), cu64&0xffffffff-1<<32)
// chki32(int32(f32), 0)
// chki32(int32(f64), 0)
chki64(int64(i8), ci8&0xffffffffffffffff-1<<64)
chki64(int64(i16), ci16&0xffffffffffffffff-1<<64)
chki64(int64(i32), ci32&0xffffffffffffffff-1<<64)
chki64(int64(i64), ci64&0xffffffffffffffff-1<<64)
chki64(int64(u8), cu8&0xffffffffffffffff)
chki64(int64(u16), cu16&0xffffffffffffffff)
chki64(int64(u32), cu32&0xffffffffffffffff)
chki64(int64(u64), cu64&0xffffffffffffffff-1<<64)
// chki64(int64(f32), 0)
// chki64(int64(f64), 0)
chku8(uint8(i8), ci8&0xff)
chku8(uint8(i16), ci16&0xff)
chku8(uint8(i32), ci32&0xff)
chku8(uint8(i64), ci64&0xff)
chku8(uint8(u8), cu8&0xff)
chku8(uint8(u16), cu16&0xff)
chku8(uint8(u32), cu32&0xff)
chku8(uint8(u64), cu64&0xff)
// chku8(uint8(f32), 0)
// chku8(uint8(f64), 0)
chku16(uint16(i8), ci8&0xffff)
chku16(uint16(i16), ci16&0xffff)
chku16(uint16(i32), ci32&0xffff)
chku16(uint16(i64), ci64&0xffff)
chku16(uint16(u8), cu8&0xffff)
chku16(uint16(u16), cu16&0xffff)
chku16(uint16(u32), cu32&0xffff)
chku16(uint16(u64), cu64&0xffff)
// chku16(uint16(f32), 0)
// chku16(uint16(f64), 0)
chku32(uint32(i8), ci8&0xffffffff)
chku32(uint32(i16), ci16&0xffffffff)
chku32(uint32(i32), ci32&0xffffffff)
chku32(uint32(i64), ci64&0xffffffff)
chku32(uint32(u8), cu8&0xffffffff)
chku32(uint32(u16), cu16&0xffffffff)
chku32(uint32(u32), cu32&0xffffffff)
chku32(uint32(u64), cu64&0xffffffff)
// chku32(uint32(f32), 0)
// chku32(uint32(f64), 0)
chku64(uint64(i8), ci8&0xffffffffffffffff)
chku64(uint64(i16), ci16&0xffffffffffffffff)
chku64(uint64(i32), ci32&0xffffffffffffffff)
chku64(uint64(i64), ci64&0xffffffffffffffff)
chku64(uint64(u8), cu8&0xffffffffffffffff)
chku64(uint64(u16), cu16&0xffffffffffffffff)
chku64(uint64(u32), cu32&0xffffffffffffffff)
chku64(uint64(u64), cu64&0xffffffffffffffff)
// chku64(uint64(f32), 0)
// chku64(uint64(f64), 0)
}