mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #6100 from ethereum/smt_dynamic_cast_types
[SMTChecker] Replace dynamic_cast by category check
This commit is contained in:
		
						commit
						80417e3d8c
					
				| @ -414,7 +414,7 @@ void SMTChecker::endVisit(UnaryOperation const& _op) | ||||
| 	case Token::Sub: // -
 | ||||
| 	{ | ||||
| 		defineExpr(_op, 0 - expr(_op.subExpression())); | ||||
| 		if (dynamic_cast<IntegerType const*>(_op.annotation().type.get())) | ||||
| 		if (_op.annotation().type->category() == Type::Category::Integer) | ||||
| 			addOverflowTarget( | ||||
| 				OverflowTarget::Type::All, | ||||
| 				_op.annotation().type, | ||||
| @ -625,10 +625,8 @@ void SMTChecker::endVisit(Identifier const& _identifier) | ||||
| 	{ | ||||
| 		// Will be translated as part of the node that requested the lvalue.
 | ||||
| 	} | ||||
| 	else if (dynamic_cast<FunctionType const*>(_identifier.annotation().type.get())) | ||||
| 	{ | ||||
| 	else if (_identifier.annotation().type->category() == Type::Category::Function) | ||||
| 		visitFunctionIdentifier(_identifier); | ||||
| 	} | ||||
| 	else if (isSupportedType(_identifier.annotation().type->category())) | ||||
| 	{ | ||||
| 		if (VariableDeclaration const* decl = dynamic_cast<VariableDeclaration const*>(_identifier.annotation().referencedDeclaration)) | ||||
| @ -1006,11 +1004,11 @@ void SMTChecker::assignment(VariableDeclaration const& _variable, Expression con | ||||
| void SMTChecker::assignment(VariableDeclaration const& _variable, smt::Expression const& _value, SourceLocation const& _location) | ||||
| { | ||||
| 	TypePointer type = _variable.type(); | ||||
| 	if (dynamic_cast<IntegerType const*>(type.get())) | ||||
| 	if (type->category() == Type::Category::Integer) | ||||
| 		addOverflowTarget(OverflowTarget::Type::All, type,	_value,	_location); | ||||
| 	else if (dynamic_cast<AddressType const*>(type.get())) | ||||
| 	else if (type->category() == Type::Category::Address) | ||||
| 		addOverflowTarget(OverflowTarget::Type::All, make_shared<IntegerType>(160), _value, _location); | ||||
| 	else if (dynamic_cast<MappingType const*>(type.get())) | ||||
| 	else if (type->category() == Type::Category::Mapping) | ||||
| 		arrayAssignment(); | ||||
| 	m_interface->addAssertion(newValue(_variable) == _value); | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user