Update procedures
[shapes.git] / source / classexceptions.h
blob65b86e9ec0f04575406d6ea6624f38497dd4bfb1
1 /* This file is part of Shapes.
3 * Shapes is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * any later version.
8 * Shapes is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with Shapes. If not, see <http://www.gnu.org/licenses/>.
16 * Copyright 2008, 2009, 2013 Henrik Tidefelt
19 #pragma once
21 #include "shapesexceptions.h"
23 namespace Shapes
25 namespace Exceptions
27 class IllegalFinalReference : public RuntimeError
29 RefCountPtr< const char > valueType_;
30 const char * fieldID_;
31 public:
32 IllegalFinalReference( RefCountPtr< const char > valueType, const char * fieldID );
33 virtual ~IllegalFinalReference( );
34 virtual void display( std::ostream & os ) const;
37 class ProtectedMemberPublicScope : public RuntimeError
39 RefCountPtr< const char > valueType_;
40 const char * fieldID_;
41 public:
42 ProtectedMemberPublicScope( RefCountPtr< const char > valueType, const char * fieldID );
43 virtual ~ProtectedMemberPublicScope( );
44 virtual void display( std::ostream & os ) const;
47 class MemberNotAssignable : public RuntimeError
49 RefCountPtr< const char > valueType_;
50 const char * fieldID_;
51 RefCountPtr< const char > scope_;
52 public:
53 MemberNotAssignable( RefCountPtr< const char > valueType, const char * fieldID, RefCountPtr< const char > scope );
54 virtual ~MemberNotAssignable( );
55 virtual void display( std::ostream & os ) const;
58 class InstantiatingAbstractClass : public RuntimeError
60 RefCountPtr< const Lang::Class > cls_;
61 public:
62 InstantiatingAbstractClass( RefCountPtr< const Lang::Class > cls );
63 virtual ~InstantiatingAbstractClass( );
64 virtual void display( std::ostream & os ) const;
67 class FailedToDeclareClassAbstract : public RuntimeError
69 RefCountPtr< const Lang::Class > cls_;
70 const Shapes::Ast::ClassFunction * classExpr_;
71 public:
72 FailedToDeclareClassAbstract( RefCountPtr< const Lang::Class > cls, const Shapes::Ast::ClassFunction * classExpr );
73 virtual ~FailedToDeclareClassAbstract( );
74 virtual void display( std::ostream & os ) const;
77 class RepeatedImmediateParent : public RuntimeError
79 RefCountPtr< const Lang::Class > cls_;
80 RefCountPtr< const Lang::Class > parent_;
81 public:
82 RepeatedImmediateParent( RefCountPtr< const Lang::Class > cls, RefCountPtr< const Lang::Class > parent );
83 virtual ~RepeatedImmediateParent( );
84 virtual void display( std::ostream & os ) const;
87 class OverridingNonParent : public RuntimeError
89 RefCountPtr< const Lang::Class > cls_;
90 RefCountPtr< const Lang::Class > parent_;
91 public:
92 OverridingNonParent( RefCountPtr< const Lang::Class > cls, RefCountPtr< const Lang::Class > parent );
93 virtual ~OverridingNonParent( );
94 virtual void display( std::ostream & os ) const;
97 class InheritingFinal : public RuntimeError
99 RefCountPtr< const Lang::Class > cls_;
100 RefCountPtr< const Lang::Class > parent_;
101 public:
102 InheritingFinal( RefCountPtr< const Lang::Class > cls, RefCountPtr< const Lang::Class > parent );
103 virtual ~InheritingFinal( );
104 virtual void display( std::ostream & os ) const;
107 class OverridingUndeclaredMethod : public RuntimeError
109 RefCountPtr< const Lang::Class > cls_;
110 RefCountPtr< const Lang::Class > parent_;
111 const char * id_;
112 public:
113 OverridingUndeclaredMethod( RefCountPtr< const Lang::Class > cls, RefCountPtr< const Lang::Class > parent, const char * id );
114 virtual ~OverridingUndeclaredMethod( );
115 virtual void display( std::ostream & os ) const;
118 class OverridingFinalMethod : public RuntimeError
120 RefCountPtr< const Lang::Class > cls_;
121 RefCountPtr< const Lang::Class > parent_;
122 const char * id_;
123 public:
124 OverridingFinalMethod( RefCountPtr< const Lang::Class > cls, RefCountPtr< const Lang::Class > parent, const char * id );
125 virtual ~OverridingFinalMethod( );
126 virtual void display( std::ostream & os ) const;
129 class IllegalRepeatedBase : public RuntimeError
131 RefCountPtr< const Lang::Class > cls_;
132 RefCountPtr< const Lang::Class > parent_;
133 public:
134 IllegalRepeatedBase( RefCountPtr< const Lang::Class > cls, RefCountPtr< const Lang::Class > parent );
135 virtual ~IllegalRepeatedBase( );
136 virtual void display( std::ostream & os ) const;
139 class AmbiguousInheritedMethod : public RuntimeError
141 RefCountPtr< const Lang::Class > cls_;
142 RefCountPtr< const char > id_;
143 std::set< RefCountPtr< const Lang::Class > > parents_;
144 public:
145 AmbiguousInheritedMethod( RefCountPtr< const Lang::Class > cls, RefCountPtr< const char > id, std::set< RefCountPtr< const Lang::Class > > parents );
146 virtual ~AmbiguousInheritedMethod( );
147 virtual void display( std::ostream & os ) const;
150 class MisplacedSuperReference : public RuntimeError
152 public:
153 MisplacedSuperReference( const Ast::SourceLocation & loc );
154 virtual ~MisplacedSuperReference( );
155 virtual void display( std::ostream & os ) const;
158 class SuperReferenceClassNotParent : public RuntimeError
160 RefCountPtr< const Lang::Class > cls_;
161 RefCountPtr< const Lang::Class > parent_;
162 public:
163 SuperReferenceClassNotParent( RefCountPtr< const Lang::Class > cls, RefCountPtr< const Lang::Class > parent );
164 virtual ~SuperReferenceClassNotParent( );
165 virtual void display( std::ostream & os ) const;
168 class NoSuchMethod : public RuntimeError
170 RefCountPtr< const Lang::Class > cls_;
171 Kernel::MethodId method_;
172 public:
173 NoSuchMethod( RefCountPtr< const Lang::Class > cls, const Kernel::MethodId & method );
174 virtual ~NoSuchMethod( );
175 virtual void display( std::ostream & os ) const;
178 class NoSuchLocalMethod : public RuntimeError
180 RefCountPtr< const Lang::Class > cls_;
181 Kernel::MethodId method_;
182 public:
183 NoSuchLocalMethod( RefCountPtr< const Lang::Class > cls, const Kernel::MethodId & method );
184 virtual ~NoSuchLocalMethod( );
185 virtual void display( std::ostream & os ) const;