From ef7fbf8d0c7310142c39fb7a940e0732e245754a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aaron=20Cola=C3=A7o?= Date: Fri, 23 Feb 2018 23:17:48 +0530 Subject: Fix example; closes #3582 --- docs/frequently-asked-questions.rst | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'docs') diff --git a/docs/frequently-asked-questions.rst b/docs/frequently-asked-questions.rst index a6bead29..3c83cbc7 100644 --- a/docs/frequently-asked-questions.rst +++ b/docs/frequently-asked-questions.rst @@ -40,9 +40,9 @@ Is there a decompiler available? ================================ There is no exact decompiler to Solidity, but -`Porosity `_ is close. -Because some information like variable names, comments, and -source code formatting is lost in the compilation process, +`Porosity `_ is close. +Because some information like variable names, comments, and +source code formatting is lost in the compilation process, it is not possible to completely recover the original source code. Bytecode can be disassembled to opcodes, a service that is provided by @@ -542,12 +542,27 @@ contract level) with ``arrayname.length = ;``. If you get the :: - int8[] memory memArr; // Case 1 - memArr.length++; // illegal - int8[5] storageArr; // Case 2 - somearray.length++; // legal - int8[5] storage storageArr2; // Explicit case 2 - somearray2.length++; // legal + // This will not compile + + pragma solidity ^0.4.18; + + contract C { + int8[] dynamicStorageArray; + int8[5] fixedStorageArray; + + function f() { + int8[] memory memArr; // Case 1 + memArr.length++; // illegal + + int8[5] storage storageArr = fixedStorageArray; // Case 2 + storageArr.length++; // illegal + + int8[] storage storageArr2 = dynamicStorageArray; + storageArr2.length++; // legal + + + } + } **Important note:** In Solidity, array dimensions are declared backwards from the way you might be used to declaring them in C or Java, but they are access as in -- cgit v1.2.3