Index: src/AST/Decl.hpp
===================================================================
--- src/AST/Decl.hpp	(revision 89c2f7c92369856ac89bc39ac4e4671b2ac71fb3)
+++ src/AST/Decl.hpp	(revision 10248ae0df771e5e4f6a00c5b977280c857f60bb)
@@ -119,4 +119,5 @@
 };
 
+/// Object declaration `int foo()`
 class FunctionDecl : public DeclWithType {
 public:
@@ -131,6 +132,6 @@
 	  stmts( stmts ) {}
 
-	const Type * get_type() const override { return type.get(); }
-	void set_type(Type * t) override { type = strict_dynamic_cast< FunctionType* >( t ); }
+	const Type * get_type() const override;
+	void set_type(Type * t) override;
 
 	bool has_body() const { return stmts; }
@@ -189,5 +190,5 @@
 	TypeDecl( const CodeLocation& loc, const std::string& name, Storage::Classes storage, Type* b,
 		TypeVar::Kind k, bool s, Type* i = nullptr )
-	: NamedTypeDecl( loc, name, storage, b ), kind( k ), sized( k == TypeVar::Ttype || s ), 
+	: NamedTypeDecl( loc, name, storage, b ), kind( k ), sized( k == TypeVar::Ttype || s ),
 	  init( i ) {}
 
