diff --git a/parser/src/mode.rs b/parser/src/mode.rs index c03a538..cd84a09 100644 --- a/parser/src/mode.rs +++ b/parser/src/mode.rs @@ -17,6 +17,17 @@ impl Mode { } } +impl From for Mode { + fn from(mode: rustpython_compiler_core::Mode) -> Self { + use rustpython_compiler_core::Mode as CompileMode; + match mode { + CompileMode::Exec => Self::Module, + CompileMode::Eval => Self::Expression, + CompileMode::Single | CompileMode::BlockExpr => Self::Interactive, + } + } +} + impl std::str::FromStr for Mode { type Err = ModeParseError; fn from_str(s: &str) -> Result { diff --git a/src/lib.rs b/src/lib.rs index 4d318a1..c488a40 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -31,12 +31,7 @@ pub fn compile( source_path: String, opts: compile::CompileOpts, ) -> Result { - let parser_mode = match mode { - compile::Mode::Exec => parser::Mode::Module, - compile::Mode::Eval => parser::Mode::Expression, - compile::Mode::Single | compile::Mode::BlockExpr => parser::Mode::Interactive, - }; - let mut ast = match parser::parse(source, parser_mode, &source_path) { + let mut ast = match parser::parse(source, mode.into(), &source_path) { Ok(x) => x, Err(e) => return Err(error_from_parse(e, source)), };