// Test flatten array intrinsic method
proc main()
{
var a, b;
// Simple flatten - packed array
a = [[1,2,3],[4,5,6]];
b = a.flatten();
"", b.parent, ": ", b, '\n';
// Iterator
a = [2,3].iterate();
b = a.flatten();
"", b.parent, ": ", b, '\n';
// List
a = {1,2,3,4};
b = a.flatten();
"", b.parent, ": ", b, '\n';
// Nested list, with promotion
a = {{1,2},3.1,{4,5}};
b = a.flatten();
"", b.parent, ": ", b, '\n';
// Nested list, preventing promotion
a = {{1,2},main,{4,5}};
b = a.flatten();
"", b.parent, ": ", b, '\n';
// Nested iterator
a = {[2,3].iterate(), 100};
b = a.flatten();
"", b.parent, ": ", b, '\n';
// Deeply nested list
a = {{{{1,2},3},4},5};
b = a.flatten();
"", b.parent, ": ", b, '\n';
}