Martin Blicha
4b50f26834
Negative numbers do not have to be atoms
2023-09-05 12:39:19 +02:00
Martin Blicha
d9dc8f475e
Enable resource limit for Z3
2023-09-05 12:39:19 +02:00
Martin Blicha
f4b849972c
Remove smtlib2 solver option
2023-09-05 12:39:17 +02:00
Martin Blicha
72974adb92
Fix check for SMT query in UniversalCallback
2023-09-05 12:37:56 +02:00
Martin Blicha
e7fe310bc2
Remove unnecessary header
2023-09-05 12:37:56 +02:00
Martin Blicha
efb0d4253c
Use callback properly in SMTLib2 interface
2023-09-05 12:37:56 +02:00
Martin Blicha
cabec89872
Removing SMT portfolio
2023-09-05 12:37:56 +02:00
Martin Blicha
1e190abf6e
Initial work on unified way to interact with solvers
2023-09-05 12:37:56 +02:00
Nikola Matic
fdc6699159
Rematerialize zero literals with default cleanup sequence
...
Add unused pruner step to the end of the default cleanup sequence
2023-09-04 15:40:33 +02:00
Jun Zhang
2cf23e15d8
Bump fmtlib to 9.1.0
...
In our downstream project, we have two dependencies: solidity and spdlog.
Both of them depend on fmtlib. Unfortunately, the versions of fmtlib they
use do not match, which leads to compilation failure.
The issue arises because spdlog attempts to use solidity's fmtlib, but the
specific version (v8.0.1) has a bug. Ref: https://github.com/gabime/spdlog/issues/2142
While we could keep this change in our own fork, we believe it would
be worthwhile to contribute it back to the upstream since spdlog is a
very popular logging library.
Signed-off-by: Jun Zhang <jun@junz.org>
2023-08-28 13:58:56 +08:00
Kamil Śliwak
9adbced98e
Remove parser error recovery mode
2023-08-22 12:00:11 +02:00
Kamil Śliwak
b17757ea17
CompilerStack: Extend inconsistent error sanity check to cover stopAfter: parsing as well
2023-08-21 17:50:41 +02:00
Kamil Śliwak
a15ef59eec
Remove the ability to produce an AST in presence of errors in --error-recovery mode
...
This reverts commit 7fd7cc1e76
.
2023-08-21 17:50:41 +02:00
Kamil Śliwak
e8d050a1ce
Simplify redundant state check in CompilerStack::analyze()
2023-08-21 17:50:41 +02:00
Nikola Matic
f344dc164e
Purge using namespace from libsolidity/lsp and parsing
2023-08-16 17:07:52 +02:00
Nikola Matic
342ba0324f
Purge using namespace std from libsolidity/interface
2023-08-15 15:45:15 +02:00
Nikola Matic
d0a5556fd0
Purge using namespace from libsolidity/formal
2023-08-15 14:40:27 +02:00
Nikola Matic
ce423e5ae5
Purge using namespace std from libsolidity/codegen
2023-08-14 21:37:31 +02:00
Nikola Matic
2a2a9d37ee
Purge using namespace std from libsolidity/ast
2023-08-14 14:54:58 +02:00
Nikola Matic
de1a017ccb
Purge using namespace std from libsolidity/analysis
2023-08-14 11:44:50 +02:00
Kamil Śliwak
4020552e1d
SourceReferenceFormatter: Remove the ineffective _withErrorIds parameter from formatExceptionInformation()
2023-08-11 14:15:56 +02:00
Kamil Śliwak
8407c8c615
SourceReferenceFormatter: Support full range of options in formatErrorInformation()
2023-08-11 14:15:56 +02:00
Kamil Śliwak
b7d2c8bb0a
SourceReferenceFormatter: Line wrapping and unused includes
2023-08-11 14:15:56 +02:00
Pawel Gebal
6574c10f25
SMTChecker: Visit the condition in for and while loops after loop is unrolled
2023-08-03 13:36:41 +02:00
r0qs
ea7ee3d5fe
Fix yul ast ID to 0 instead of 1.
2023-07-28 17:48:35 +02:00
Pawel Gebal
db5baebff8
SMTChecker fix: Do not unroll loop after it completes
2023-07-26 16:31:03 +02:00
Nikola Matic
964bdc711c
Fix ICE when emitting event from another contract
2023-07-21 21:49:09 +02:00
Daniel Kirchner
5c7214cbe3
Always generate code for .selector member access.
2023-07-18 18:15:32 +02:00
Nikola Matić
64427412c4
Merge pull request #14347 from ethereum/fixTypeCheckingAbiDecode
...
Disallow the use of `TypeType` in complex expressions
2023-07-18 18:14:45 +02:00
Nikola Matic
82cb5338a9
Relax delegatecall type restriction plus test
2023-07-18 17:07:13 +02:00
Daniel Kirchner
110e2a656d
Restrict mobile types of function types.
...
Move ternary tests to semanticTests
2023-07-18 14:13:36 +02:00
Matheus Aguiar
4fd5bbf50b
Restrict mobileType of TypeType
2023-07-18 12:58:11 +02:00
Matheus Aguiar
f3fc19080a
Override mobileType of MagicType to null
2023-07-18 10:56:02 +02:00
Daniel Kirchner
0ab0842c29
Disallow conversions between declaration function types.
2023-07-17 18:33:07 +02:00
Kamil Śliwak
dad2bf6472
Relax restrictions on immutable initialization
2023-07-14 15:29:32 +02:00
Kamil Śliwak
490b90d0ab
Implement ImmutableItem::setToZero() to make delete work with immutables
2023-07-14 15:29:32 +02:00
Kamil Śliwak
5b70830a64
IRGeneratorForStatements: Small refactor in endVisit(IndexAccess) for readability
2023-07-13 11:07:40 +02:00
Kamil Śliwak
16220db759
IRGeneratorForStatements: Fix undefined order of functions when generating code for index expressions
2023-07-13 11:06:11 +02:00
Martin Blicha
3599c8c6b9
SMTChecker: Fix generation of smtlib scripts
...
When both CHC and BMC engines are used, the type of state variable
changes when trusted mode for external calls is used. This is because in
CHC engine, trusted mode means we pack more information into the
symbolic state. In BMC this type is always simple.
However, if BMC is run after CHC, in the current code state variables
are reset (and their declaration dumped into SMT-LIB script) before BMC
resets the type of the state variable.
The proposed solution is to simply reset the variable type before the
first variable of this type is created.
2023-06-30 15:57:51 +02:00
Pawel Gebal
826fd90dcf
Fix error in SMTChecker: Use rich indentifier instead of external identifier to ecnode member access to functions
2023-06-23 15:24:55 +02:00
Kamil Śliwak
3ecf968001
Merge pull request #14328 from ethereum/fix-incomplete-ast-in-standard-json-on-analysis-fail
...
Fix incomplete AST in standard json on analysis fail
2023-06-19 18:26:33 +02:00
Pawel Gebal
d4be1d9c2f
Add --print-smt flag to output SMTChecker SMTLIB code
2023-06-16 14:04:07 +02:00
Kamil Śliwak
712229a5c6
Fix StandardCompiler returning an incomplete AST in Standard JSON in case of an early exit during analysis
2023-06-15 10:50:04 +02:00
Kamil Śliwak
b1a773be2f
IRGenerator: Leave IR optimization up to the caller to avoid unnecessarily doing it twice
2023-06-07 19:44:40 +02:00
Kamil Śliwak
25be38905f
YulStack: When Yul optimization is not requested, run Yul optimizer with a minimal sequence instead of disabling it
2023-06-07 12:13:38 +02:00
Nikola Matic
47969adf91
Experimental standard library
...
Change import syntax and cover with tests
2023-06-06 17:16:23 +02:00
Pawel Gebal
f15b826431
Add optional bounds to unroll loops in BMC model checker
2023-06-02 18:32:38 +02:00
Leo
a0933fa80a
Merge pull request #14276 from ethereum/smtchecker-fix-ice
...
SMTChecker: External function call with struct member is not getter
2023-05-30 13:46:35 +02:00
Leo
ceab4dfee5
Merge pull request #14269 from blishko/smtchecker-fix-analysis-external-calls
...
[SMTChecker] Remember verification targets from trusted external calls
2023-05-30 13:45:37 +02:00
Martin Blicha
8ca453f82e
SMTChecker: External function call with struct member is not getter
...
if a struct has a member that is a function pointer with `external`
attribute, and such a member is called, it is currently incorrectly
treated as a public getter in SMTEncoder.
The proposed fix is to make SMTEncoder::publicGetter more strict in
deciding whether an expression is a public getter.
The added condition, that the access happens on a state variable, is
exactly what is checked later with an assertion that is currently
failing.
2023-05-26 14:23:45 +02:00