gobject-ast 0.1.2

AST representation of GObject C code
Documentation
use tree_sitter::Node;

use crate::{model::ReturnStatement, parser::Parser};

impl Parser {
    pub(crate) fn parse_return_statement(
        &self,
        node: Node,
        source: &[u8],
    ) -> Option<ReturnStatement> {
        let value = node.child(1).and_then(|v| {
            // Check if it's actually an expression (not a semicolon)
            if v.is_named() && v.kind() != ";" {
                self.parse_expression(v, source)
            } else {
                None
            }
        });

        Some(ReturnStatement {
            value,
            location: self.node_location(node),
        })
    }
}