Alias except' to
catch' and raise' to
throw'
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
2fd56e8fa1
commit
bdd07e1251
@ -162,6 +162,7 @@ class HyASTCompiler(object):
|
|||||||
return [self.compile(x) for x in expr[1:]]
|
return [self.compile(x) for x in expr[1:]]
|
||||||
|
|
||||||
@builds("throw")
|
@builds("throw")
|
||||||
|
@builds("raise")
|
||||||
@checkargs(min=1)
|
@checkargs(min=1)
|
||||||
def compile_throw_expression(self, expr):
|
def compile_throw_expression(self, expr):
|
||||||
expr.pop(0)
|
expr.pop(0)
|
||||||
@ -194,6 +195,7 @@ class HyASTCompiler(object):
|
|||||||
orelse=[])
|
orelse=[])
|
||||||
|
|
||||||
@builds("catch")
|
@builds("catch")
|
||||||
|
@builds("except")
|
||||||
def compile_catch_expression(self, expr):
|
def compile_catch_expression(self, expr):
|
||||||
expr.pop(0) # catch
|
expr.pop(0) # catch
|
||||||
|
|
||||||
|
@ -104,6 +104,16 @@ def test_ast_bad_throw():
|
|||||||
cant_compile("(throw)")
|
cant_compile("(throw)")
|
||||||
|
|
||||||
|
|
||||||
|
def test_ast_good_raise():
|
||||||
|
"Make sure AST can compile valid raise"
|
||||||
|
hy_compile(tokenize("(raise 1)"))
|
||||||
|
|
||||||
|
|
||||||
|
def test_ast_bad_raise():
|
||||||
|
"Make sure AST can't compile invalid raise"
|
||||||
|
cant_compile("(raise)")
|
||||||
|
|
||||||
|
|
||||||
def test_ast_good_try():
|
def test_ast_good_try():
|
||||||
"Make sure AST can compile valid try"
|
"Make sure AST can compile valid try"
|
||||||
hy_compile(tokenize("(try 1)"))
|
hy_compile(tokenize("(try 1)"))
|
||||||
@ -132,6 +142,24 @@ def test_ast_bad_catch():
|
|||||||
cant_compile("(catch [x [FooBar] BarBar]])")
|
cant_compile("(catch [x [FooBar] BarBar]])")
|
||||||
|
|
||||||
|
|
||||||
|
def test_ast_good_except():
|
||||||
|
"Make sure AST can compile valid except"
|
||||||
|
hy_compile(tokenize("(except)"))
|
||||||
|
hy_compile(tokenize("(except [])"))
|
||||||
|
hy_compile(tokenize("(except [Foobar])"))
|
||||||
|
hy_compile(tokenize("(except [[]])"))
|
||||||
|
hy_compile(tokenize("(except [x FooBar])"))
|
||||||
|
hy_compile(tokenize("(except [x [FooBar BarFoo]])"))
|
||||||
|
hy_compile(tokenize("(except [x [FooBar BarFoo]])"))
|
||||||
|
|
||||||
|
|
||||||
|
def test_ast_bad_except():
|
||||||
|
"Make sure AST can't compile invalid except"
|
||||||
|
cant_compile("(except 1)")
|
||||||
|
cant_compile("(except [1 3])")
|
||||||
|
cant_compile("(except [x [FooBar] BarBar]])")
|
||||||
|
|
||||||
|
|
||||||
def test_ast_good_assert():
|
def test_ast_good_assert():
|
||||||
"Make sure AST can compile valid assert"
|
"Make sure AST can compile valid assert"
|
||||||
hy_compile(tokenize("(assert 1)"))
|
hy_compile(tokenize("(assert 1)"))
|
||||||
|
@ -163,23 +163,29 @@
|
|||||||
(defn test-exceptions []
|
(defn test-exceptions []
|
||||||
"NATIVE: test Exceptions"
|
"NATIVE: test Exceptions"
|
||||||
(try
|
(try
|
||||||
(throw (KeyError))
|
(raise (KeyError))
|
||||||
(catch [[IOError]] (assert false))
|
(catch [[IOError]] (assert false))
|
||||||
(catch [e [KeyError]] (assert e)))
|
(catch [e [KeyError]] (assert e)))
|
||||||
|
|
||||||
|
(try
|
||||||
|
(throw (KeyError))
|
||||||
|
(except [[IOError]] (assert false))
|
||||||
|
(catch [e [KeyError]] (assert e)))
|
||||||
|
|
||||||
|
|
||||||
(try
|
(try
|
||||||
(get [1] 3)
|
(get [1] 3)
|
||||||
(catch [IndexError] (assert true))
|
(catch [IndexError] (assert true))
|
||||||
(catch [IndexError] (pass)))
|
(except [IndexError] (pass)))
|
||||||
|
|
||||||
(try
|
(try
|
||||||
(print foobar42ofthebaz)
|
(print foobar42ofthebaz)
|
||||||
(catch [IndexError] (assert false))
|
(catch [IndexError] (assert false))
|
||||||
(catch [NameError] (pass)))
|
(except [NameError] (pass)))
|
||||||
|
|
||||||
(try
|
(try
|
||||||
(get [1] 3)
|
(get [1] 3)
|
||||||
(catch [e IndexError] (assert (isinstance e IndexError))))
|
(except [e IndexError] (assert (isinstance e IndexError))))
|
||||||
|
|
||||||
(try
|
(try
|
||||||
(get [1] 3)
|
(get [1] 3)
|
||||||
@ -187,7 +193,7 @@
|
|||||||
|
|
||||||
(try
|
(try
|
||||||
(print foobar42ofthebaz)
|
(print foobar42ofthebaz)
|
||||||
(catch [e [IndexError NameError]] (assert (isinstance e NameError))))
|
(except [e [IndexError NameError]] (assert (isinstance e NameError))))
|
||||||
|
|
||||||
(try
|
(try
|
||||||
(print foobar42)
|
(print foobar42)
|
||||||
@ -203,11 +209,11 @@
|
|||||||
|
|
||||||
(try
|
(try
|
||||||
(print foobar42ofthebaz)
|
(print foobar42ofthebaz)
|
||||||
(catch []))
|
(except []))
|
||||||
|
|
||||||
(try
|
(try
|
||||||
(print foobar42ofthebaz)
|
(print foobar42ofthebaz)
|
||||||
(catch [] (pass)))
|
(except [] (pass)))
|
||||||
|
|
||||||
(try
|
(try
|
||||||
(print foobar42ofthebaz)
|
(print foobar42ofthebaz)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user