Russ Cox
f96662324e
related reflect bug: make copies of big values
...
so that callers cannot edit large values inside interfaces.
R=r
DELTA=52 (42 added, 1 deleted, 9 changed)
OCL=29180
CL=29195
2009-05-21 14:06:43 -07:00
Russ Cox
96cfd154d8
direct all interface extraction to InterfaceValue.Get.
...
delete unnecessary reflect. throughout
R=r
DELTA=124 (18 added, 0 deleted, 106 changed)
OCL=29173
CL=29175
2009-05-21 11:50:20 -07:00
Russ Cox
2d5d4a1b41
reflect bug: NewZeroValue was refusing to create slices.
...
as far as I can tell there's no reason not to.
the Nillable test was succeeding because NewZeroValue
returned the nil interface value and the type guard
was letting it through. the only change in the test is
more detail in the print.
R=r
DELTA=8 (0 added, 7 deleted, 1 changed)
OCL=29124
CL=29126
2009-05-20 15:42:14 -07:00
Rob Pike
b66d703941
change name of reflect.NewInitValue to the more descriptive NewZeroValue.
...
R=rsc
DELTA=10 (0 added, 0 deleted, 10 changed)
OCL=28717
CL=28720
2009-05-12 16:16:52 -07:00
Russ Cox
28516d4c78
update reflect for upcoming interface representation change.
...
test case for new change.
both work with the current compiler too.
R=r
DELTA=150 (145 added, 2 deleted, 3 changed)
OCL=28703
CL=28715
2009-05-12 16:08:16 -07:00
Rob Pike
a8f6e38bce
implement IsNil() bool for those types that can be nil. most of them, anyway.
...
R=rsc
DELTA=97 (96 added, 0 deleted, 1 changed)
OCL=28596
CL=28702
2009-05-12 14:57:44 -07:00
Rob Pike
c367d1b789
Move sys.Reflect and sys.Unreflect into unsafe.
...
R=rsc
DELTA=19 (4 added, 5 deleted, 10 changed)
OCL=28563
CL=28566
2009-05-08 14:57:56 -07:00
Russ Cox
4b8c13dc20
do not create interfaces containing interfaces
...
R=r
DELTA=16 (14 added, 0 deleted, 2 changed)
OCL=27464
CL=27466
2009-04-14 19:03:57 -07:00
Ian Lance Taylor
ca9765d83a
Make the reflection library match the reflection string which
...
6g generates for functions: expect the keyword "func". The
older reflection syntax, without the "func", is still
recognized for simplicity in parsing interface reflection
strings.
R=r,rsc
DELTA=66 (31 added, 8 deleted, 27 changed)
OCL=27396
CL=27422
2009-04-14 06:46:01 -07:00
Rob Pike
3a7df4dde0
add support for variable formatters
...
R=rsc
DELTA=134 (75 added, 41 deleted, 18 changed)
OCL=27245
CL=27247
2009-04-08 23:33:31 -07:00
Russ Cox
ac6ebfdea9
add method Value() Value to InterfaceValue.
...
use Value() in print to print underlying value
from interface.
before:
package main
import "fmt"
func main() {
x := []interface{} {1, "hello", 2.5};
fmt.Println(x[0], x[1], x[2], x);
}
1 hello 2.5 [<non-nil interface> <non-nil interface> <non-nil interface>]
after:
1 hello 2.5 [1 hello 2.5]
R=r
DELTA=44 (22 added, 16 deleted, 6 changed)
OCL=27139
CL=27141
2009-04-06 21:28:04 -07:00
Rob Pike
1fe42e2d4d
delete float80 from libraries
...
R=rsc
DELTA=40 (0 added, 38 deleted, 2 changed)
OCL=25969
CL=25969
2009-03-09 18:00:41 -07:00
Rob Pike
3bc6fd63fe
document reflect.
...
R=rsc
DELTA=201 (90 added, 0 deleted, 111 changed)
OCL=25904
CL=25966
2009-03-09 17:47:15 -07:00
Russ Cox
be2edb5761
Automated g4 rollback of changelist 25024,
...
plus significant hand editing.
Back to T{x} for composite literals.
R=r
OCL=25612
CL=25632
2009-03-03 08:39:12 -08:00
Russ Cox
dfad8ea647
use embedded interface types
...
R=r
DELTA=205 (1 added, 157 deleted, 47 changed)
OCL=25071
CL=25073
2009-02-16 16:37:49 -08:00
Russ Cox
9f8f2e6130
convert composite literals from { } to ( ).
...
only non-trivial changes are in
convlit1.go
golden.out
R=gri
OCL=25019
CL=25024
2009-02-13 14:48:32 -08:00
Russ Cox
49e2087848
insert type assertions when narrowing.
...
R=r
OCL=24349
CL=24913
2009-02-11 17:55:16 -08:00
Russ Cox
4cf7711568
update go code tree to new func rules.
...
R=r
DELTA=367 (111 added, 59 deleted, 197 changed)
OCL=23957
CL=23960
2009-01-30 14:39:31 -08:00
Rob Pike
9a7332fb5b
remove the "open" concept from reflect and go with slices and arrays.
...
the two still share an interface and Kind; that's probably ok but might be worth revisiting.
R=rsc
DELTA=74 (1 added, 8 deleted, 65 changed)
OCL=23416
CL=23418
2009-01-23 15:56:04 -08:00
Rob Pike
1b3299ed0b
change the representation of arrays in protobufs from *[]item to []item.
...
for simplicity of user's code, optional arrays of bytes also don't have a pointer.
requires adding a "Set()" method to arrays in reflect.
still to do: protocol compilers, google/net/rpc.
R=rsc
DELTA=227 (36 added, 95 deleted, 96 changed)
OCL=23387
CL=23389
2009-01-23 12:40:55 -08:00
Rob Pike
c5f99ccbdd
change reflect.CopyArray into a method on ArrayValue called CopyFrom
...
R=rsc
DELTA=16 (12 added, 0 deleted, 4 changed)
OCL=23242
CL=23242
2009-01-21 15:45:54 -08:00
Russ Cox
839a68469b
delete export
...
TBR=r
OCL=23121
CL=23127
2009-01-20 14:40:40 -08:00
Russ Cox
360962420c
casify, cleanup sys
...
R=r
OCL=22978
CL=22984
2009-01-16 14:58:14 -08:00
Rob Pike
ed2ac9b8b0
casify reflect.
...
R=rsc
DELTA=513 (0 added, 2 deleted, 511 changed)
OCL=22954
CL=22956
2009-01-16 12:48:07 -08:00
Russ Cox
b54133d200
make safe for new package local defaults
...
R=r
DELTA=462 (9 added, 33 deleted, 420 changed)
OCL=22879
CL=22885
2009-01-15 16:16:42 -08:00
Russ Cox
484ba939d2
update sys.reflect and sys.unreflect to accomodate
...
the possibility of large objects in interface values.
R=r
DELTA=171 (97 added, 22 deleted, 52 changed)
OCL=22382
CL=22382
2009-01-09 00:17:46 -08:00
Russ Cox
5564504507
new new & make
...
R=r
OCL=22166
CL=22166
2009-01-06 15:19:02 -08:00
Russ Cox
ba882f9940
fmt and reflect updates for recent changes
...
TBR=r
OCL=21580
CL=21583
2008-12-19 03:06:19 -08:00
Russ Cox
d47d888ba6
convert *[] to [].
...
R=r
OCL=21563
CL=21571
2008-12-18 22:37:22 -08:00
Rob Pike
9ba97ca308
add uintptr to reflect and print
...
R=rsc
DELTA=70 (35 added, 4 deleted, 31 changed)
OCL=20993
CL=20998
2008-12-11 14:41:12 -08:00
Rob Pike
ac09eb4f49
handle the nil interface better in reflect and print
...
R=rsc
DELTA=25 (19 added, 0 deleted, 6 changed)
OCL=20985
CL=20985
2008-12-11 12:59:49 -08:00
Russ Cox
d0e30cdaa9
assorted cleanup and fixes
...
R=r
DELTA=209 (109 added, 79 deleted, 21 changed)
OCL=20930
CL=20934
2008-12-10 15:55:59 -08:00
Rob Pike
50d0695ccf
use unsafe.pointer in reflection objects
...
R=rsc
DELTA=326 (4 added, 259 deleted, 63 changed)
OCL=20853
CL=20856
2008-12-09 15:41:21 -08:00
Russ Cox
387df5e176
replay CL 19916 and CL 19913 now that the build can handle them
...
TBR=r
OCL=19924
CL=19934
2008-11-24 14:51:33 -08:00
Russ Cox
85fea81d70
Automated g4 rollback of changelist 19916.
...
*** Reason for rollback ***
broke build
*** Original change description ***
utf8: add InString routines for decoding in strings
reflect: add InterfaceValue.Get(), remove Empty
strconv: add Quote, CanBackquote
fmt:
* %q go-quoted " string
* %#q go-quoted ` string if possible, " string otherwise
* %x hexadecimal string
* anywhere a string is okay, *[]byte is okay
* flags # 0 - + space
* print value inside interface, not interface itself
* tests
TBR=r
OCL=19920
CL=19920
2008-11-24 13:24:15 -08:00
Russ Cox
b65a930453
utf8: add InString routines for decoding in strings
...
reflect: add InterfaceValue.Get(), remove Empty
strconv: add Quote, CanBackquote
fmt:
* %q go-quoted " string
* %#q go-quoted ` string if possible, " string otherwise
* %x hexadecimal string
* anywhere a string is okay, *[]byte is okay
* flags # 0 - + space
* print value inside interface, not interface itself
* tests
R=r
DELTA=756 (597 added, 121 deleted, 38 changed)
OCL=19888
CL=19916
2008-11-24 13:04:27 -08:00
Russ Cox
e4f4ab0b8d
more array methods
...
R=r
OCL=19172
CL=19172
2008-11-13 13:42:59 -08:00
Rob Pike
419e1e05a1
add some support for modifying what pointers point to
...
R=rsc
DELTA=27 (16 added, 11 deleted, 0 changed)
OCL=19130
CL=19132
2008-11-12 19:05:05 -08:00
Rob Pike
b1d37b74d9
reflect.PtrValue.SetSub() to set pointers
...
R=rsc
OCL=19101
CL=19101
2008-11-12 14:19:39 -08:00
Rob Pike
842e1a9aa7
Add a cache to avoid unnecessary parsing of type strings when constructing values
...
R=rsc
DELTA=12 (9 added, 0 deleted, 3 changed)
OCL=18916
CL=18921
2008-11-10 14:53:40 -08:00
Rob Pike
554d0aa589
make sizes and offsets int, not uint64
...
add Value.Interface, to extract an empty interface
that can be converted to a regular Go value of the
appropriate type, if known.
R=rsc
DELTA=49 (2 added, 0 deleted, 47 changed)
OCL=18526
CL=18526
2008-11-05 10:17:38 -08:00
Rob Pike
a45f947c34
type strings through the reflection library.
...
R=rsc
DELTA=187 (107 added, 28 deleted, 52 changed)
OCL=18510
CL=18510
2008-11-04 22:54:11 -08:00
Russ Cox
bcd6403cc9
remove unnecessary 6g workaround
...
R=r
DELTA=51 (0 added, 0 deleted, 51 changed)
OCL=18399
CL=18402
2008-11-03 16:00:08 -08:00
Rob Pike
178e37e766
add creator for missing types, to avoid crashes when
...
signature is absent from object file.
R=rsc
DELTA=18 (18 added, 0 deleted, 0 changed)
OCL=18315
CL=18323
2008-11-02 12:32:14 -08:00
Ian Lance Taylor
16fd356679
Add support for the basic type "bool".
...
R=r
DELTA=51 (51 added, 0 deleted, 0 changed)
OCL=18283
CL=18290
2008-10-31 16:34:47 -07:00
Rob Pike
12a3435869
reflection support for tag strings
...
R=rsc
DELTA=86 (77 added, 0 deleted, 9 changed)
OCL=18201
CL=18203
2008-10-30 17:29:53 -07:00
Rob Pike
282493bbf6
update reflection library to int/int32 etc. split
...
fmt still to come
R=rsc
DELTA=168 (141 added, 19 deleted, 8 changed)
OCL=18064
CL=18071
2008-10-29 15:31:02 -07:00
Rob Pike
c4af3e7c2a
use embedded types to save boilerplate - almost 300 lines' worth
...
R=rsc
DELTA=427 (53 added, 302 deleted, 72 changed)
OCL=17857
CL=17868
2008-10-26 08:28:33 -07:00
Rob Pike
418b97c670
add printf to fmt.
...
uses reflection to determine arguments.
for now, the arguments must be provided as a struct; the compiler
will soon do the packaging automatically for "..." parameters.
R=rsc
DELTA=1436 (909 added, 520 deleted, 7 changed)
OCL=17823
CL=17831
2008-10-24 16:33:29 -07:00
Rob Pike
8327b54169
make reflect compile again
...
R=rsc
DELTA=9 (4 added, 4 deleted, 1 changed)
OCL=17753
CL=17755
2008-10-23 17:39:15 -07:00