| // { dg-do assemble } |
| // GROUPS passed missed-error |
| // missed-error file |
| // From: Neil Wilson <csf004@cch.coventry.ac.uk> |
| // Date: Tue, 28 Apr 92 13:53:54 WET DST |
| // Subject: g++ version 2.1 bugs |
| // Message-ID: <15717.9204281253@cch.coventry.ac.uk> |
| |
| |
| // enum bool { FALSE = 0, TRUE = 1 }; |
| |
| typedef int T; |
| |
| class Traversable { |
| public: |
| virtual const T item() const = 0; |
| virtual const bool off() const = 0; |
| virtual ~Traversable() { }; |
| }; |
| |
| class Chain : public Traversable { |
| public: |
| virtual const int count() const = 0; |
| virtual const bool empty() const = 0; |
| virtual void forth() const = 0; |
| virtual const bool isfirst() const = 0; |
| virtual const bool islast() const = 0; |
| virtual const int position() const = 0; |
| virtual const T first() const = 0; |
| virtual const T last() const = 0; |
| virtual const T i_th(const int index) const = 0; |
| virtual void start() const = 0; |
| virtual void back() const = 0; |
| virtual void finish() const = 0; |
| virtual void move(const int index) const = 0; |
| virtual void go(const int index) const = 0; |
| virtual void put(const T value) = 0; |
| virtual void put_i_th(const T value, const int index) = 0; |
| virtual void swap(const int index) = 0; |
| virtual void wipe_out() = 0; |
| }; |
| class List : public Chain { |
| protected: |
| int item_count; |
| int cursor_position; |
| virtual void go_offleft() const = 0; |
| virtual void go_offright() const = 0; |
| virtual void copy(const List& other) = 0; |
| public: |
| List() : item_count(0), cursor_position(0) { }; |
| virtual const int count() const; |
| virtual const bool empty() const; |
| virtual const bool isfirst() const; |
| virtual const bool islast() const; |
| virtual const bool offleft() const; |
| virtual const bool offright() const; |
| virtual const bool off() const; |
| virtual const int position() const; |
| virtual const T first() const; |
| virtual const T last() const; |
| virtual const T i_th(const int index) const; |
| virtual void start() const; |
| virtual void forth() const; |
| virtual void back() const; |
| virtual void finish() const; |
| virtual void move(const int index) const; |
| virtual void go(const int index) const; |
| friend const bool operator==(const List& left, |
| const List& right); |
| friend const bool operator!=(const List& left, |
| const List& right); |
| virtual void put_i_th(const T value, const int index); |
| virtual void swap(const int index); |
| }; |
| typedef int T; |
| class Array { |
| private: |
| int lower_index; |
| int upper_index; |
| T *array; |
| protected: |
| virtual void allocate(const int minindex, const int maxindex); |
| virtual void copy(const Array&other); |
| public: |
| Array(const int minindex, const int maxindex); |
| Array(const Array& other); |
| virtual const int count() const; |
| virtual const int lower() const; |
| virtual const int upper() const; |
| virtual const T item(const int index) const; |
| const T Array::operator[](const int index); // { dg-error "" } qualification ignored |
| virtual const bool valid_index(const int index) const; |
| virtual const bool empty() const; |
| friend const bool operator==(const Array& left, const Array& right); |
| friend const bool operator!=(const Array& left, const Array& right); |
| virtual void put(const T value, const int index); |
| virtual void wipe_out(); |
| Array& operator=(const Array& other); |
| virtual ~Array(); |
| }; |
| class Fixed_List: public List, private Array { |
| protected: |
| virtual void go_offleft() const; |
| virtual void go_offright() const; |
| virtual void copy(const List& other); |
| public: |
| Fixed_List(const List& other); |
| Fixed_List(const int size): Array(1, size) { }; |
| virtual const bool empty() const; |
| virtual const int count() const; |
| virtual const T item() const; |
| virtual const T i_th(const int index) const; |
| virtual void move(const int index) const; |
| virtual void put(const T value); |
| virtual void put_i_th(const T value, const int index); |
| virtual void wipe_out() { }; |
| Fixed_List& operator=(const List& other); |
| }; |
| |
| void Fixed_List::go_offleft() const |
| { |
| cursor_position = 0;// { dg-error "" } |
| } |
| |