summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-04-27 08:37:37 +0000
committerArne Juul <arnej@verizonmedia.com>2021-04-27 11:51:00 +0000
commitf1a94d839f9d53f46baea3bac4ae6362ea507ef2 (patch)
tree4fea930bcc2f035326b2f54dc6a33889ec1d8f7a /vespajlib
parent7b09111c932000842043a9d24cda8ab8df45ed4a (diff)
slightly simpler type resolving of concat operations
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java32
1 files changed, 11 insertions, 21 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java b/vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java
index 7f00e53af6b..2bb9a99d6e5 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java
@@ -211,19 +211,19 @@ public class TypeResolver {
} else if (rhs.rank() > 0) {
cellType = rhs.valueType();
}
- Optional<Dimension> first = Optional.empty();
- Optional<Dimension> second = Optional.empty();
+ Dimension first = Dimension.indexed(concatDimension, 1);
+ Dimension second = Dimension.indexed(concatDimension, 1);
Map<String, Dimension> map = new HashMap<>();
for (Dimension dim : lhs.dimensions()) {
if (dim.name().equals(concatDimension)) {
- first = Optional.of(dim);
+ first = dim;
} else {
map.put(dim.name(), dim);
}
}
for (Dimension dim : rhs.dimensions()) {
if (dim.name().equals(concatDimension)) {
- second = Optional.of(dim);
+ second = dim;
} else if (map.containsKey(dim.name())) {
Dimension other = map.get(dim.name());
if (! other.equals(dim)) {
@@ -243,28 +243,18 @@ public class TypeResolver {
map.put(dim.name(), dim);
}
}
- if (first.isPresent() && first.get().type() == Dimension.Type.mapped) {
+ if (first.type() == Dimension.Type.mapped) {
throw new IllegalArgumentException("Bad concat dimension "+concatDimension+" in lhs: "+lhs);
}
- if (second.isPresent() && second.get().type() == Dimension.Type.mapped) {
+ if (second.type() == Dimension.Type.mapped) {
throw new IllegalArgumentException("Bad concat dimension "+concatDimension+" in rhs: "+rhs);
}
- if (first.isPresent() && first.get().type() == Dimension.Type.indexedUnbound) {
- map.put(concatDimension, first.get());
- } else if (second.isPresent() && second.get().type() == Dimension.Type.indexedUnbound) {
- map.put(concatDimension, second.get());
+ if (first.type() == Dimension.Type.indexedUnbound) {
+ map.put(concatDimension, first);
+ } else if (second.type() == Dimension.Type.indexedUnbound) {
+ map.put(concatDimension, second);
} else {
- long concatSize = 0;
- if (first.isPresent()) {
- concatSize += first.get().size().get();
- } else {
- concatSize += 1;
- }
- if (second.isPresent()) {
- concatSize += second.get().size().get();
- } else {
- concatSize += 1;
- }
+ long concatSize = first.size().get() + second.size().get();
map.put(concatDimension, Dimension.indexed(concatDimension, concatSize));
}
return new TensorType(cellType, map.values());