summaryrefslogtreecommitdiff
path: root/mlir/unittests/IR/SubElementInterfaceTest.cpp
diff options
context:
space:
mode:
authorRiver Riddle <riddleriver@gmail.com>2023-01-20 21:39:13 -0800
committerRiver Riddle <riddleriver@gmail.com>2023-01-27 15:28:03 -0800
commit03d136cf5f3f10b618b7e17f897ebf6019518dcc (patch)
tree77296a1eb9bdc726ea3b1f3b81012210694a37c1 /mlir/unittests/IR/SubElementInterfaceTest.cpp
parentf58de2125caf75ec0d40bc3e094a93c0b314a66a (diff)
downloadllvm-03d136cf5f3f10b618b7e17f897ebf6019518dcc.tar.gz
[mlir] Promote the SubElementInterfaces to a core Attribute/Type construct
This commit restructures the sub element infrastructure to be a core part of attributes and types, instead of being relegated to an interface. This establishes sub element walking/replacement as something "always there", which makes it easier to rely on for correctness/etc (which various bits of infrastructure want, such as Symbols). Attribute/Type now have `walk` and `replace` methods directly accessible, which provide power API for interacting with sub elements. As part of this, a new AttrTypeWalker class is introduced that supports caching walked attributes/types, and a friendlier API (see the simplification of symbol walking in SymbolTable.cpp). Differential Revision: https://reviews.llvm.org/D142272
Diffstat (limited to 'mlir/unittests/IR/SubElementInterfaceTest.cpp')
-rw-r--r--mlir/unittests/IR/SubElementInterfaceTest.cpp36
1 files changed, 0 insertions, 36 deletions
diff --git a/mlir/unittests/IR/SubElementInterfaceTest.cpp b/mlir/unittests/IR/SubElementInterfaceTest.cpp
deleted file mode 100644
index ab461f4dc340..000000000000
--- a/mlir/unittests/IR/SubElementInterfaceTest.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-//===- SubElementInterfaceTest.cpp - SubElementInterface unit tests -------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "mlir/IR/Builders.h"
-#include "mlir/IR/BuiltinAttributes.h"
-#include "mlir/IR/SubElementInterfaces.h"
-#include "gtest/gtest.h"
-#include <cstdint>
-
-using namespace mlir;
-using namespace mlir::detail;
-
-namespace {
-TEST(SubElementInterfaceTest, Nested) {
- MLIRContext context;
- Builder builder(&context);
-
- BoolAttr trueAttr = builder.getBoolAttr(true);
- BoolAttr falseAttr = builder.getBoolAttr(false);
- ArrayAttr boolArrayAttr = builder.getArrayAttr({trueAttr, falseAttr});
- StringAttr strAttr = builder.getStringAttr("array");
- DictionaryAttr dictAttr =
- builder.getDictionaryAttr(builder.getNamedAttr(strAttr, boolArrayAttr));
-
- SmallVector<Attribute> subAttrs;
- dictAttr.walkSubAttrs([&](Attribute attr) { subAttrs.push_back(attr); });
- EXPECT_EQ(llvm::ArrayRef(subAttrs),
- ArrayRef<Attribute>({strAttr, trueAttr, falseAttr, boolArrayAttr}));
-}
-
-} // namespace