From kde-commits Thu May 31 21:27:06 2012 From: =?utf-8?q?Miquel_Sabat=C3=A9?= Date: Thu, 31 May 2012 21:27:06 +0000 To: kde-commits Subject: [kdev-ruby/gsoc] duchain: Clear the module mixins list when declaring a class. Improved tests regard Message-Id: <20120531212706.E80C6A60A9 () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=133849980710836 Git commit 6df41781cde512594132baad3900e21f4509b813 by Miquel Sabat=C3=A9. Committed on 31/05/2012 at 23:18. Pushed by mssola into branch 'gsoc'. Clear the module mixins list when declaring a class. Improved tests regardi= ng module mixins M +2 -1 duchain/builders/declarationbuilder.cpp M +15 -2 duchain/tests/duchain.cpp http://commits.kde.org/kdev-ruby/6df41781cde512594132baad3900e21f4509b813 diff --git a/duchain/builders/declarationbuilder.cpp b/duchain/builders/dec= larationbuilder.cpp index e3427b7..21a87d1 100644 --- a/duchain/builders/declarationbuilder.cpp +++ b/duchain/builders/declarationbuilder.cpp @@ -83,8 +83,9 @@ void DeclarationBuilder::visitClassStatement(RubyAst *nod= e) /* First of all, open the declaration and set the comment */ setComment(getComment(node)); ClassDeclaration *decl =3D openDeclaration(id, range= ); - decl->setKind(KDevelop::Declaration::Type); decl->clearBaseClass(); + decl->clearModuleMixins(); + decl->setKind(KDevelop::Declaration::Type); m_accessPolicyStack.push(Declaration::Public); lastClassModule =3D decl; insideClassModule =3D true; diff --git a/duchain/tests/duchain.cpp b/duchain/tests/duchain.cpp index fa91469..b366d3c 100644 --- a/duchain/tests/duchain.cpp +++ b/duchain/tests/duchain.cpp @@ -815,6 +815,7 @@ void TestDUChain::include1() QVERIFY(md); QCOMPARE(md->internalContext()->localDeclarations(md->topContext()).si= ze(), 1); QCOMPARE(md->moduleMixinsSize(), 1u); + QVERIFY(md->moduleMixins()[0].included); QCOMPARE(md->moduleMixins()[0].module.type()->qualified= Identifier(), QualifiedIdentifier("AA::BB")); } = @@ -830,7 +831,13 @@ void TestDUChain::include2() DUChainReleaser releaser(top); DUChainWriteLocker lock(DUChain::lock()); = - PENDING("Left as pending for some reason."); + Declaration *obj =3D top->findLocalDeclarations(Identifier("Klass")).f= irst(); + ModuleDeclaration *md =3D dynamic_cast(obj); + QVERIFY(md); + QCOMPARE(md->internalContext()->localDeclarations(md->topContext()).si= ze(), 1); + QCOMPARE(md->moduleMixinsSize(), 1u); + QVERIFY(md->moduleMixins()[0].included); + QCOMPARE(md->moduleMixins()[0].module.type()->qualified= Identifier(), QualifiedIdentifier("AA::CC")); } = void TestDUChain::extend1() @@ -842,7 +849,13 @@ void TestDUChain::extend1() DUChainReleaser releaser(top); DUChainWriteLocker lock(DUChain::lock()); = - PENDING("Left as pending for some reason."); + Declaration *obj =3D top->findLocalDeclarations(Identifier("Klass")).f= irst(); + ModuleDeclaration *md =3D dynamic_cast(obj); + QVERIFY(md); + QCOMPARE(md->internalContext()->localDeclarations(md->topContext()).si= ze(), 1); + QCOMPARE(md->moduleMixinsSize(), 1u); + QVERIFY(!md->moduleMixins()[0].included); + QCOMPARE(md->moduleMixins()[0].module.type()->qualified= Identifier(), QualifiedIdentifier("AA::BB")); } = //END: Include & Extend