// Rule: NestedScrollingWidgets
//
// Description: Checks whether a scrolling widget has nested scrolling widgets.
//
// Conditions:
// - The node is a scrolling widget
// - The node has a descendant who is also a scrolling widget

def widgets = ["ScrollView", "ListView", "GridView"]
if (node.name() in widgets && node.all().any{ it.name() in widgets }) {
    analysis << "The vertically scrolling ${node.name()} should not contain another " +
            "vertically scrolling widget"
}

widgets = ["HorizontalScrollView", "Gallery"]
if (node.name() in widgets && node.all().any{ it.name() in widgets }) {
    analysis << "The horizontally scrolling ${node.name()} should not contain another " +
            "horizontally scrolling widget"
}
