Skip to content

Commit

Permalink
#15 - если у функции не прописан тип и нет return'ов, то она void
Browse files Browse the repository at this point in the history
  • Loading branch information
Stepami committed Jul 20, 2024
1 parent b2bf014 commit 5ff32a5
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,12 @@ public Unit Visit(FunctionDeclaration visitable)

Type undefined = "undefined";
if (functionSymbol.Type.Equals(undefined))
_functionStorage.Save(functionSymbol, visitable);
{
if (visitable.HasReturnStatement())
_functionStorage.Save(functionSymbol, visitable);
else
functionSymbol.DefineReturnType("void");
}

visitable.Parent.SymbolTable.AddSymbol(functionSymbol);
return visitable.Statements.Accept(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,12 +411,8 @@ symbol as FunctionSymbol

public Type Visit(FunctionDeclaration visitable)
{
var symbol =
visitable.SymbolTable.FindSymbol<FunctionSymbol>(visitable.Name)
?? throw new UnknownIdentifierReference(visitable.Name);

var symbol = visitable.SymbolTable.FindSymbol<FunctionSymbol>(visitable.Name);
_functionStorage.RemoveIfPresent(symbol);

visitable.Statements.Accept(this);

var returnStatements = visitable.GetReturnStatements()
Expand Down

0 comments on commit 5ff32a5

Please sign in to comment.