Skip to content

Commit d7275a7

Browse files
committed
Introduce MaybeTemplate<S,D> to represent symbols that may be templates
1 parent 44e02e9 commit d7275a7

File tree

3 files changed

+102
-249
lines changed

3 files changed

+102
-249
lines changed

src/parser/cxx/symbols.cc

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -522,14 +522,6 @@ FunctionSymbol::FunctionSymbol(ScopeSymbol* enclosingScope)
522522

523523
FunctionSymbol::~FunctionSymbol() {}
524524

525-
auto FunctionSymbol::declaration() const -> DeclarationAST* {
526-
return declaration_;
527-
}
528-
529-
void FunctionSymbol::setDeclaration(DeclarationAST* declaration) {
530-
declaration_ = declaration;
531-
}
532-
533525
auto FunctionSymbol::isDefined() const -> bool { return isDefined_; }
534526

535527
void FunctionSymbol::setDefined(bool isDefined) { isDefined_ = isDefined; }
@@ -679,38 +671,6 @@ TypeAliasSymbol::TypeAliasSymbol(ScopeSymbol* enclosingScope)
679671

680672
TypeAliasSymbol::~TypeAliasSymbol() {}
681673

682-
auto TypeAliasSymbol::templateDeclaration() const -> TemplateDeclarationAST* {
683-
return templateDeclaration_;
684-
}
685-
686-
void TypeAliasSymbol::setTemplateDeclaration(
687-
TemplateDeclarationAST* declaration) {
688-
templateDeclaration_ = declaration;
689-
}
690-
691-
auto TypeAliasSymbol::specializations() const
692-
-> std::span<const TemplateSpecialization> {
693-
if (!templateInfo_) return {};
694-
return templateInfo_->specializations();
695-
}
696-
697-
auto TypeAliasSymbol::findSpecialization(
698-
const std::vector<TemplateArgument>& arguments) const -> TypeAliasSymbol* {
699-
if (!templateInfo_) return {};
700-
return symbol_cast<TypeAliasSymbol>(
701-
templateInfo_->findSpecialization(arguments));
702-
}
703-
704-
void TypeAliasSymbol::addSpecialization(std::vector<TemplateArgument> arguments,
705-
TypeAliasSymbol* specialization) {
706-
if (!templateInfo_) {
707-
templateInfo_ = std::make_unique<TemplateInfo>(this);
708-
}
709-
auto index = templateInfo_->specializations().size();
710-
specialization->setSpecializationInfo(this, index);
711-
templateInfo_->addSpecialization(std::move(arguments), specialization);
712-
}
713-
714674
VariableSymbol::VariableSymbol(ScopeSymbol* enclosingScope)
715675
: Symbol(Kind, enclosingScope) {}
716676

@@ -746,38 +706,6 @@ auto VariableSymbol::isInline() const -> bool { return isInline_; }
746706

747707
void VariableSymbol::setInline(bool isInline) { isInline_ = isInline; }
748708

749-
auto VariableSymbol::templateDeclaration() const -> TemplateDeclarationAST* {
750-
return templateDeclaration_;
751-
}
752-
753-
void VariableSymbol::setTemplateDeclaration(
754-
TemplateDeclarationAST* declaration) {
755-
templateDeclaration_ = declaration;
756-
}
757-
758-
auto VariableSymbol::specializations() const
759-
-> std::span<const TemplateSpecialization> {
760-
if (!templateInfo_) return {};
761-
return templateInfo_->specializations();
762-
}
763-
764-
auto VariableSymbol::findSpecialization(
765-
const std::vector<TemplateArgument>& arguments) const -> VariableSymbol* {
766-
if (!templateInfo_) return {};
767-
return symbol_cast<VariableSymbol>(
768-
templateInfo_->findSpecialization(arguments));
769-
}
770-
771-
void VariableSymbol::addSpecialization(std::vector<TemplateArgument> arguments,
772-
VariableSymbol* specialization) {
773-
if (!templateInfo_) {
774-
templateInfo_ = std::make_unique<TemplateInfo>(this);
775-
}
776-
auto index = templateInfo_->specializations().size();
777-
specialization->setSpecializationInfo(this, index);
778-
templateInfo_->addSpecialization(std::move(arguments), specialization);
779-
}
780-
781709
auto VariableSymbol::initializer() const -> ExpressionAST* {
782710
return initializer_;
783711
}

0 commit comments

Comments
 (0)