comparison rust/hg-cpython/src/exceptions.rs @ 44137:3bd77c64bc74

rust-filepatterns: remove bridge code for filepatterns-related functions These functions will be used internally by `hg-core` without needed to be exposed to Python. Differential Revision: https://phab.mercurial-scm.org/D7868
author Rapha?l Gom?s <rgomes@octobus.net>
date Tue, 14 Jan 2020 16:58:07 +0100
parents 7a01778bc7b7
children 9804badd5970
comparison
equal deleted inserted replaced
44136:baa4e7fdfd47 44137:3bd77c64bc74
11 //! but some variants of `hg::GraphError` can be converted directly to other 11 //! but some variants of `hg::GraphError` can be converted directly to other
12 //! existing Python exceptions if appropriate. 12 //! existing Python exceptions if appropriate.
13 //! 13 //!
14 //! [`GraphError`]: struct.GraphError.html 14 //! [`GraphError`]: struct.GraphError.html
15 use cpython::{ 15 use cpython::{
16 exc::{IOError, RuntimeError, ValueError}, 16 exc::{RuntimeError, ValueError},
17 py_exception, PyErr, Python, 17 py_exception, PyErr, Python,
18 }; 18 };
19 use hg; 19 use hg;
20 20
21 py_exception!(rustext, GraphError, ValueError); 21 py_exception!(rustext, GraphError, ValueError);
37 } 37 }
38 } 38 }
39 } 39 }
40 } 40 }
41 41
42 py_exception!(rustext, PatternError, RuntimeError);
43 py_exception!(rustext, PatternFileError, RuntimeError);
44 py_exception!(rustext, HgPathPyError, RuntimeError); 42 py_exception!(rustext, HgPathPyError, RuntimeError);
45 43
46 impl PatternError {
47 pub fn pynew(py: Python, inner: hg::PatternError) -> PyErr {
48 match inner {
49 hg::PatternError::UnsupportedSyntax(m) => {
50 PatternError::new(py, ("PatternError", m))
51 }
52 }
53 }
54 }
55
56 impl PatternFileError {
57 pub fn pynew(py: Python, inner: hg::PatternFileError) -> PyErr {
58 match inner {
59 hg::PatternFileError::IO(e) => {
60 let value = (e.raw_os_error().unwrap_or(2), e.to_string());
61 PyErr::new::<IOError, _>(py, value)
62 }
63 hg::PatternFileError::Pattern(e, l) => match e {
64 hg::PatternError::UnsupportedSyntax(m) => {
65 PatternFileError::new(py, ("PatternFileError", m, l))
66 }
67 },
68 }
69 }
70 }
71
72 py_exception!(shared_ref, AlreadyBorrowed, RuntimeError); 44 py_exception!(shared_ref, AlreadyBorrowed, RuntimeError);