builtin: add charptr str() and change string format (#12973)
parent
b10ff1e41b
commit
a0a1807e2b
|
@ -391,14 +391,18 @@ pub fn (nn int_literal) hex() string {
|
|||
// hex returns the value of the `voidptr` as a hexadecimal `string`.
|
||||
// Note that the output is ***not*** zero padded.
|
||||
pub fn (nn voidptr) str() string {
|
||||
return u64(nn).hex()
|
||||
return '0x' + u64(nn).hex()
|
||||
}
|
||||
|
||||
// hex returns the value of the `byteptr` as a hexadecimal `string`.
|
||||
// Note that the output is ***not*** zero padded.
|
||||
// pub fn (nn byteptr) str() string {
|
||||
pub fn (nn byteptr) str() string {
|
||||
return u64(nn).hex()
|
||||
return '0x' + u64(nn).hex()
|
||||
}
|
||||
|
||||
pub fn (nn charptr) str() string {
|
||||
return '0x' + u64(nn).hex()
|
||||
}
|
||||
|
||||
pub fn (nn byte) hex_full() string {
|
||||
|
|
|
@ -29,12 +29,14 @@ fn test_str_methods() {
|
|||
assert u32(-1).str() == '4294967295'
|
||||
assert u64(1).str() == '1'
|
||||
assert u64(-1).str() == '18446744073709551615'
|
||||
assert voidptr(-1).str() == 'ffffffffffffffff'
|
||||
assert voidptr(1).str() == '1'
|
||||
assert voidptr(-1).str() == '0xffffffffffffffff'
|
||||
assert voidptr(1).str() == '0x1'
|
||||
assert (&byte(-1)).str() == 'ffffffffffffffff'
|
||||
assert (&byte(1)).str() == '1'
|
||||
assert byteptr(-1).str() == 'ffffffffffffffff'
|
||||
assert byteptr(1).str() == '1'
|
||||
assert byteptr(-1).str() == '0xffffffffffffffff'
|
||||
assert byteptr(1).str() == '0x1'
|
||||
assert charptr(-1).str() == '0xffffffffffffffff'
|
||||
assert charptr(1).str() == '0x1'
|
||||
}
|
||||
|
||||
fn test_and_precendence() {
|
||||
|
|
|
@ -15,5 +15,5 @@ fn test_passing_voidptr_as_an_interface_reference() {
|
|||
assert f(&i) == '&IAbc(Abc{})'
|
||||
// a voidptr() cast is an escape hatch, that should be allowed
|
||||
// but perhaps it should be forced by the compiler to be in unsafe{}
|
||||
assert f(unsafe { voidptr(0) }) == '&IAbc(0)'
|
||||
assert f(unsafe { voidptr(0) }) == '&IAbc(0x0)'
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ fn f(i &IAbc) string {
|
|||
fn test_voidptr_casted_as_an_interface_reference() {
|
||||
mut pi := &IAbc(voidptr(0))
|
||||
dump(pi)
|
||||
assert f(pi) == '&IAbc(0)'
|
||||
assert f(pi) == '&IAbc(0x0)'
|
||||
//
|
||||
i := IAbc(Abc{})
|
||||
pi = &i
|
||||
|
|
|
@ -9,10 +9,10 @@ fn test_byte_pointer_casts() {
|
|||
ppb := &&byte(2)
|
||||
pppb := &&&byte(3)
|
||||
ppppb := &&&&byte(4)
|
||||
assert voidptr(pb).str() == '1'
|
||||
assert voidptr(ppb).str() == '2'
|
||||
assert voidptr(pppb).str() == '3'
|
||||
assert voidptr(ppppb).str() == '4'
|
||||
assert voidptr(pb).str() == '0x1'
|
||||
assert voidptr(ppb).str() == '0x2'
|
||||
assert voidptr(pppb).str() == '0x3'
|
||||
assert voidptr(ppppb).str() == '0x4'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,10 +22,10 @@ fn test_char_pointer_casts() {
|
|||
ppc := &&char(6)
|
||||
pppc := &&&char(7)
|
||||
ppppc := &&&&char(8)
|
||||
assert voidptr(pc).str() == '5'
|
||||
assert voidptr(ppc).str() == '6'
|
||||
assert voidptr(pppc).str() == '7'
|
||||
assert voidptr(ppppc).str() == '8'
|
||||
assert voidptr(pc).str() == '0x5'
|
||||
assert voidptr(ppc).str() == '0x6'
|
||||
assert voidptr(pppc).str() == '0x7'
|
||||
assert voidptr(ppppc).str() == '0x8'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,10 +35,10 @@ fn test_struct_pointer_casts() {
|
|||
pps := &&Struct(10)
|
||||
ppps := &&&Struct(11)
|
||||
pppps := &&&&Struct(12)
|
||||
assert voidptr(ps).str() == '9'
|
||||
assert voidptr(pps).str() == 'a'
|
||||
assert voidptr(ppps).str() == 'b'
|
||||
assert voidptr(pppps).str() == 'c'
|
||||
assert voidptr(ps).str() == '0x9'
|
||||
assert voidptr(pps).str() == '0xa'
|
||||
assert voidptr(ppps).str() == '0xb'
|
||||
assert voidptr(pppps).str() == '0xc'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue