aboutsummaryrefslogtreecommitdiffstats
path: root/AST.cpp
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-08-05 23:19:19 +0800
committerchriseth <c@ethdev.com>2015-08-05 23:19:19 +0800
commit4ce09762c738bb69daa2537892527952fcfe6d7f (patch)
tree8b68b4dfd4dce197e65d7d10fe72d8c14a347852 /AST.cpp
parent3380c7c6c9d900b1392812dff009bf524c1a7e53 (diff)
parent56d5c3310628a1e90225062f0ed21c8378678d09 (diff)
downloaddexon-solidity-4ce09762c738bb69daa2537892527952fcfe6d7f.tar
dexon-solidity-4ce09762c738bb69daa2537892527952fcfe6d7f.tar.gz
dexon-solidity-4ce09762c738bb69daa2537892527952fcfe6d7f.tar.bz2
dexon-solidity-4ce09762c738bb69daa2537892527952fcfe6d7f.tar.lz
dexon-solidity-4ce09762c738bb69daa2537892527952fcfe6d7f.tar.xz
dexon-solidity-4ce09762c738bb69daa2537892527952fcfe6d7f.tar.zst
dexon-solidity-4ce09762c738bb69daa2537892527952fcfe6d7f.zip
Merge pull request #2688 from chriseth/toBytesConversion
Allow explicit conversions bytes <-> string.
Diffstat (limited to 'AST.cpp')
-rw-r--r--AST.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/AST.cpp b/AST.cpp
index 05e2d52e..8bad6ccf 100644
--- a/AST.cpp
+++ b/AST.cpp
@@ -844,9 +844,15 @@ void FunctionCall::checkTypeRequirements(TypePointers const*)
BOOST_THROW_EXCEPTION(createTypeError("Exactly one argument expected for explicit type conversion."));
if (!isPositionalCall)
BOOST_THROW_EXCEPTION(createTypeError("Type conversion cannot allow named arguments."));
- if (!m_arguments.front()->getType()->isExplicitlyConvertibleTo(*type.getActualType()))
- BOOST_THROW_EXCEPTION(createTypeError("Explicit type conversion not allowed."));
m_type = type.getActualType();
+ auto argType = m_arguments.front()->getType();
+ if (auto argRefType = dynamic_cast<ReferenceType const*>(argType.get()))
+ // do not change the data location when converting
+ // (data location cannot yet be specified for type conversions)
+ m_type = ReferenceType::copyForLocationIfReference(argRefType->location(), m_type);
+ if (!argType->isExplicitlyConvertibleTo(*m_type))
+ BOOST_THROW_EXCEPTION(createTypeError("Explicit type conversion not allowed."));
+
return;
}