Damian Gryski
0042bf62a5
compiler,reflect: add support for [...]T -> []T in reflect
2023-09-10 13:05:18 +02:00
Ayke van Laethem
fffad84a63
reflect: add SetZero
...
This was added in Go 1.20 and is required by encoding/json starting with
Go 1.21.
2023-07-07 18:12:57 +02:00
Ayke van Laethem
e98dfd6c46
reflect: implement Value.Grow
...
This was added in Go 1.20 and becomes necessary for encoding/json in Go
1.21.
2023-07-07 08:10:47 +02:00
Damian Gryski
ef72c5bb4e
reflect: fix iterating over maps with interface{} keys
...
Fixes #3794
2023-07-02 11:47:08 +02:00
Tyler Rockwood
fdc4bbbfad
reflect: Add FieldByNameFunc
...
This adds FieldByNameFunc, which some libraries like reflect2 need.
For my usecase I could also just stub FieldByNameFunc to panic, but
figured that it would work OK to just make it work. I'm not sure if
the overhead to FieldByName using a closure is acceptable.
Signed-off-by: Tyler Rockwood <rockwood@redpanda.com>
2023-07-02 09:14:36 +02:00
Ayke van Laethem
0cb5d336f4
reflect: use .key() instead of a type assert
...
This should be ever so slightly more efficient.
2023-06-17 15:58:03 +02:00
Ayke van Laethem
535e64adbc
reflect: optimize Zero() a little bit
...
It could be expensive to call Size() three times, and it is unnecessary.
Instead, do it only once.
This results in a very small reduction of binary size if Zero() is used.
2023-05-14 18:23:23 +02:00
Damian Gryski
a85cb22193
reflect: uncomment TestAppend and fix a bug it found
2023-04-01 22:46:46 +02:00
Damian Gryski
60bb832c89
reflect: handle Convert'ing between identical underlying types
...
Needed for go-jose/v3
2023-04-01 22:46:46 +02:00
Damian Gryski
e6ccdd9d1a
reflect: another obscure RO bug
2023-03-31 01:08:04 +02:00
Damian Gryski
b39a982067
reflect: uncomment another test and fix RO logic issues it uncovered
2023-03-31 01:08:04 +02:00
Damian Gryski
b044d4ff3d
reflect: add more RO checks
2023-03-30 21:10:54 +02:00
Damian Gryski
0cd93a3a9e
reflect: add valueFlagRO
2023-03-30 21:10:54 +02:00
Damian Gryski
d4bdd836bc
reflect: implement and test Value.Comparable
2023-03-30 21:10:54 +02:00
Damian Gryski
017ab4c352
reflect: fix TestCanSetField
2023-03-30 21:10:54 +02:00
Damian Gryski
181d2ad2b4
reflect: add CanInt() and friends and uncomments tests that pass
2023-03-30 21:10:54 +02:00
Damian Gryski
1a60a1f526
reflect: stub channel select routines/types
2023-03-30 21:10:54 +02:00
Ayke van Laethem
31043628d8
reflect: use direct calls to runtime string functions
...
The runtime.stringFromBytesTyped and runtime.stringToBytesTyped
functions aren't really necessary, because they have the same LLVM IR
signature. Therefore, remove them and link directly to the functions
that the compiler uses internally.
2023-03-27 22:24:20 +02:00
Damian Gryski
2c0f61cad1
reflect: fix bug found by Convert() tests on wasi
2023-03-27 18:53:37 +02:00
Damian Gryski
97ece754f6
reflect: add missing Uintptr type and some numerical tests
2023-03-27 18:53:37 +02:00
Damian Gryski
39f76f43fc
reflect: fix indirect issues with makeInt/makeUint/makeFloat
2023-03-27 18:53:37 +02:00
Damian Gryski
6b73b5e486
reflect: document which Convert() cases are still unimplemented
2023-03-27 18:53:37 +02:00
Damian Gryski
855e12df51
reflect: Convert(): add Float() conversions
2023-03-27 18:53:37 +02:00
Damian Gryski
0b6bb12e9e
reflect: add Convert() for string -> []byte and []byte -> string
2023-03-27 18:53:37 +02:00
Damian Gryski
72c7adf94a
reflect: Convert() for integer and float types
2023-03-27 18:53:37 +02:00
Damian Gryski
7201b13085
reflect: fix key type logic for maps
2023-03-25 22:32:29 +01:00
Damian Gryski
9c0bf8bd2c
reflect: Value.Set: fix direction of assignment check
2023-03-25 22:32:29 +01:00
Damian Gryski
63c7a41337
reflect: convert non-interface to interface in Set()
2023-03-25 22:32:29 +01:00
Damian Gryski
c0f8f129c0
reflect: convert map elements to an interface, if needed
2023-03-25 22:32:29 +01:00
Damian Gryski
adaa7ca27a
reflect: SetMapIndex: use AssignableTo() instead of type equality
2023-03-25 22:32:29 +01:00
Damian Gryski
a5ddc68845
reflect: unpack interfaces in MapKeys() if needed
2023-03-25 22:32:29 +01:00
Damian Gryski
f7880e73d8
reflect: tweak v.typecode.Key().(*rawType) -> v.typecode.key()
2023-03-25 22:32:29 +01:00
Damian Gryski
bedd27b20e
reflect: handle map-keys-as-interfaces for MapIter()
2023-03-25 22:32:29 +01:00
Damian Gryski
17f5fb1071
reflect; SetLen() requires an addressable value
2023-03-21 20:53:37 +01:00
Damian Gryski
fa4f361ca7
reflect: add FieldByName(), and FieldByIndex()
2023-03-15 21:53:57 +01:00
Damian Gryski
c6728643e6
reflect: loosen unaddressable array rules for Copy()
2023-03-15 10:49:08 -07:00
Damian Gryski
e849901ad6
Update src/reflect/value.go
...
Co-authored-by: Ayke <aykevanlaethem@gmail.com>
2023-03-15 10:06:19 -07:00
Damian Gryski
91d6ca057c
reflect: add SetBytes()
2023-03-15 10:06:19 -07:00
Damian Gryski
0da97e2427
reflect: fix IsNil() for interfaces
2023-03-15 16:23:52 +01:00
Damian Gryski
ac36f232bc
reflect: MapIter.Next() needs to allocate new keys/values every time
2023-03-15 15:17:16 +01:00
Damian Gryski
94a54bc105
reflect: add UnsafePointer() for Func types
2023-03-15 15:08:26 +01:00
Damian Gryski
584a2718d0
reflect: add type check to Value.Field()
2023-03-14 09:53:00 -07:00
Damian Gryski
069c397975
reflect: fix off-by-one in Zero sizing
...
Without this, pointers wouldn't be set to nil. Add some tests.
2023-03-14 09:42:51 -07:00
Damian Gryski
3b2763896f
reflect: add stubs for Method(), CanConvert(), ArrayOf()
2023-03-14 16:54:44 +01:00
Damian Gryski
fb394c7685
reflect: add UnsafeAddr()
2023-03-14 16:53:57 +01:00
Damian Gryski
a52cad3825
reflect: fix Addr() indirect value/flags and add tests.
2023-03-14 16:49:05 +01:00
Damian Gryski
69e5c5088d
reflect: add support for remaining map types
2023-03-10 16:28:22 -08:00
Damian Gryski
2a821d2a66
reflect: improve Value.String()
2023-03-08 09:38:49 -08:00
Damian Gryski
f9b6f8339b
reflect: ensure all ValueError panics have Kind fields
2023-03-03 10:18:32 -08:00
Damian Gryski
0ff243e5e2
reflect: add OverflowFloat(), OverflowInt(), OverflowUint()
2023-03-03 10:18:32 -08:00