Anton Medvedev
dea75b14d8
Add more tests for filter_map optimization
2025-03-07 21:52:14 +01:00
Anton Medvedev
127f965eeb
Do not optimize filter_map if #index used
...
Fixes #758
2025-03-07 20:39:53 +01:00
Anton Medvedev and GitHub
c953d0dde1
Refactor types table ( #667 )
2024-06-04 00:08:01 +02:00
Anton Medvedev and GitHub
fee5690347
Refactor checker to use Nature ( #665 )
...
This PR introduces a new concept inside Expr's type checker - Nature.
It's an abstraction other reflect.Type which carries additional information about possible type, methods and builtin function.
I was able to find and fix a few bugs in type checker and optimizer. Implementation of nature concept has proven itself. As well nature will allow to bring more feature for type checker in future.
Why Nature? I was looking for a name to replace Type. Type name already carries much information, as well can be confused with reflect.Type. Nature name should be understood as "nature of the node", same as "type of the node".
2024-06-01 00:09:22 +02:00
Anton Medvedev and GitHub
68e3148c1f
Vendor testify ( #642 )
2024-05-08 00:24:35 +02:00
Anton Medvedev
ba3bae5017
Add more optimizer tests
2024-04-13 23:50:53 +02:00
Anton Medvedev
d8d1d9ebf4
Code style
2024-04-13 23:18:59 +02:00
Anton Medvedev
8589d34039
Add sum([]) optimization
2024-04-13 23:16:08 +02:00
Anton Medvedev
27b20607f1
Add sum(map()) optimization
2024-04-13 22:50:11 +02:00
Sergey and GitHub
2835692a5f
Optimize boolean operations between all, any, none functions ( #626 )
2024-04-12 18:49:41 +02:00
Anton Medvedev and GitHub
3205e4186b
Revert "Optimize boolean operations between all, any, one, none functions ( #555 )" ( #625 )
...
This reverts commit 8037acf0bb .
2024-04-10 10:58:17 +02:00
Sergey and GitHub
8037acf0bb
Optimize boolean operations between all, any, one, none functions ( #555 )
2024-02-11 22:23:48 +01:00
Anton Medvedev
811a16b4fa
Remove const range optimization
2023-12-22 22:49:31 +01:00
Anton Medvedev
551d2a7e0f
Use expr-lang/expr
2023-12-03 21:53:01 +01:00
Anton Medvedev
32f5fde2eb
Replace interface{} with any
2023-08-30 11:25:15 +02:00
Anton Medvedev
e37105ef90
Fix float folding optimization
2023-08-28 22:24:46 +02:00
Anton Medvedev
16403049ac
Apply in range optimization only for int type on lhs
2023-08-28 17:36:33 +02:00
Anton Medvedev
46929e4646
Add map(filter()) optimization
2023-08-24 11:15:43 +02:00
Anton Medvedev
166d8b8ce9
Add filter()[-1] optimization
2023-08-24 11:15:43 +02:00
Anton Medvedev
8c52bd6d8b
Add filter()[0] optimization
2023-08-24 11:15:43 +02:00
Anton Medvedev
22b3d6bf74
Add len(filter()) optimization
2023-08-24 11:15:43 +02:00
Anton Medvedev
719f30d3ad
Add builtin functions
2023-08-14 15:37:06 +02:00
Andrew Benton and Anton Medvedev
ab25d4658b
Adds simple bool condition optimization
...
This change introduces simple boolean condition optimization when
dealing with boolean `and`, `or`, and `==` expressions to help trim
unnecessary AST nodes.
2023-02-01 20:44:32 +01:00
Anton Medvedev
00d167a791
Move code duplicate to conf package
2022-11-10 21:21:38 +01:00
Anton Medvedev
c64d7ad215
Add optimize float folds test
2022-11-08 21:01:50 +01:00
Anton Medvedev
a3281d9f3a
Fix constant folding for floats and ints
2022-11-08 20:58:23 +01:00
Anton Medvedev
54c29bfda2
Simplify "not in" operators
2022-11-06 13:04:35 +01:00
Anton Medvedev
6e7a89b65c
Optimizer should return []interface{} as well.
2022-11-05 20:33:41 +01:00
Anton Medvedev
371e24c30d
Add ^ as exponent operator
2022-11-05 20:21:48 +01:00
Anton Medvedev
97b2a9e16d
Simplify ast.Visitor interface
2022-11-02 22:27:34 +01:00
Anton Medvedev
fe5383a8d5
Add fold filter optimizations
2022-10-27 21:43:47 +02:00
Anton Medvedev
514a6dcfa7
Fix OpCall
2022-10-13 10:39:56 +02:00
Anton Medvedev
6a7630dba1
Remove ast nodes
2022-10-10 20:26:59 +02:00
Brenan Kelley and GitHub
7bb3ef506e
fix ConstExpr to handle custom functions returned error ( #239 )
2022-05-24 21:38:59 +02:00
subham sarkar and GitHub
3d93d59b1c
Fix double dot range for invalid input ( #164 )
...
* Fix double dot range for invalid input.
* Fix a corner case and add test case.
2021-03-01 13:19:14 +03:00
Anton Medvedev
31ed24b493
Fix compiler fold optimization of "integer divide by zero"
2020-09-09 22:07:26 +02:00
Anton Medvedev
20bb4fdf1a
use patch func
2020-05-10 13:51:54 +03:00
Ernest Micklei and Anton Medvedev
28881a233c
fix folding of constant ints
2020-05-10 13:51:54 +03:00
Anton Medvedev
5e0ef67844
Use ast.Patch func
2020-03-16 16:29:25 +03:00
Anton Medvedev
e5049dfda3
Make conf top-level package
2020-03-16 16:29:25 +03:00
Anton Medvedev and GitHub
acba548cab
Add ConstExpr
2020-03-10 08:36:12 +03:00
Anton Medvedev
7f64f785ad
Fix lexer to emit correct location with range operator
2020-03-02 14:56:50 +03:00
Anton Medvedev and GitHub
2836d109c5
Add memory budget
2020-03-02 13:43:39 +03:00
Anton Medvedev
0809f2c91b
Refactor to use new parser
2020-02-25 09:33:17 +03:00
Anton Medvedev
e2f2207d81
goimports
2019-07-02 14:34:48 +03:00
Anton Medvedev
3a506d7a3c
Fix optimizer for in []int
2019-06-27 12:06:15 +03:00
Anton Medvedev
4c32accdba
Fix optimizer for in array
2019-06-26 15:12:36 +03:00
Anton Medvedev
37a0db14ff
Make optimized program unmarshalable
2019-06-26 11:21:45 +03:00
Anton Medvedev
83979d9691
Add in array optimization
2019-06-26 10:35:59 +03:00
Anton Medvedev
82236d001f
Improve constant folding algorithm
2019-06-26 10:17:39 +03:00