-
Notifications
You must be signed in to change notification settings - Fork 4
Feature status
vird edited this page Feb 17, 2020
·
3 revisions
| FEATURE | pass parse | pass translate | tezos support |
|---|---|---|---|
| Preprocessor | |||
| Version | yes | yes | no |
| Experimental | yes (ignored) | yes | no |
| ABIEncoderV2 | yes (ignored) | yes | no |
| Import | yes (inlined) | yes | no |
| Type support | |||
| bool | yes | yes | yes |
| int | yes | yes | partially (capacity is not correct) |
| uint | yes | yes | partially (capacity is not correct) |
| string | yes | yes | yes |
| bytes | yes | yes | yes |
| bytes0 .. bytes32 | yes | yes | partially (capacity is not checked) |
| address | yes | yes | partially (capacity is not checked) |
| array | yes | yes | partially (we use maps, because delete can make holes) |
| struct | yes | yes | partially (records, nested has bugs) |
| tuple | yes | yes | yes |
| map | yes | yes | partially (nested has bugs) |
| Expressions | |||
| Const | |||
| bool | yes | yes | yes |
| int | yes | yes | yes |
| uint | yes | yes | yes (proper nat const) |
| string | yes | yes | yes |
| Unary operators | |||
! - a++ a-- ++a --a
|
yes | partially (-uint is vulnerability and will throw) | yes (need check fo all types) |
| Arithmetic binary operators | |||
= |
yes | yes | partially (different types are not always supported) |
+ - * / %
|
yes | yes | yes (need check fo all types) |
&& ` |
` | yes | |
== !=
|
yes | yes | partially (different types are not always supported) |
< <= > >=
|
yes | yes | partially (bytes not supported) |
<< >>
|
yes | yes | yes (only last LIGO builds) |
** |
yes | no (TBD emulation) | no (not available in Michelson) |
| Array operators | |||
a[b] |
yes | yes | partially (some accesses are not fully supported. Need recheck) |
a.b |
yes | partially (TBD bug with structs) | yes |
delete a[b] |
yes | yes | yes |
| Other operators | |||
| Type cast | yes | partially | partially |
new |
yes | partially | yes |
Array init (e.g. [1,2,3]) |
yes | yes | yes |
Ternary (e.g. a?b:c) |
yes | yes | yes |
| Global variables | |||
now |
yes | yes | yes |
msg.sender |
yes | yes | yes |
tx.origin |
yes | yes | yes |
block.timestamp |
yes | yes | yes |
block.coinbase |
yes | partially (we provide burn address) | TBD |
block.difficulty |
yes | partially (we provide 0) | no |
block.gaslimit |
yes | partially (we provide 0) | TBD |
block.number |
yes | partially (we provide 0) | TBD |
msg.data |
yes | partially (we provide empty bytes array) | no (incompatible format) |
msg.gas |
yes | partially (we provide 0) | TBD |
msg.sig |
yes | partially (we provide empty bytes array) | no (incompatible format) |
tx.gasprice |
yes | partially (we provide 0) | TBD |
| Global functions | |||
require |
yes | yes | yes |
assert |
yes | yes | yes |
revert |
yes | yes | yes |
abi.encodePacked |
yes | yes (skipped) | no (but just skip is ok) |
| TBD | |||
| Statements | |||
| variable declaration with type | yes | yes | yes |
| variable declaration with type with assigned value | yes | yes | yes |
| variable declaration no type with assigned value | yes | yes | yes |
| multiple variable declaration no type with assigned value | yes | partially (TBD holes are not supported yet) | yes |
if |
yes | yes | yes |
while |
yes | yes | yes |
for |
yes | yes (emulated with while) | no (emulated) |
throw |
yes | yes | yes |
continue, break
|
yes | partially (comment generated) | partially (PascalLIGO has no support) |
return |
yes | partially (only 1 return at end is supported) | partially (PascalLIGO has no return in the middle support) |
| Comments | partially (ignored TBD fix) | yes | yes |
| Function call | yes | yes | yes |
| Function call (pure) | yes | yes | yes |
| Function call (library no using) | yes | yes | no (we emulate) |
| Function call (library with using) | yes | no | no (we emulate) |
| Declaration statements | |||
| function declaration | yes | yes | yes |
| contract declaration | yes | yes | no (we emulate with router) |
| contract inheritance | yes | yes | no (we emulate) |
| contract inheritance with constructor call | yes | yes | no (we emulate) |
| struct declaration | yes | yes | yes |
| struct/contract field declaration | yes | yes | yes |
| enum declaration | yes | yes | yes |
| pure | yes | yes | yes |
| view | yes | no (TBD) | yes |
| internal | yes | yes | yes |
| private | yes | yes | yes |
| library declaration | yes | yes | no (emulated with inline) |
| using library | yes | no (TBD) | no (emulated with inline) |
| Money transfer and calls | |||
| send | yes | partially | partially (can't check result) |
| transfer | yes | partially | partially (can't check result) |
| smart contract call | yes | yes | partially (difficult to get result) |
| smart contract call with money transfer | yes | no (TBD) | partially (difficult to get result) |
| Deployment | |||
| call constructor on deploy | yes | yes | no (you need call manually) |
| API | |||
| cryptography related functions | |||
sha256 |
yes | yes | yes |
sha3, keccak256
|
yes | partially (we call sha256) | no |
ripemd160 |
yes | partially (we call blake2b) | no |
ecrecover |
yes | partially (just pass) | no |