summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/torture/pr42183.C
blob: 375b37f0c668628673c27ce8687a7bd427869de4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// { dg-do compile }

class IntSize {
public:
    IntSize(int width, int height) : m_width(width), m_height(height) { }
    int m_width, m_height;
};
class IntPoint {
public:
    IntPoint(int x, int y) : m_x(x), m_y(y) { }
    int m_x, m_y;
};
class IntRect {
public:
    IntRect(int x, int y, int width, int height)
        : m_location(IntPoint(x, y)), m_size(IntSize(width, height)) { }
    void intersect(const IntRect&);
    IntPoint m_location;
    IntSize m_size;
};
inline IntRect intersection(const IntRect& a, const IntRect& b) {
    IntRect c = a;
    c.intersect(b);
    return c;
}
class RenderObject  {
public:
    int contentWidth() const { }
    int contentHeight() const { }
    virtual int xPos() const { }
    virtual int yPos() const { }
    virtual int paddingTop() const;
    virtual int paddingLeft() const;
    virtual int borderTop() const { }
    virtual int borderLeft() const { }
};
class RenderMenuList : public RenderObject {
    virtual IntRect controlClipRect(int tx, int ty) const;
    RenderObject* m_innerBlock;
};
IntRect RenderMenuList::controlClipRect(int tx, int ty) const {
    IntRect outerBox(tx + borderLeft() + paddingLeft(),
                     ty + borderTop() + paddingTop(),
                     contentWidth(), contentHeight());
    IntRect innerBox(tx + m_innerBlock->xPos() + m_innerBlock->paddingLeft(),
                     ty + m_innerBlock->yPos() + m_innerBlock->paddingTop(),
                     m_innerBlock->contentWidth(),
                     m_innerBlock->contentHeight());
    return intersection(outerBox, innerBox);
}