Commit Graph
100 Commits
Author SHA1 Message Date
hrkrshnn e107d51f46 Disallow certain implicit conversions between integer types.
Disallow implicit conversion from ``uintN`` and ``intM`` when ``M > N``, and by extension, explicit
conversion between the same types are also disallowed.
2021-01-12 08:23:47 +01:00
Harikrishnan Mulackal 5241b7b761 Merge pull request #10684 from ethereum/fixIRWrappingExp
Use wrapping arithmetic for exp in unchecked blocks.
2021-01-06 18:53:54 +01:00
Harikrishnan Mulackal 591f04e41c Merge pull request #10718 from ethereum/gitignoreClion
Extend .gitignore to all CLion build directories and allow "build" to be a symlink.
2021-01-06 12:45:30 +01:00
Harikrishnan Mulackal 3cb48b8c60 Merge pull request #10683 from ethereum/optSubEq
Optimize iszero(sub(x, y)) to eq(x, y).
2021-01-06 12:22:54 +01:00
Harikrishnan Mulackal e06af46f3d Merge pull request #10697 from GKStretton/patch-1
Fix typo
2020-12-28 13:10:24 +01:00
Harikrishnan Mulackal 8194cbb497 Merge pull request #10640 from ethereum/error-cleanup
Improve the Error class with a constructor for secondaryLocation
2020-12-17 17:58:28 +01:00
hrkrshnn 571f9dafca Documentation for the PR about making address conversions nonpayable 2020-12-15 15:04:45 +01:00
hrkrshnn fdaede9b3e Tests after disallowing some explicit payable conversions 2020-12-15 15:01:40 +01:00
hrkrshnn 2fb191175b Disallow some explicit conversions to address payable
The following explicit conversions are disallowed:

1. uint160 -> address payable
2. bytes20 -> address payable
3. literals -> address payable (payable(0) is an exception)
2020-12-15 15:01:40 +01:00
Harikrishnan Mulackal 90a0bbefa3 Merge pull request #10593 from ethereum/someMoreTests
Some more tests for overflow.
2020-12-14 19:41:10 +01:00
hrkrshnn 7438c4dc16 Tests after making all explicit address conversions as non-payable 2020-12-14 18:46:01 +01:00
hrkrshnn f30c7cbac8 All explicit address conversions return a non-payable address 2020-12-14 18:41:27 +01:00
hrkrshnn 88c99a7538 Tests/Docs: changing type of msg.sender and tx.origin into address
And also making the type of address(literal) as non-payable address.
2020-12-14 16:55:48 +01:00
hrkrshnn e1a95cfd42 Disallow conversions from literals to payable address
To get a payable address, one has to go through address. For example, `payable(address(0))`.
2020-12-14 16:55:48 +01:00
hrkrshnn 9bd778d728 Make msg.sender and tx.origin have type address
Previously both of them had type address payable. The idea is that anything that is not know to be
payable should be non-payable.
2020-12-14 16:55:48 +01:00
Harikrishnan Mulackal 2139f93410 Merge pull request #10556 from ethereum/external-test-readme
README describing the workflow around external tests and their repositories
2020-12-11 17:37:38 +01:00
Harikrishnan Mulackal cca484eaa5 Merge pull request #10551 from ethereum/restore-original-external-test-branches-on-breaking
[BREAKING] Restore original external test branches on breaking
2020-12-09 18:25:17 +01:00
hrkrshnn 06d719e4f1 Move filter to CommonData.h 2020-12-09 11:13:27 +01:00
hrkrshnn 7ea96c5583 Move the implementation of createLinkingFunction into a cpp file 2020-12-09 11:13:27 +01:00
hrkrshnn 9e5d7b9910 Test updates after disallowing Integer -> Contract conversion 2020-12-03 17:53:00 +01:00
hrkrshnn 40244c5469 Tests/Docs after stricter explicit conversion. 2020-12-03 16:51:05 +01:00
hrkrshnn 92ab32e532 Stricter explicit conversion between types.
A type can be converted to another if the conversion requires at most one of the following: sign,
width, kind (int, address, bytesXX, etc.) For example, the conversion `uint16(int8)` is now disallowed.
2020-12-03 16:49:53 +01:00
Harikrishnan Mulackal 61363d8e21 Merge pull request #10471 from ethereum/yul-interpreter-finetune-execution-steps
Yul interpreter: Smaller execution timeout for tests and additional testcases
2020-12-03 11:38:33 +01:00
hrkrshnn 3efac3eef0 NameSimplifier is removed from steps available to users. 2020-12-02 13:48:01 +01:00
hrkrshnn 5a15a4a6bd Fix a bug in NameSimplifier.
A new name created by NameSimplifier could also be created by NameDispenser, since the knowledge of
the new name was not stored in NameSimplifier.
2020-12-02 13:48:01 +01:00
Harikrishnan Mulackal 6513b1f2ae Merge pull request #10468 from ethereum/force-latest-truffle-for-ens
Force ENS external test to use latest Truffle
2020-12-02 11:24:51 +01:00
Harikrishnan Mulackal 91e67472bf Merge pull request #10383 from ethereum/add-ens-external-tests
External tests: Add ENS contracts
2020-11-30 18:15:15 +01:00
hrkrshnn cf6fe5a777 NameDispenser: Added three public functions.
The private function `illegalName` was converted into a public function.

