summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--document/src/vespa/document/fieldvalue/referencefieldvalue.cpp15
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;
}