mirror of
https://github.com/polserver/polserver
synced 2026-08-13 08:23:08 -04:00
* 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
35 lines
1.3 KiB
C++
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
|