@@ -407,43 +407,6 @@ void ClassSymbol::addConversionFunction(FunctionSymbol* conversionFunction) {
407407 conversionFunctions_.push_back (conversionFunction);
408408}
409409
410- auto ClassSymbol::declaration () const -> SpecifierAST* { return specifier_; }
411-
412- void ClassSymbol::setDeclaration (SpecifierAST* specifier) {
413- specifier_ = specifier;
414- }
415-
416- auto ClassSymbol::templateDeclaration () const -> TemplateDeclarationAST* {
417- return templateDeclaration_;
418- }
419-
420- void ClassSymbol::setTemplateDeclaration (
421- TemplateDeclarationAST* templateDeclaration) {
422- templateDeclaration_ = templateDeclaration;
423- }
424-
425- auto ClassSymbol::specializations () const
426- -> std::span<const TemplateSpecialization<ClassSymbol>> {
427- if (!templateInfo_) return {};
428- return templateInfo_->specializations ();
429- }
430-
431- auto ClassSymbol::findSpecialization (
432- const std::vector<TemplateArgument>& arguments) const -> ClassSymbol* {
433- if (!templateInfo_) return {};
434- return templateInfo_->findSpecialization (arguments);
435- }
436-
437- void ClassSymbol::addSpecialization (std::vector<TemplateArgument> arguments,
438- ClassSymbol* specialization) {
439- if (!templateInfo_) {
440- templateInfo_ = std::make_unique<TemplateInfo<ClassSymbol>>(this );
441- }
442- auto index = templateInfo_->specializations ().size ();
443- specialization->setSpecializationInfo (this , index);
444- templateInfo_->addSpecialization (std::move (arguments), specialization);
445- }
446-
447410auto ClassSymbol::buildClassLayout (Control* control)
448411 -> std::expected<bool, std::string> {
449412 int offset = 0 ;
@@ -726,21 +689,22 @@ void TypeAliasSymbol::setTemplateDeclaration(
726689}
727690
728691auto TypeAliasSymbol::specializations () const
729- -> std::span<const TemplateSpecialization<TypeAliasSymbol> > {
692+ -> std::span<const TemplateSpecialization> {
730693 if (!templateInfo_) return {};
731694 return templateInfo_->specializations ();
732695}
733696
734697auto TypeAliasSymbol::findSpecialization (
735698 const std::vector<TemplateArgument>& arguments) const -> TypeAliasSymbol* {
736699 if (!templateInfo_) return {};
737- return templateInfo_->findSpecialization (arguments);
700+ return symbol_cast<TypeAliasSymbol>(
701+ templateInfo_->findSpecialization (arguments));
738702}
739703
740704void TypeAliasSymbol::addSpecialization (std::vector<TemplateArgument> arguments,
741705 TypeAliasSymbol* specialization) {
742706 if (!templateInfo_) {
743- templateInfo_ = std::make_unique<TemplateInfo<TypeAliasSymbol> >(this );
707+ templateInfo_ = std::make_unique<TemplateInfo>(this );
744708 }
745709 auto index = templateInfo_->specializations ().size ();
746710 specialization->setSpecializationInfo (this , index);
@@ -792,21 +756,22 @@ void VariableSymbol::setTemplateDeclaration(
792756}
793757
794758auto VariableSymbol::specializations () const
795- -> std::span<const TemplateSpecialization<VariableSymbol> > {
759+ -> std::span<const TemplateSpecialization> {
796760 if (!templateInfo_) return {};
797761 return templateInfo_->specializations ();
798762}
799763
800764auto VariableSymbol::findSpecialization (
801765 const std::vector<TemplateArgument>& arguments) const -> VariableSymbol* {
802766 if (!templateInfo_) return {};
803- return templateInfo_->findSpecialization (arguments);
767+ return symbol_cast<VariableSymbol>(
768+ templateInfo_->findSpecialization (arguments));
804769}
805770
806771void VariableSymbol::addSpecialization (std::vector<TemplateArgument> arguments,
807772 VariableSymbol* specialization) {
808773 if (!templateInfo_) {
809- templateInfo_ = std::make_unique<TemplateInfo<VariableSymbol> >(this );
774+ templateInfo_ = std::make_unique<TemplateInfo>(this );
810775 }
811776 auto index = templateInfo_->specializations ().size ();
812777 specialization->setSpecializationInfo (this , index);
0 commit comments