A new public getter function `usedNames()` returns a reference to `m_usedNames`.

A public function reset that would change all `m_usedNames` to *only* the names that are used in the
AST. Also resets the counter. This will be used before the final NameSimplifier step in the
optimization phase.

The first two functions were added so that `NameSimplifier` could use it instead of traversing the AST
using `NameCollector` to find used names.
2020-11-30 14:02:57 +01:00
hrkrshnn a834476de6 Tests/Docs after disallowing super, this and _ as declaration names 2020-11-25 11:14:13 +01:00
hrkrshnn 1a6f0fe52f Disallow declarations to have names "this", "super" and "_".
There will be a declaration error 3726 if these names are used in the contract. Note that there is
an existing warning about shadowing a built-in for "this" and "super".
2020-11-25 11:14:13 +01:00
Harikrishnan Mulackal fb2d071b70 Merge pull request #10387 from ethereum/fixBreakingMerge
Fix merge conflicts
2020-11-25 09:20:23 +01:00
hrkrshnn 52c8fcc67b Removed "compileToEwasm: also" option from 4 tests cases 2020-11-25 08:13:46 +01:00
Harikrishnan Mulackal 1dd0cd1245 Merge pull request #10366 from ethereum/wasm-string-literal
[wasm] Document what StringLiteral is
2020-11-23 10:20:46 +01:00
hrkrshnn 2348b721bb Tests after changing type of super to TypeType 2020-11-10 15:38:21 +01:00
hrkrshnn 9eafa1fa1a Change type of super to TypeType 2020-11-10 15:38:21 +01:00
hrkrshnn 03f58c6b52 Strict explicit conversion between literals and enums
Explicit conversions between literals and enums are only allowed if the literal can represent a
value in the enum.
2020-11-06 19:15:02 +01:00
Harikrishnan Mulackal 170cfeb1f0 Merge pull request #10205 from ethereum/smt_remove_cli_timeout_tests
Adjust SMTChecker timeout tests
2020-11-06 15:29:57 +01:00
Harikrishnan Mulackal be74479517 Merge pull request #10197 from cakesoft-khushi/new_branch
Update yul.rst
2020-11-04 12:37:39 +01:00
Harikrishnan Mulackal 24cce56215 Merge pull request #10189 from ethereum/underscore-tests
Add syntax and semantic tests for underscore
2020-11-03 17:06:31 +01:00
hrkrshnn 29e23efc93 Tests/Docs after "stricter explicit conversion from Literals to Integers" 2020-11-03 14:31:44 +01:00
hrkrshnn a555556559 Stricter explicit conversions from Literals to Integers.
Explicit conversions from Literals to Integers will now be as strict as implicit conversions between
the same.
2020-11-03 14:31:44 +01:00
hrkrshnn adcf9eba8d Fix incorrectly set annotation.requiredLookup 2020-10-30 15:40:06 +01:00
Harikrishnan Mulackal 71d815f565 Merge pull request #10114 from ethereum/restructureBreaking
Re-structure list of breaking changes.
2020-10-26 18:49:38 +01:00
hrkrshnn 0e30fbbae1 Fix failing SMTChecker test on breaking 2020-10-26 14:01:40 +01:00
Harikrishnan Mulackal 07e3f60ffc Merge pull request #10095 from ethereum/smt_fix_conditional
[SMTChecker] Fix ICE on conditional with tuples of rationals
2020-10-26 10:15:26 +01:00
hrkrshnn 13e7012e1e Parser: Exponentiation is right associative 2020-10-13 16:38:37 +02:00
Harikrishnan Mulackal dbd5326d0c Commandline test for exp with literal base 2020-10-12 18:54:58 +02:00
Harikrishnan Mulackal 418aa01c5b Optimization for exponentiation when the base is a literal 2020-10-12 18:54:58 +02:00
Harikrishnan Mulackal b0acf5dc86 Merge pull request #10005 from ethereum/bugs-fix-tabs
Docs: convert tabs to spaces
2020-10-12 10:03:13 +02:00
Harikrishnan Mulackal 8f2cd82fd9 Merge pull request #9968 from ethereum/docs_fixes
[Docs] Updates Index/Home Page of Sol Docs / Adds "Getting Started"
2020-10-12 08:54:31 +02:00
hrkrshnn 30652394e5 Docs: convert tabs to spaces 2020-10-12 08:01:20 +02:00
Harikrishnan Mulackal a309669f75 Disallow explicit conversions from negative literals to `address` 2020-10-07 16:06:02 +02:00
Harikrishnan Mulackal 24ba5aa3aa Updating docs on DynamicArrayCleanup bug 2020-10-06 16:06:02 +02:00
Harikrishnan Mulackal 1bdbc10110 Properly cleanup after copying dynamic-array to storage for packed types 2020-10-06 16:06:02 +02:00
Harikrishnan Mulackal 756e21a888 Merge pull request #9946 from ethereum/viewpure-tests
Add more tests to ViewPureChecker
2020-10-02 14:36:28 +02:00
Harikrishnan Mulackal 7773bb3bd0 Fix typo: storage 2020-10-02 11:44:10 +02:00
Harikrishnan Mulackal fd02ccc68c Implemented events with indexed function as parameter in Yul 2020-09-30 12:11:39 +02:00
Harikrishnan Mulackal 3970412422 Implemented events with function type as one of its indexed parameters 2020-09-30 12:11:38 +02:00
Harikrishnan Mulackal 2b9f040c48 Optimize exp when base is -1 2020-09-29 17:44:09 +02:00
Harikrishnan Mulackal d23aff4cbb Merge pull request #9918 from ethereum/isStateScopeCheck
Make isStateVariable regular scope check.
2020-09-29 09:33:03 +02:00
Harikrishnan Mulackal f1deb41033 Merge pull request #9911 from ethereum/docs-change-pragma
[DOCS] Change >=0.7.0 to ^0.7.0
2020-09-28 13:50:46 +02:00
Harikrishnan Mulackal 8339765509 [DOCS] Change >=0.7.0 to ^0.7.0 2020-09-28 13:02:31 +02:00
Harikrishnan Mulackal 710231e2b1 Docs: change >0.6.99 <0.8.0 to >=0.7.0 2020-09-28 11:14:45 +02:00
Harikrishnan Mulackal ec25e960f9 Merge pull request #9863 from ethereum/signed-exp-tests
Signed exp tests
2020-09-24 15:59:01 +02:00
Harikrishnan Mulackal c314ca3cf2 Tests for signed exponentiation 2020-09-23 16:27:33 +02:00
Harikrishnan Mulackal 64ddf2c699 Verify simplification rule exp(2, X) to shl(X, 1) 2020-09-16 17:36:39 +02:00
Harikrishnan Mulackal b7944477a1 Update UnusedFunctionParameterPruner tests to avoid getting inlined 2020-09-14 17:59:50 +02:00
Harikrishnan Mulackal 3817515015 Merge pull request #9787 from cakesoft-omkar/develop
Update control-structures.rst
2020-09-12 10:25:18 +02:00
Harikrishnan Mulackal d166c2540a Fix typo block 2020-09-07 17:24:03 +02:00
Harikrishnan Mulackal acec8f271d Type Checker: Disallow `virtual` for modifiers in libraries. 2020-09-07 11:17:38 +02:00
Harikrishnan Mulackal 974e35d09c Tests and changelog 2020-09-03 13:15:38 +02:00
Harikrishnan Mulackal e2fd41f097 Implemented UnusedFunctionArgumentPruner 2020-09-03 13:15:38 +02:00
Harikrishnan Mulackal 7ff809dc78 Disallow assigning more than once to immutables during the vardecl 2020-08-28 13:42:54 +02:00
Harikrishnan Mulackal 672f391660 Changed canonicalName() to toString() because of internal functions 2020-08-27 21:09:35 +02:00
Harikrishnan Mulackal c7dc42a794 Disallow `using for` directive for interfaces. 2020-08-27 15:57:51 +02:00
Harikrishnan Mulackal 7826564226 Fix infinite loop for structs in library function parameter 2020-08-27 14:18:07 +02:00
Harikrishnan Mulackal 1c066b1059 Allow type(Contract).name for abstract contracts and interfaces 2020-08-27 13:37:08 +02:00
Harikrishnan Mulackal 6f22899153 Disallow the exponent to be a signed integer literal 2020-08-27 12:08:45 +02:00
Harikrishnan Mulackal 79b2e41252 Fix inheritdoc tags trying to resolve 'empty' elements 2020-08-26 21:28:00 +02:00
Harikrishnan Mulackal 04a599049f Merge pull request #9642 from ethereum/fixTypoTry
Fix typo.
2020-08-19 12:49:18 +02:00
Harikrishnan Mulackal bbf15c9af3 Tests and Changelog 2020-08-19 12:41:29 +02:00
Harikrishnan Mulackal 5c6e7f03b4 Extended LoopInvariantCodeMotion for storage and state 2020-08-19 12:41:29 +02:00
Harikrishnan Mulackal 3cbe65e4f3 Refactor SideEffects struct 2020-08-18 14:53:59 +02:00
Harikrishnan Mulackal 58bfe0b0d2 Tests for refactor-SideEffects 2020-08-14 17:44:19 +02:00
Harikrishnan Mulackal bde0728b9b Force upgrade package-lock 2020-07-23 20:05:14 +05:30
Harikrishnan Mulackal f73b25bb78 Removed specialized errors related to constant state mutability 2020-07-14 12:42:47 +05:30
Harikrishnan Mulackal bb2faf5e49 Updated docs 2020-07-13 19:54:22 +05:30
Harikrishnan Mulackal 6b435b2192 solidity-upgrade: added module to remove visibility of constructors 2020-07-08 18:57:20 +05:30
Harikrishnan Mulackal 849bae2aa7 Natspec: change events() to interfaceEvents() 2020-07-07 17:22:09 +05:30
Harikrishnan Mulackal 40322fa703 Added jumpdest to yul doc. 2020-07-02 16:49:10 +05:30
Harikrishnan Mulackal eeadb5a6b5 Tests, Docs and Changelog 2020-06-30 16:53:41 +05:30
Harikrishnan Mulackal d41eaeba56 Added containsNestedMapping() 2020-06-30 16:15:03 +05:30
Harikrishnan Mulackal 4146ff9fcf NatSpec for events 2020-06-26 15:06:43 +05:30
Harikrishnan Mulackal 231952e01d Merge pull request #9238 from ethereum/docs-yul-fix-immutable-typos
[docs] Fix a few typos in setimmutable/loadimmutable docs
2020-06-22 13:10:41 +05:30
Harikrishnan Mulackal d8263d331e Ignore warnings for yulOptimizer tests 2020-06-09 13:03:57 +02:00
Harikrishnan Mulackal 73e634924e Warn on YUL switch statement with only default statement 2020-06-09 12:32:53 +02:00
Harikrishnan Mulackal 0bc9f772e7 Added an assert for FixedPointType in InlineAssembly 2020-06-02 13:31:10 +05:30
Harikrishnan Mulackal 21e34d7ca9 Fixed seed for randomness, fixed conflicts in errorids 2020-05-26 18:21:47 +05:30
hrkrshnn 37257548d0 Fixed bug when two empty NatSpec comments led to scanning past EOL 2020-05-20 20:26:02 +05:30
hrkrshnn 4a001d568e Removed null members from JSON output 2020-05-20 16:56:33 +05:30