@@ -407,43 +407,6 @@ void ClassSymbol::addConversionFunction(FunctionSymbol* conversionFunction) {
407
407
conversionFunctions_.push_back (conversionFunction);
408
408
}
409
409
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
-
447
410
auto ClassSymbol::buildClassLayout (Control* control)
448
411
-> std::expected<bool, std::string> {
449
412
int offset = 0 ;
@@ -726,21 +689,22 @@ void TypeAliasSymbol::setTemplateDeclaration(
726
689
}
727
690
728
691
auto TypeAliasSymbol::specializations () const
729
- -> std::span<const TemplateSpecialization<TypeAliasSymbol> > {
692
+ -> std::span<const TemplateSpecialization> {
730
693
if (!templateInfo_) return {};
731
694
return templateInfo_->specializations ();
732
695
}
733
696
734
697
auto TypeAliasSymbol::findSpecialization (
735
698
const std::vector<TemplateArgument>& arguments) const -> TypeAliasSymbol* {
736
699
if (!templateInfo_) return {};
737
- return templateInfo_->findSpecialization (arguments);
700
+ return symbol_cast<TypeAliasSymbol>(
701
+ templateInfo_->findSpecialization (arguments));
738
702
}
739
703
740
704
void TypeAliasSymbol::addSpecialization (std::vector<TemplateArgument> arguments,
741
705
TypeAliasSymbol* specialization) {
742
706
if (!templateInfo_) {
743
- templateInfo_ = std::make_unique<TemplateInfo<TypeAliasSymbol> >(this );
707
+ templateInfo_ = std::make_unique<TemplateInfo>(this );
744
708
}
745
709
auto index = templateInfo_->specializations ().size ();
746
710
specialization->setSpecializationInfo (this , index);
@@ -792,21 +756,22 @@ void VariableSymbol::setTemplateDeclaration(
792
756
}
793
757
794
758
auto VariableSymbol::specializations () const
795
- -> std::span<const TemplateSpecialization<VariableSymbol> > {
759
+ -> std::span<const TemplateSpecialization> {
796
760
if (!templateInfo_) return {};
797
761
return templateInfo_->specializations ();
798
762
}
799
763
800
764
auto VariableSymbol::findSpecialization (
801
765
const std::vector<TemplateArgument>& arguments) const -> VariableSymbol* {
802
766
if (!templateInfo_) return {};
803
- return templateInfo_->findSpecialization (arguments);
767
+ return symbol_cast<VariableSymbol>(
768
+ templateInfo_->findSpecialization (arguments));
804
769
}
805
770
806
771
void VariableSymbol::addSpecialization (std::vector<TemplateArgument> arguments,
807
772
VariableSymbol* specialization) {
808
773
if (!templateInfo_) {
809
- templateInfo_ = std::make_unique<TemplateInfo<VariableSymbol> >(this );
774
+ templateInfo_ = std::make_unique<TemplateInfo>(this );
810
775
}
811
776
auto index = templateInfo_->specializations ().size ();
812
777
specialization->setSpecializationInfo (this , index);
0 commit comments