Skip to content

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

Clone this wiki locally