From dfad1c1a5579688006c0ac5109e3a586596ce456 Mon Sep 17 00:00:00 2001 From: Simon Friedel Date: Tue, 5 Dec 2023 12:44:06 +0100 Subject: [PATCH] check nullability after cast to numeric feature --- tools/fm-editor/tree/FeatureTreeItem.cpp | 65 ++++++++++++------------ 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/tools/fm-editor/tree/FeatureTreeItem.cpp b/tools/fm-editor/tree/FeatureTreeItem.cpp index c3c0cc59..792fb5f9 100644 --- a/tools/fm-editor/tree/FeatureTreeItem.cpp +++ b/tools/fm-editor/tree/FeatureTreeItem.cpp @@ -7,26 +7,28 @@ QVariant numericValue(vara::feature::Feature *Item) { if (Item->getKind() == vara::feature::Feature::FeatureKind::FK_NUMERIC) { auto *NumItem = llvm::dyn_cast(Item); - string Result = "["; - if (std::holds_alternative( - NumItem->getValues())) { - auto Range = std::get( - NumItem->getValues()); - Result += std::to_string(Range.first) + ", " + - std::to_string(Range.second) + "]"; - } else { - auto Range = std::get( - NumItem->getValues()); - for (auto It = Range.begin(); It != Range.end(); It++) { - if (It != Range.begin()) { - Result += ","; + if (NumItem != nullptr) { + string Result = "["; + if (std::holds_alternative( + NumItem->getValues())) { + auto Range = std::get( + NumItem->getValues()); + Result += std::to_string(Range.first) + ", " + + std::to_string(Range.second) + "]"; + } else { + auto Range = std::get( + NumItem->getValues()); + for (auto It = Range.begin(); It != Range.end(); It++) { + if (It != Range.begin()) { + Result += ","; + } + Result += std::to_string(*It.base()); } - Result += std::to_string(*It.base()); + Result += "]"; } - Result += "]"; - } - return QString::fromStdString(Result); + return QString::fromStdString(Result); + } } return {}; @@ -79,23 +81,20 @@ std::vector FeatureTreeItem::getChildrenRecursive() { } QVariant FeatureTreeItemFeature::data(int Column) const { - if (Item != nullptr) { - switch (Column) { - case 0: - return QString::fromStdString(Item->getName().str()); - case 1: - return Item->isOptional() ? QVariant("✓") : QVariant("x"); - case 2: - return numericValue(Item); - case 3: - return locationString(Item); - case 4: - return QString::fromStdString(Item->getOutputString().str()); - default: - return {}; - } + switch (Column) { + case 0: + return QString::fromStdString(Item->getName().str()); + case 1: + return Item->isOptional() ? QVariant("✓") : QVariant("x"); + case 2: + return numericValue(Item); + case 3: + return locationString(Item); + case 4: + return QString::fromStdString(Item->getOutputString().str()); + default: + return {}; } - return {}; } void FeatureTreeItemFeature::inspect() { emit(inspectSource(Item)); }