// RUN: llvm-tblgen %s | FileCheck %s class Flatten A, list B> { list Flat1 = !listflatten([A, B, [6], [7, 8]]); list> X = [A, B]; list Flat2 = !listflatten(!listconcat(X, [[7]])); // Generate a nested list of integers. list Y0 = [1, 2, 3, 4]; list> Y1 = !foreach(elem, Y0, [elem]); list>> Y2 = !foreach(elem, Y1, [elem]); list>>> Y3 = !foreach(elem, Y2, [elem]); // Flatten it completely. list Flat3=!listflatten(!listflatten(!listflatten(Y3))); // Flatten it partially. list>> Flat4 = !listflatten(Y3); list> Flat5 = !listflatten(!listflatten(Y3)); // Test NOP flattening. list Flat6 = !listflatten(["a", "b"]); } // CHECK: list Flat1 = [1, 2, 3, 4, 5, 6, 7, 8]; // CHECK: list Flat2 = [1, 2, 3, 4, 5, 7]; // CHECK: list Flat3 = [1, 2, 3, 4]; // CHECK{LITERAL}: list>> Flat4 = [[[1]], [[2]], [[3]], [[4]]]; // CHECK: list Flat6 = ["a", "b"]; def F : Flatten<[1,2], [3,4,5]>;