[SMTChecker]: document currently unsupported features
- Dominant language
- C++
- Stars
- 25.7k
- Forks
- 6.2k
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 29
Description
## Page
[SMTChecker](https://docs.soliditylang.org/en/v0.8.18/smtchecker.html).
## Issue Description
I've recently started using the SMTChecker on a code base that uses many of the modern Solidity features, and I was disappointed to see that many features are not yet supported. To share just a few examples:
```text
warning[7650]: Warning: Assertion checker does not yet support this expression.
--> src/SablierV2LockupLinear.sol:370:17:
|
370 | if (recipient.code.length > 0) {
| ^^^^^^^^^^^^^^
```
The above is the [`.code` member of the `address` type](https://docs.soliditylang.org/en/v0.8.18/units-and-global-variables.html#members-of-address-types).
Then:
```text
warning[8364]: Warning: Assertion checker does not yet implement type type(struct LockupLinear.Stream storage pointer)
--> src/SablierV2LockupLinear.sol:419:30:
|
419 | _streams[streamId] = LockupLinear.Stream({
| ^^^^^^^^^^^^^^^^^^^
```
Here, I am not sure what is not supported: structs defined in libraries, assignments to mappings, or the `Struct({ key: val })` style of initialing structs?
```text
warning[7650]: Warning: Assertion checker does not yet support this expression.
--> src/SablierV2LockupLinear.sol:419:30:
|
419 | _streams[streamId] = LockupLinear.Stream({
|
```
Ditto.
## Documentation Request
Given the above, it would be helpful to add a new section in the SMTChecker documentation page that would outline the list of currently unsupported features of the compiler.
Contributor guide
Research direction
Start with the linked SMTChecker documentation page and the unsupported-feature warnings shown in the issue. Identify which Solidity features the SMTChecker currently does not support, resolve the uncertainty around structs, mappings, and struct initialization, and add a clear list or section to the documentation page.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- solidity
- Domain
- compilers, documentation
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100