File indexing completed on 2024-05-12 04:37:56
0001 /* 0002 SPDX-FileCopyrightText: 2008 David Nolden <david.nolden.kdevelop@art-master.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #include "aliasdeclaration.h" 0008 0009 #include "ducontext.h" 0010 #include "duchainregister.h" 0011 #include "types/delayedtype.h" 0012 #include <editor/rangeinrevision.h> 0013 0014 namespace KDevelop { 0015 REGISTER_DUCHAIN_ITEM(AliasDeclaration); 0016 0017 AliasDeclaration::AliasDeclaration(const AliasDeclaration& rhs) 0018 : ClassMemberDeclaration(*new AliasDeclarationData(*rhs.d_func())) 0019 { 0020 } 0021 0022 AliasDeclaration::AliasDeclaration(const RangeInRevision& range, DUContext* context) 0023 : ClassMemberDeclaration(*new AliasDeclarationData, range) 0024 { 0025 d_func_dynamic()->setClassId(this); 0026 setKind(Alias); 0027 if (context) 0028 setContext(context); 0029 } 0030 0031 AliasDeclaration::AliasDeclaration(AliasDeclarationData& data) : ClassMemberDeclaration(data) 0032 { 0033 } 0034 0035 AliasDeclaration::~AliasDeclaration() 0036 { 0037 } 0038 0039 Declaration* AliasDeclaration::clonePrivate() const 0040 { 0041 return new AliasDeclaration(*this); 0042 } 0043 0044 QString AliasDeclaration::toString() const 0045 { 0046 if (aliasedDeclaration().isValid()) 0047 return i18n("Alias %1 as %2", aliasedDeclaration().declaration()->qualifiedIdentifier().toString(), 0048 identifier().toString()); 0049 else 0050 return i18n("Lost alias %1", identifier().toString()); 0051 } 0052 0053 void AliasDeclaration::setAliasedDeclaration(const IndexedDeclaration& decl) 0054 { 0055 d_func_dynamic()->m_aliasedDeclaration = decl; 0056 Declaration* aliased = decl.data(); 0057 if (aliased) 0058 Declaration::setAbstractType(aliased->abstractType()); 0059 } 0060 0061 IndexedDeclaration AliasDeclaration::aliasedDeclaration() const 0062 { 0063 return d_func()->m_aliasedDeclaration; 0064 } 0065 0066 void AliasDeclaration::setAbstractType(AbstractType::Ptr type) 0067 { 0068 Declaration::setAbstractType(type); 0069 } 0070 }