File indexing completed on 2024-05-19 08:26:10
0001 /* 0002 SPDX-FileCopyrightText: 2014 Heinz Wiesinger <pprkut@liwjatan.at> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "traitmemberaliasdeclaration.h" 0008 0009 #include <language/duchain/duchainregister.h> 0010 using namespace KDevelop; 0011 0012 namespace Php 0013 { 0014 0015 REGISTER_DUCHAIN_ITEM(TraitMemberAliasDeclaration); 0016 0017 TraitMemberAliasDeclaration::TraitMemberAliasDeclaration(const TraitMemberAliasDeclaration& rhs) 0018 : KDevelop::ClassMemberDeclaration(*new TraitMemberAliasDeclarationData(*rhs.d_func())) 0019 { 0020 } 0021 0022 TraitMemberAliasDeclaration::TraitMemberAliasDeclaration(const RangeInRevision& range, DUContext* context) 0023 : KDevelop::ClassMemberDeclaration(*new TraitMemberAliasDeclarationData, range) 0024 { 0025 d_func_dynamic()->setClassId(this); 0026 if (context) 0027 setContext(context); 0028 } 0029 0030 TraitMemberAliasDeclaration::TraitMemberAliasDeclaration(TraitMemberAliasDeclarationData& dd) 0031 : KDevelop::ClassMemberDeclaration(dd) 0032 { 0033 } 0034 0035 TraitMemberAliasDeclaration::TraitMemberAliasDeclaration(TraitMemberAliasDeclarationData& dd, const RangeInRevision& range) 0036 : KDevelop::ClassMemberDeclaration(dd, range) 0037 { 0038 } 0039 0040 TraitMemberAliasDeclaration::~TraitMemberAliasDeclaration() 0041 { 0042 } 0043 0044 Declaration* TraitMemberAliasDeclaration::clonePrivate() const 0045 { 0046 return new TraitMemberAliasDeclaration(*this); 0047 } 0048 0049 QString TraitMemberAliasDeclaration::toString() const 0050 { 0051 if( aliasedDeclaration().isValid() ) 0052 return aliasedDeclaration().declaration()->toString(); 0053 else 0054 return i18n("Lost trait alias %1").arg(identifier().toString()); 0055 } 0056 0057 void TraitMemberAliasDeclaration::setAliasedDeclaration(const IndexedDeclaration& decl) 0058 { 0059 d_func_dynamic()->m_aliasedDeclaration = decl; 0060 Declaration* aliased = decl.data(); 0061 if(aliased) 0062 Declaration::setAbstractType(aliased->abstractType()); 0063 } 0064 0065 IndexedDeclaration TraitMemberAliasDeclaration::aliasedDeclaration() const 0066 { 0067 return d_func()->m_aliasedDeclaration; 0068 } 0069 0070 }