From f1a94d839f9d53f46baea3bac4ae6362ea507ef2 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Tue, 27 Apr 2021 08:37:37 +0000 Subject: slightly simpler type resolving of concat operations --- .../main/java/com/yahoo/tensor/TypeResolver.java | 32 ++++++++-------------- 1 file changed, 11 insertions(+), 21 deletions(-) (limited to 'vespajlib') 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 first = Optional.empty(); - Optional second = Optional.empty(); + Dimension first = Dimension.indexed(concatDimension, 1); + Dimension second = Dimension.indexed(concatDimension, 1); Map 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()); -- cgit v1.2.3