summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMasaki Muranaka <[email protected]>2012-06-15 13:06:43 +0900
committerMasaki Muranaka <[email protected]>2012-06-15 13:06:43 +0900
commitcfd5f5157d06f9c62a04660843c3c02014d8a3a5 (patch)
tree443606b38dfa193f029506002cc57ca0782ea4aa
parentccec3da35bb2a6fff9fb58c30645b02692996f8b (diff)
downloadmruby-cfd5f5157d06f9c62a04660843c3c02014d8a3a5.tar.gz
mruby-cfd5f5157d06f9c62a04660843c3c02014d8a3a5.zip
Move Subclasses of ScriptError to mrblib.
-rw-r--r--mrblib/error.rb8
-rw-r--r--src/error.c3
-rw-r--r--test/t/exception.rb30
3 files changed, 38 insertions, 3 deletions
diff --git a/mrblib/error.rb b/mrblib/error.rb
index 3fa7f21e3..1cb2b1150 100644
--- a/mrblib/error.rb
+++ b/mrblib/error.rb
@@ -17,5 +17,13 @@ end
class ScriptError < Exception
end
+# ISO 15.2.38
+class SyntaxError < ScriptError
+end
+
+# ISO 15.2.39
+class LoadError < ScriptError
+end
+
class NotImplementedError < ScriptError
end
diff --git a/src/error.c b/src/error.c
index 548527f07..590fad5a5 100644
--- a/src/error.c
+++ b/src/error.c
@@ -385,9 +385,6 @@ mrb_init_exception(mrb_state *mrb)
eNameError = mrb_define_class(mrb, "NameError", mrb->eStandardError_class); /* 15.2.31 */
mrb_define_class(mrb, "NoMethodError", eNameError); /* 15.2.32 */
- // eScriptError = mrb_define_class(mrb, "ScriptError", mrb->eException_class); /* 15.2.37 */
- // mrb_define_class(mrb, "SyntaxError", eScriptError); /* 15.2.38 */
- // mrb_define_class(mrb, "LoadError", eScriptError); /* 15.2.39 */
// mrb_define_class(mrb, "SystemCallError", mrb->eStandardError_class); /* 15.2.36 */
mrb_define_class(mrb, "LocalJumpError", mrb->eStandardError_class); /* 15.2.25 */
diff --git a/test/t/exception.rb b/test/t/exception.rb
index 22795161f..d7226a368 100644
--- a/test/t/exception.rb
+++ b/test/t/exception.rb
@@ -41,6 +41,36 @@ assert('Exception.exception', '15.2.22.4.1') do
e.message == 'a'
end
+assert('ScriptError', '15.2.37') do
+ begin
+ raise ScriptError.new
+ rescue ScriptError
+ true
+ else
+ false
+ end
+end
+
+assert('SyntaxError', '15.2.38') do
+ begin
+ raise SyntaxError.new
+ rescue SyntaxError
+ true
+ else
+ false
+ end
+end
+
+assert('LoadError', '15.2.39') do
+ begin
+ raise LoadError.new
+ rescue LoadError
+ true
+ else
+ false
+ end
+end
+
# Not ISO specified
assert('Exception 1') do