ligen_python_parser/function/method/
mod.rs1pub mod validator;
2
3use ligen::parser::ParserConfig;
4use rustpython_parser::ast::{StmtAsyncFunctionDef, StmtFunctionDef};
5use ligen::ir::{Method, Mutability};
6use crate::parser::PythonParser;
7use crate::prelude::*;
8
9impl Parser<WithSource<StmtFunctionDef>> for PythonParser {
10 type Output = Method;
11 fn parse(&self, input: WithSource<StmtFunctionDef>, config: &ParserConfig) -> Result<Self::Output> {
12 let function = self.function_parser.parse(input, config)?;
13 let attributes = function.attributes;
14 let visibility = function.visibility;
15 let synchrony = function.synchrony;
16 let identifier = function.identifier;
17 let inputs = function.inputs;
18 let output = function.output;
19 let mutability = Mutability::Mutable;
20 Ok(Self::Output { attributes, visibility, synchrony, mutability, identifier, inputs, output })
21 }
22}
23
24impl Parser<WithSource<StmtAsyncFunctionDef>> for PythonParser {
25 type Output = Method;
26 fn parse(&self, input: WithSource<StmtAsyncFunctionDef>, config: &ParserConfig) -> Result<Self::Output> {
27 let function = self.function_parser.parse(input, config)?;
28 let attributes = function.attributes;
29 let visibility = function.visibility;
30 let synchrony = function.synchrony;
31 let identifier = function.identifier;
32 let inputs = function.inputs;
33 let output = function.output;
34 let mutability = Mutability::Mutable;
35 Ok(Self::Output { attributes, visibility, synchrony, mutability, identifier, inputs, output })
36 }
37}