Commit Graph
54 Commits
Author SHA1 Message Date
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 MedvedevandGitHub c953d0dde1 Refactor types table (#667) 2024-06-04 00:08:01 +02:00
Anton MedvedevandGitHub 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 MedvedevandGitHub 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
SergeyandGitHub 2835692a5f Optimize boolean operations between all, any, none functions (#626) 2024-04-12 18:49:41 +02:00
Anton MedvedevandGitHub 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
SergeyandGitHub 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 BentonandAnton 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 KelleyandGitHub 7bb3ef506e fix ConstExpr to handle custom functions returned error (#239) 2022-05-24 21:38:59 +02:00
subham sarkarandGitHub 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 MickleiandAnton 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 MedvedevandGitHub 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 MedvedevandGitHub 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