insert symbol on functiondecl

return ident from parse_fn_proto
This commit is contained in:
Janis 2024-12-22 19:00:29 +01:00
parent 7cea2452d1
commit 30ce12988d

View file

@ -2592,7 +2592,10 @@ pub mod ast_gen {
/// fn IDENTIFIER () -> TYPENAME
/// fn IDENTIFIER ( PARAMETER_LIST ,? )
/// fn IDENTIFIER ( PARAMETER_LIST ,? ) -> TYPENAME
fn parse_fn_proto(&mut self, tokens: &mut TokenIterator) -> ParseResult<Index> {
fn parse_fn_proto(
&mut self,
tokens: &mut TokenIterator,
) -> ParseResult<(Index, intern::Index)> {
let loc = tokens.current_source_location();
let _ = tokens.eat_token(Token::Fn).ok_or(ErrorInfo {
error: ParseError::ExpectedToken(Token::Fn),
@ -2617,8 +2620,10 @@ pub mod ast_gen {
tokens.current_source_location(),
)
};
let decl =
self.ast.push_fn_proto(ident, return_type, parameters, loc);
return Ok(self.ast.push_fn_proto(ident, return_type, parameters, loc));
Ok((decl, ident))
}
fn parse_fn_inner(&mut self, tokens: &mut TokenIterator) -> ParseResult<Index> {
@ -2627,7 +2632,7 @@ pub mod ast_gen {
self.push_scope(func, intern::Index::invalid());
let proto = self.parse_fn_proto(tokens).map_err(|e| {
let (proto, ident) = self.parse_fn_proto(tokens).map_err(|e| {
self.pop_scope();
e
})?;
@ -2640,6 +2645,13 @@ pub mod ast_gen {
self.ast.set_fn_decl(func, proto, body, loc);
self.syms.insert_symbol(
self.current_scope(),
ident,
SymbolKind::Function,
func,
);
Ok(func)
}