mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	ast: ban signed EXP, fixing #1246
This commit is contained in:
		
							parent
							
								
									578b02bb37
								
							
						
					
					
						commit
						3ca5900b8c
					
				| @ -3,6 +3,7 @@ | |||||||
| Features: | Features: | ||||||
| 
 | 
 | ||||||
| Bugfixes: | Bugfixes: | ||||||
|  |  * Type checker: forbid signed exponential that led to an incorrect use of EXP opcode. | ||||||
| 
 | 
 | ||||||
| ### 0.4.3 (2016-10-25) | ### 0.4.3 (2016-10-25) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -349,11 +349,14 @@ TypePointer IntegerType::binaryOperatorResult(Token::Value _operator, TypePointe | |||||||
| 		return commonType; | 		return commonType; | ||||||
| 	if (Token::isBooleanOp(_operator)) | 	if (Token::isBooleanOp(_operator)) | ||||||
| 		return TypePointer(); | 		return TypePointer(); | ||||||
| 	// Nothing else can be done with addresses
 |  | ||||||
| 	if (auto intType = dynamic_pointer_cast<IntegerType const>(commonType)) | 	if (auto intType = dynamic_pointer_cast<IntegerType const>(commonType)) | ||||||
| 	{ | 	{ | ||||||
|  | 		// Nothing else can be done with addresses
 | ||||||
| 		if (intType->isAddress()) | 		if (intType->isAddress()) | ||||||
| 			return TypePointer(); | 			return TypePointer(); | ||||||
|  | 		// Signed EXP is not allowed
 | ||||||
|  | 		if (Token::Exp == _operator && intType->isSigned()) | ||||||
|  | 			return TypePointer(); | ||||||
| 	} | 	} | ||||||
| 	else if (auto fixType = dynamic_pointer_cast<FixedPointType const>(commonType)) | 	else if (auto fixType = dynamic_pointer_cast<FixedPointType const>(commonType)) | ||||||
| 		if (Token::Exp == _operator) | 		if (Token::Exp == _operator) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user