42 Commits
Author SHA1 Message Date
125b43e22f Fix runtime error not allowing to slice unaddressable array type (#803)
* fix runtime error not allowing to slice unaddressable array type

* simplify logic and move test

* remove dead code

---------

Signed-off-by: Anton Medvedev <[email protected]>
Co-authored-by: Anton Medvedev <[email protected]>
2025-06-30 20:21:25 +02:00
13992b0526 Ignoring fields with struct tag expr:"-" and make "in" return false for unexported fields (#806)
* allow ignoring struct member using a - in expr struct tag

* fix in operator

* simplify logic

* add regression test for #807

* fixes #807: make in operator return false for unexported struct fields

---------

Co-authored-by: Anton Medvedev <[email protected]>
2025-06-30 20:14:08 +02:00
Anton Medvedev 71e349971e Add better error messages for index out of bounds errors 2024-05-12 11:55:15 +02:00
Anton Medvedev 14d3c281b2 Remove redundant checks 2024-02-21 00:07:51 +01:00
Anton MedvedevandGitHub 0d43107999 Add concat() builtin (#565)
* Add concat() builtin

* Use pkg deref in builtin

* Use pkg deref in checker

* Use pkg deref in types_table.go

* Use pkg deref in docgen.go

* Use pkg deref in vm
2024-02-16 22:32:35 +01:00
Anton MedvedevandGitHub 79bb049707 Add [generated] tags to files (#518) 2024-01-12 21:58:13 +01:00
Augustin PeyrardandGitHub fe7f698b81 Fix Fetch and OpDeref (#467)
* Fix OpDeref allowing to deref pointer of interfaces

Loop over `Ptr` and `Interface` kind and get `Elem`. Also return
directly the `nil` otherwise we might are returning the pointer nil
value and not the base nil.

* Fix deref interface in Fetch

We were only de-referencing pointers, but we can have pointer of
interface or interface obfuscating pointers...
So before trying to fetch anything, just deference fully the
variable.
2023-11-16 12:40:28 +01:00
Anton Medvedev 63496e6fe7 Add type checks for 42 in ["a"] as invalid 2023-09-20 14:00:15 +02:00
Anton Medvedev 32f5fde2eb Replace interface{} with any 2023-08-30 11:25:15 +02:00
Anton Medvedev ff899ca004 Small fixes 2023-08-18 14:21:59 +02:00
Anton Medvedev 07fde81118 Fix slice out of bound errors 2023-08-16 11:29:09 +02:00
Anton Medvedev 719f30d3ad Add builtin functions 2023-08-14 15:37:06 +02:00
Anton Medvedev 8d959ea2fe Refactor builtin.Function and move builtin funcs to builtin package 2023-08-14 11:50:42 +02:00
Anton MedvedevandGitHub 95fc04c65e Refactor deref (#398)
* Refactor deref types

* Refactor deref opcode inserts

* Add multiple pointers deref
2023-08-10 22:09:32 +02:00
Anton MedvedevandGitHub 4876b330e5 Fix nil key check in map (#351) 2023-03-09 23:49:13 +01:00
blotusandGitHub 84db94d36b runtime.Fetch: add string type assertion check before trying to check if the value is a method (#349) 2023-03-09 13:48:26 +01:00
Anton Medvedev 19c72f6e03 Fix abs() for positive numbers 2023-02-03 11:07:11 +01:00
Anton Medvedev 182aac0d60 Remove redundant assignment 2023-01-30 22:54:28 +01:00
Anton Medvedev 6ac7fb473a Add support for negative indexes 2023-01-30 19:16:44 +01:00
Anton Medvedev a469abd32b Add int() and float() builtins 2023-01-29 20:34:15 +01:00
Anton Medvedev b737180582 Improve builtin performance 2023-01-29 20:34:15 +01:00
Anton Medvedev fd2d0f5f74 Remove redundant check 2023-01-29 20:34:15 +01:00
Anton Medvedev 72a4ce18e9 Add len() builtin 2023-01-29 20:34:15 +01:00
Anton MedvedevandGitHub 205e24128e Add better error message for OpFetchField on missing field (#276) 2022-11-05 22:00:11 +01:00
Anton Medvedev bfeb63ba2b Remove redundant check 2022-11-05 19:43:00 +01:00
Anton MedvedevandGitHub 75f3a61dad Refactor helpers (#275) 2022-11-05 16:33:13 +01:00
Anton Medvedev c4dc3a9948 Fix code style 2022-11-03 22:14:28 +01:00
Anton MedvedevandGitHub 4cee95857e Remove CanInterface() checks (#264) 2022-10-28 21:37:05 +02:00
Anton Medvedev b8346f98f1 Optimize method calls and builtins opcodes 2022-10-27 21:23:04 +02:00
Anton Medvedev b77102221c Add tests 2022-10-21 21:48:18 +02:00
Anton Medvedev dd65a0fc2d Add compiler member fetch optimizations 2022-10-20 22:54:36 +02:00
Anton Medvedev 4104ff8967 Add runtime.Field 2022-10-19 23:37:56 +02:00
Anton Medvedev 33e3de371b Remove vm.Fetcher and exprgen pkg 2022-10-19 21:23:34 +02:00
Anton Medvedev 2a34731b5a Add FieldByIndex optimization 2022-10-19 00:55:01 +02:00
Anton Medvedev a28d1d704e Refactor getting field name 2022-10-18 22:53:52 +02:00
Anton Medvedev 2bf336bdb3 Remove FieldByNameFunc call 2022-10-18 21:48:22 +02:00
Anton Medvedev 7bcddc66f8 Remove unnecessary ptr checks 2022-10-18 00:26:17 +02:00
Anton Medvedev 7f1d698d91 Rename reflect.Pointer to reflect.Ptr 2022-10-18 00:10:34 +02:00
Anton Medvedev b0705d7de2 Add OpDeref opcode 2022-10-18 00:08:53 +02:00
Anton Medvedev 22784d8183 More tests 2022-10-15 22:52:40 +02:00
Anton Medvedev 514a6dcfa7 Fix OpCall 2022-10-13 10:39:56 +02:00
Anton Medvedev da68511d23 Add vm/runtime package 2022-10-12 15:22:14 +02:00