mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	New tests for function state variables.
This commit is contained in:
		
							parent
							
								
									6d289783b4
								
							
						
					
					
						commit
						42b90ad4c3
					
				| @ -0,0 +1,11 @@ | |||||||
|  | contract C { | ||||||
|  |     function (uint) external public x; | ||||||
|  | 
 | ||||||
|  |     function g(uint) public { | ||||||
|  |         x = this.g; | ||||||
|  |     } | ||||||
|  |     function f() public view returns (function(uint) external) { | ||||||
|  |         return this.x(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | // ---- | ||||||
| @ -0,0 +1,5 @@ | |||||||
|  | contract C { | ||||||
|  |     function(bytes memory) internal public a; | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // TypeError: (17-57): Internal or recursive type is not allowed for public state variables. | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | contract test { | ||||||
|  |     function fa(bytes memory) { } | ||||||
|  |     function(bytes memory) external internal a = fa; | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // TypeError: (99-101): Type function (bytes memory) is not implicitly convertible to expected type function (bytes memory) external. | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | contract C { | ||||||
|  |     // This is an error, you should explicitly use | ||||||
|  |     // `external public` to fix it - `internal public` does not exist. | ||||||
|  |     function(bytes memory) public a; | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // TypeError: (139-170): Invalid visibility, can only be "external" or "internal". | ||||||
| @ -0,0 +1,9 @@ | |||||||
|  | contract C { | ||||||
|  |     function(bytes memory) a1; | ||||||
|  |     function(bytes memory) internal b1; | ||||||
|  |     function(bytes memory) internal internal b2; | ||||||
|  |     function(bytes memory) external c1; | ||||||
|  |     function(bytes memory) external internal c2; | ||||||
|  |     function(bytes memory) external public c3; | ||||||
|  | } | ||||||
|  | // ---- | ||||||
| @ -0,0 +1,23 @@ | |||||||
|  | contract test { | ||||||
|  |     function fa(uint) {} | ||||||
|  |     function fb(uint) internal {} | ||||||
|  |     function fc(uint) internal {} | ||||||
|  |     function fd(uint) external {} | ||||||
|  |     function fe(uint) external {} | ||||||
|  |     function ff(uint) internal {} | ||||||
|  |     function fg(uint) internal pure {} | ||||||
|  |     function fh(uint) pure internal {} | ||||||
|  | 
 | ||||||
|  |     function(uint) a = fa; | ||||||
|  |     function(uint) internal b = fb; // (explicit internal applies to the function type) | ||||||
|  |     function(uint) internal internal c = fc; | ||||||
|  |     function(uint) external d = this.fd; | ||||||
|  |     function(uint) external internal e = this.fe; | ||||||
|  |     function(uint) internal public f = ff; | ||||||
|  |     function(uint) internal pure public g = fg; | ||||||
|  |     function(uint) pure internal public h = fh; | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // TypeError: (545-582): Internal or recursive type is not allowed for public state variables. | ||||||
|  | // TypeError: (588-630): Internal or recursive type is not allowed for public state variables. | ||||||
|  | // TypeError: (636-678): Internal or recursive type is not allowed for public state variables. | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user