@@ -39,7 +39,6 @@ public enum PythonBuiltinClassType implements LazyPythonClass {
39
39
GetSetDescriptor ("get_set_desc" ),
40
40
PArray ("array" , "array" ),
41
41
PArrayIterator ("arrayiterator" ),
42
- PBaseException ("BaseException" , "builtins" ),
43
42
PIterator ("iterator" ),
44
43
PBuiltinFunction ("method_descriptor" ),
45
44
PBuiltinMethod ("builtin_function_or_method" ),
@@ -85,27 +84,100 @@ public enum PythonBuiltinClassType implements LazyPythonClass {
85
84
Super ("super" , "builtins" ),
86
85
PCode ("code" ),
87
86
PZip ("zip" , "builtins" ),
88
- PBuffer ("buffer" );
87
+ PBuffer ("buffer" ),
88
+
89
+ // Errors and exceptions:
90
+
91
+ // everything after BaseException is considered to be an exception
92
+ PBaseException ("BaseException" , "builtins" ),
93
+ SystemExit ("SystemExit" , "builtins" ),
94
+ KeyboardInterrupt ("KeyboardInterrupt" , "builtins" ),
95
+ GeneratorExit ("GeneratorExit" , "builtins" ),
96
+ Exception ("Exception" , "builtins" ),
97
+ StopIteration ("StopIteration" , "builtins" ),
98
+ ArithmeticError ("ArithmeticError" , "builtins" ),
99
+ FloatingPointError ("FloatingPointError" , "builtins" ),
100
+ OverflowError ("OverflowError" , "builtins" ),
101
+ ZeroDivisionError ("ZeroDivisionError" , "builtins" ),
102
+ AssertionError ("AssertionError" , "builtins" ),
103
+ AttributeError ("AttributeError" , "builtins" ),
104
+ BufferError ("BufferError" , "builtins" ),
105
+ EOFError ("EOFError" , "builtins" ),
106
+ ImportError ("ImportError" , "builtins" ),
107
+ ModuleNotFoundError ("ModuleNotFoundError" , "builtins" ),
108
+ LookupError ("LookupError" , "builtins" ),
109
+ IndexError ("IndexError" , "builtins" ),
110
+ KeyError ("KeyError" , "builtins" ),
111
+ MemoryError ("MemoryError" , "builtins" ),
112
+ NameError ("NameError" , "builtins" ),
113
+ UnboundLocalError ("UnboundLocalError" , "builtins" ),
114
+ OSError ("OSError" , "builtins" ),
115
+ IOError ("IOError" , "builtins" ),
116
+ BlockingIOError ("BlockingIOError" , "builtins" ),
117
+ ChildProcessError ("ChildProcessError" , "builtins" ),
118
+ ConnectionError ("ConnectionError" , "builtins" ),
119
+ BrokenPipeError ("BrokenPipeError" , "builtins" ),
120
+ ConnectionAbortedError ("ConnectionAbortedError" , "builtins" ),
121
+ ConnectionRefusedError ("ConnectionRefusedError" , "builtins" ),
122
+ ConnectionResetError ("ConnectionResetError" , "builtins" ),
123
+ FileExistsError ("FileExistsError" , "builtins" ),
124
+ FileNotFoundError ("FileNotFoundError" , "builtins" ),
125
+ InterruptedError ("InterruptedError" , "builtins" ),
126
+ IsADirectoryError ("IsADirectoryError" , "builtins" ),
127
+ NotADirectoryError ("NotADirectoryError" , "builtins" ),
128
+ PermissionError ("PermissionError" , "builtins" ),
129
+ ProcessLookupError ("ProcessLookupError" , "builtins" ),
130
+ TimeoutError ("TimeoutError" , "builtins" ),
89
131
90
- private final String shortName ;
132
+ // todo: all OS errors
133
+
134
+ ReferenceError ("ReferenceError" , "builtins" ),
135
+ RuntimeError ("RuntimeError" , "builtins" ),
136
+ NotImplementedError ("NotImplementedError" , "builtins" ),
137
+ SyntaxError ("SyntaxError" , "builtins" ),
138
+ IndentationError ("IndentationError" , "builtins" ),
139
+ TabError ("TabError" , "builtins" ),
140
+ SystemError ("SystemError" , "builtins" ),
141
+ TypeError ("TypeError" , "builtins" ),
142
+ ValueError ("ValueError" , "builtins" ),
143
+ UnicodeError ("UnicodeError" , "builtins" ),
144
+ UnicodeDecodeError ("UnicodeDecodeError" , "builtins" ),
145
+ UnicodeEncodeError ("UnicodeEncodeError" , "builtins" ),
146
+ UnicodeTranslateError ("UnicodeTranslateError" , "builtins" ),
147
+ RecursionError ("RecursionError" , "builtins" ),
148
+
149
+ // warnings
150
+ Warning ("Warning" , "builtins" ),
151
+ BytesWarning ("BytesWarning" , "builtins" ),
152
+ DeprecationWarning ("DeprecationWarning" , "builtins" ),
153
+ FutureWarning ("FutureWarning" , "builtins" ),
154
+ ImportWarning ("ImportWarning" , "builtins" ),
155
+ PendingDeprecationWarning ("PendingDeprecationWarning" , "builtins" ),
156
+ ResourceWarning ("ResourceWarning" , "builtins" ),
157
+ RuntimeWarning ("RuntimeWarning" , "builtins" ),
158
+ SyntaxWarning ("SyntaxWarning" , "builtins" ),
159
+ UnicodeWarning ("UnicodeWarning" , "builtins" ),
160
+ UserWarning ("UserWarning" , "builtins" );
161
+
162
+ private final String name ;
91
163
private final Shape instanceShape ;
92
164
private final String publicInModule ;
93
165
94
166
// initialized in static constructor
95
167
@ CompilationFinal private PythonBuiltinClassType base ;
96
168
97
- PythonBuiltinClassType (String shortName , String publicInModule ) {
98
- this .shortName = shortName ;
169
+ PythonBuiltinClassType (String name , String publicInModule ) {
170
+ this .name = name ;
99
171
this .publicInModule = publicInModule ;
100
172
this .instanceShape = com .oracle .graal .python .builtins .objects .type .PythonClass .freshShape ();
101
173
}
102
174
103
- PythonBuiltinClassType (String shortName ) {
104
- this (shortName , null );
175
+ PythonBuiltinClassType (String name ) {
176
+ this (name , null );
105
177
}
106
178
107
- public String getShortName () {
108
- return shortName ;
179
+ public String getName () {
180
+ return name ;
109
181
}
110
182
111
183
public PythonBuiltinClassType getBase () {
@@ -119,19 +191,99 @@ public String getPublicInModule() {
119
191
@ Override
120
192
public String toString () {
121
193
CompilerAsserts .neverPartOfCompilation ();
122
- return shortName ;
194
+ return name ;
123
195
}
124
196
125
197
public Shape getInstanceShape () {
126
198
return instanceShape ;
127
199
}
128
200
201
+ public static final PythonBuiltinClassType [] VALUES = values ();
202
+ public static final PythonBuiltinClassType [] EXCEPTIONS ;
203
+
129
204
static {
205
+ // fill the EXCEPTIONS array
206
+
207
+ EXCEPTIONS = new PythonBuiltinClassType [VALUES .length - PBaseException .ordinal ()];
208
+ for (int i = 0 ; i < EXCEPTIONS .length ; i ++) {
209
+ EXCEPTIONS [i ] = VALUES [i + PBaseException .ordinal ()];
210
+ }
211
+
212
+ // set the base classes (and check uniqueness):
213
+
130
214
HashSet <String > set = new HashSet <>();
131
215
for (PythonBuiltinClassType type : values ()) {
132
- assert set .add (type .shortName ) : type .name ();
216
+ assert set .add (type .name ) : type .name ();
133
217
type .base = PythonObject ;
134
218
}
219
+
135
220
Boolean .base = PInt ;
221
+
222
+ SystemExit .base = PBaseException ;
223
+ KeyboardInterrupt .base = PBaseException ;
224
+ GeneratorExit .base = PBaseException ;
225
+ Exception .base = PBaseException ;
226
+ StopIteration .base = Exception ;
227
+ ArithmeticError .base = Exception ;
228
+ FloatingPointError .base = ArithmeticError ;
229
+ OverflowError .base = ArithmeticError ;
230
+ ZeroDivisionError .base = ArithmeticError ;
231
+ AssertionError .base = Exception ;
232
+ AttributeError .base = Exception ;
233
+ BufferError .base = Exception ;
234
+ EOFError .base = Exception ;
235
+ ImportError .base = Exception ;
236
+ ModuleNotFoundError .base = ImportError ;
237
+ LookupError .base = Exception ;
238
+ IndexError .base = LookupError ;
239
+ KeyError .base = LookupError ;
240
+ MemoryError .base = Exception ;
241
+ NameError .base = Exception ;
242
+ UnboundLocalError .base = NameError ;
243
+ OSError .base = Exception ;
244
+ IOError .base = Exception ;
245
+ BlockingIOError .base = OSError ;
246
+ ChildProcessError .base = OSError ;
247
+ ConnectionError .base = OSError ;
248
+ BrokenPipeError .base = OSError ;
249
+ ConnectionAbortedError .base = OSError ;
250
+ ConnectionRefusedError .base = OSError ;
251
+ ConnectionResetError .base = OSError ;
252
+ FileExistsError .base = OSError ;
253
+ FileNotFoundError .base = OSError ;
254
+ InterruptedError .base = OSError ;
255
+ IsADirectoryError .base = OSError ;
256
+ NotADirectoryError .base = OSError ;
257
+ PermissionError .base = OSError ;
258
+ ProcessLookupError .base = OSError ;
259
+ TimeoutError .base = OSError ;
260
+
261
+ ReferenceError .base = Exception ;
262
+ RuntimeError .base = Exception ;
263
+ NotImplementedError .base = Exception ;
264
+ SyntaxError .base = Exception ;
265
+ IndentationError .base = SyntaxError ;
266
+ TabError .base = IndentationError ;
267
+ SystemError .base = Exception ;
268
+ TypeError .base = Exception ;
269
+ ValueError .base = Exception ;
270
+ UnicodeError .base = ValueError ;
271
+ UnicodeDecodeError .base = UnicodeError ;
272
+ UnicodeEncodeError .base = UnicodeError ;
273
+ UnicodeTranslateError .base = UnicodeError ;
274
+ RecursionError .base = RuntimeError ;
275
+
276
+ // warnings
277
+ Warning .base = Exception ;
278
+ BytesWarning .base = Warning ;
279
+ DeprecationWarning .base = Warning ;
280
+ FutureWarning .base = Warning ;
281
+ ImportWarning .base = Warning ;
282
+ PendingDeprecationWarning .base = Warning ;
283
+ ResourceWarning .base = Warning ;
284
+ RuntimeWarning .base = Warning ;
285
+ SyntaxWarning .base = Warning ;
286
+ UnicodeWarning .base = Warning ;
287
+ UserWarning .base = Warning ;
136
288
}
137
289
}
0 commit comments