polserver/pol-core/bscript/compiler/ast/GeneratedFunction.cpp
Kevin Eady 82cf03ba2a Generate constructors for child classes (#703)
* Make constructor_link nullable; WIP generated function builder changes

* saving work

* saving work, need to resolve double call

* hopefully finish up super inherited constructors

* Error if no base class has ctor

* Fix AddressSanitizer error...?

* Revert unnecessary edit

* Remove duplicate code

* Update pol-core/bscript/compiler/astbuilder/GeneratedFunctionBuilder.cpp
2024-10-10 18:06:04 +02:00

35 lines
1.3 KiB
C++

#include "GeneratedFunction.h"
#include "bscript/compiler/ast/Argument.h"
#include "bscript/compiler/ast/ClassDeclaration.h"
#include "bscript/compiler/ast/FunctionBody.h"
#include "bscript/compiler/ast/FunctionParameterDeclaration.h"
#include "bscript/compiler/ast/FunctionParameterList.h"
#include "bscript/compiler/ast/Statement.h"
#include "bscript/compiler/ast/UserFunction.h"
#include "bscript/compiler/model/ClassLink.h"
namespace Pol::Bscript::Compiler
{
GeneratedFunction::GeneratedFunction( const SourceLocation& loc, ClassDeclaration* cd,
UserFunctionType type, const std::string& name )
: UserFunction(
loc, false /* exported */, false /* expression */, type, cd->name /* scope */, name,
std::make_unique<FunctionParameterList>(
loc, std::vector<std::unique_ptr<FunctionParameterDeclaration>>() ),
std::make_unique<FunctionBody>( loc, std::vector<std::unique_ptr<Statement>>() ), loc,
std::make_shared<ClassLink>( loc, cd->name ) )
{
class_link->link_to( cd );
}
void GeneratedFunction::describe_to( std::string& w ) const
{
fmt::format_to( std::back_inserter( w ), "generated-function({})", name );
}
ClassDeclaration* GeneratedFunction::class_declaration() const
{
return class_link->class_declaration();
}
} // namespace Pol::Bscript::Compiler