Jeff Young
ec92def539
Add support for unitless values to PCB_EXPR_EVALUATOR.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13016
(cherry picked from commit 8260f0ee13
)
2022-11-29 23:28:37 +00:00
Seth Hillbrand
554d82b2a4
Ensure that we clear deleted values
...
When throwing on an invalid value, we may end up freeing the same tree
twice. This is generally not an issue but we need to mark the freed
memory as null to avoid a double free
Fixes https://gitlab.com/kicad/code/kicad/issues/12981
(cherry picked from commit 62863d6c5b
)
2022-11-25 10:47:03 -08:00
Jeff Young
7dfa715a45
Bug fixes for layer expression processing.
...
1) Push a VAR onto the stack, not a resolved value
2) Don't collapse a PCB_LAYER_VALUE to a VALUE during processing
3) Make sure we run overloaded operators from the correct side
Fixes https://gitlab.com/kicad/code/kicad/issues/12437
(cherry picked from commit cf1565a16a
)
2022-09-28 14:00:25 +01:00
Jeff Young
1a252b4f96
Add a compile error for ill-defined rules, and more performance.
...
Also adds const-safety to GetBoard().
2021-08-16 12:14:17 +01:00
Jeff Young
6aaf4413b3
Fix kicad_string.h / string.cpp mismatch.
...
They don't define a KiCad string class, so the header file name was
somewhat misleading. But the fact that they didn't match definitely
made coding more difficult.
2021-07-29 16:03:25 +01:00
Wayne Stambaugh
6c3ba1c20b
Coverity issue fixes.
...
Issues #332032 , #332086 , #332157 , and #332171 .
2021-07-09 10:56:35 -04:00
Wayne Stambaugh
65c7958293
Coverity issue fixes.
...
Issues #331869 , #331875 , #332203 , #332159 , #332171 , #332180 , and #332648 .
2021-07-08 08:33:08 -04:00
Marek Roszko
cf2bb5692a
Remove the wxLog calls from math/util.h for now
...
This was leaking windows headers and partial wx headers to 1084 compilation units......
This also means math/util.h is leaking to 1084 compilation units which seems a bit high too.
2021-06-01 18:44:22 -04:00
Jeff Young
4a77a4080d
Fix Coverity warning.
2021-05-21 14:38:15 +01:00
Jeff Young
e93e9fa3e5
Add rudimentary type checking to rule eval with reporter.
...
Also cleaned up existing error reporting to not expend CPU cycles
when there was no reporter.
Fixes https://gitlab.com/kicad/code/kicad/issues/8438
2021-05-20 23:06:24 +01:00
Jeff Young
b1fa02bcc8
Push a non-existent ref's value as 0. (Don't just crash.)
...
Fixes https://gitlab.com/kicad/code/kicad/issues/7971
2021-03-20 11:05:38 +00:00
Jon Evans
5c17ff0595
Libeval: don't try to dereference invalid STRUCT_REF parent
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7764
2021-02-28 14:46:13 -05:00
Jeff Young
1ce1e493d6
A rule zone is not really a BOARD_CONNECTED_ITEM.
...
Or at least it shouldn't always be treated as one.
Fixes https://gitlab.com/kicad/code/kicad/issues/6382
2020-11-15 20:23:15 +00:00
Ian McInerney
31e626f279
Cleanup creation of all our smart pointers
2020-10-26 23:52:44 +00:00
Jeff Young
948036372e
Ban unitless numbers in DRC rules.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6029
2020-10-17 10:58:08 +01:00
Marek Roszko
a1c75748a0
Remove GetChars(), a wxWidgets 2.9 compatibility hack
2020-10-15 20:53:25 -04:00
Jeff Young
ebd5dc81cc
Fix some more cases of malformed syntax crashing the compiler.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6016
2020-10-15 18:32:52 +01:00
Jon Evans
f7d3dddd6d
Fix format argument assertion in libeval_compiler
2020-09-28 21:38:08 -04:00
Roberto Fernandez Bautista
39995341d9
Compile fixes
...
Fix compile error
Fix string format to use %ld instead to work on clang in CADSTAR Archive importers
Add virtual destructor to CONNECTION in CADSTAR_ARCHIVE_PARSER
2020-09-27 22:05:07 +00:00
Tomasz Wlostowski
78fc0349a9
libeval_compiler: free tree in destructor, warning fixes
2020-09-27 17:49:26 +02:00
Tomasz Wlostowski
d2ed27b500
libeval_compiler: fix string comparison
2020-09-27 16:45:46 +02:00
Tomasz Wlostowski
0c885c9c31
libeval_compiler: == operator now does wildcard string comparison
2020-09-27 16:45:46 +02:00
Tomasz Wlostowski
5023d9a780
libeval_compiler: initial support for multiple (>1) function/method arguments
2020-09-27 16:45:46 +02:00
Jeff Young
0763a8962c
Implement boolean not processing in expression language.
...
Also adds some more error catching to be more robust in the face
of malformed customer rules.
Fixes https://gitlab.com/kicad/code/kicad/issues/5694
2020-09-19 12:08:18 +01:00
Jeff Young
80acf944a0
Don't assert when compiling rules; generate a user-visible error.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5694
2020-09-18 22:29:47 +01:00
Tomasz Wlostowski
712215fe12
libeval_compiler: fix crash when preflighting method calls with 0 arguments
2020-09-08 01:31:42 +02:00
Tomasz Wlostowski
466cbe2f00
libeval_compiler: fixhandling of method calls with empty argument list (e.g. 'A.method()' )
2020-09-08 01:31:42 +02:00
Jeff Young
a35698f08a
Don't fire non-well-formed rules. (But don't assert either.)
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5443
2020-09-01 18:36:58 +01:00
Jeff Young
050bbcdb4f
Fix error reporting from function pre-flighting.
2020-08-26 12:56:17 +01:00
Jeff Young
d7f26cfdf2
Fix test failures.
2020-08-15 19:33:21 +01:00
Jeff Young
b42395ec8d
Attempt to fix locale issue with decimal separator in rules.
2020-08-15 17:32:13 +01:00
Jeff Young
ec5040aff5
Fix missing 'else' and EOF processing, both of which cause crashes.
2020-08-14 22:11:04 +01:00
Jeff Young
edda024285
Fix up some Coverity and CLion warnings.
2020-08-14 12:41:20 +01:00
Tomasz Wlostowski
ab17f4b7b5
libeval_compiler: thou shalt not use strlen() on wxStrings. Works under Linux, doesn't work on OSX/MSVC...
2020-08-14 01:55:11 +02:00
Jeff Young
519bc80394
Replace error reporting in DRC rule compiler.
2020-08-13 18:47:41 +01:00
Jeff Young
0b17dbd123
Fix nesting issues in the DRC rule expression code generator.
...
We were executing function calls multiple times because we were
processing them at a depth the traversal algorithm wasn't expecting.
2020-08-13 18:36:10 +01:00
Tomasz Wlostowski
518a659185
Post-rebase fixes
2020-08-13 14:50:59 +02:00
Tomasz Wlostowski
4abe71d2ef
libeval_compiler: implemented unary +/- operators
2020-08-13 14:50:59 +02:00
Tomasz Wlostowski
c88c8102e5
libeval_compiler: fixed segfault for "(number)" expressions.
2020-08-13 14:50:59 +02:00
Tomasz Wlostowski
a5a06e3c89
libeval_compiler: general clean up of the Lemon grammar + some smart pointers + killed all memory leaks. WIP!
2020-08-13 14:50:59 +02:00
Tomasz Wlostowski
29a01e5515
libeval_compiler: wxString()-ification WIP
2020-08-13 14:50:59 +02:00
Jeff Young
17d3e36bd6
Fix crash bug when condition expression is empty.
2020-08-12 22:20:07 +01:00
Ian McInerney
0a1d8c1aaa
Move lemon parser generation into build directory
...
This moves the generated files out of the source tree and into
the build directory. They are now regenerated each time they are
needed, based on the timestamp of the generated file compared to
the timestamp of the lemon file.
To do this, we also bundle lemon into the thirdparty directory
and build it for ourselves since it is a very tiny program and
not all platforms seem to distribute it in a consistent manner.
Fixes https://gitlab.com/kicad/code/kicad/issues/5013
2020-08-10 13:53:54 +00:00
Jeff Young
7e63376266
Fix typo in DRC rule error reporting that causes crash.
2020-08-03 22:21:35 +01:00
Ian McInerney
268dec5c19
Cleanup some build and Coverity warnings
2020-07-31 02:46:05 +01:00
Jeff Young
577c1be391
Report all DRC rule errors, not just the first.
2020-07-30 14:27:42 +01:00
Tomasz Wlostowski
fe4695719d
libeval_compiler: post-rebase fixes
2020-07-29 23:14:34 +02:00
Tomasz Wlostowski
3c80b98d1c
libeval_compiler: CONTEXT runs the UCODE now (thread-safe solution), fixed some memory leaks
2020-07-29 23:14:03 +02:00
Jeff Young
2ea5528cd0
Start compiling identifiers.
...
We'll need this if we support the "L == foobar" syntax, and besides
it should really be up to the parser client whether or not they use
identifiers with no function call or property reference.
It also allows us to generate error messages for unknown identifers.
2020-07-27 19:53:42 +01:00
Jeff Young
8a010bc23e
Null safety for expression variables.
2020-07-27 19:53:42 +01:00