diff options
-rw-r--r-- | document/src/vespa/document/fieldvalue/referencefieldvalue.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/document/src/vespa/document/fieldvalue/referencefieldvalue.cpp b/document/src/vespa/document/fieldvalue/referencefieldvalue.cpp index d5a8412059a..ca939b644a0 100644 --- a/document/src/vespa/document/fieldvalue/referencefieldvalue.cpp +++ b/document/src/vespa/document/fieldvalue/referencefieldvalue.cpp @@ -55,20 +55,19 @@ void ReferenceFieldValue::requireIdOfMatchingType( FieldValue& ReferenceFieldValue::assign(const FieldValue& rhs) { const auto* refValueRhs(dynamic_cast<const ReferenceFieldValue*>(&rhs)); - if (refValueRhs != nullptr) { - if (refValueRhs == this) { - return *this; - } - _documentId = refValueRhs->_documentId; - _dataType = refValueRhs->_dataType; - _altered = true; - } else { + if (refValueRhs == nullptr) { throw IllegalArgumentException( make_string("Can't assign field value of type %s to " "a ReferenceFieldValue", rhs.getDataType()->getName().c_str()), VESPA_STRLOC); } + if (refValueRhs == this) { + return *this; + } + _documentId = refValueRhs->_documentId; + _dataType = refValueRhs->_dataType; + _altered = true; return *this; } |