Mercurial > emacs
view test/cedet/tests/testdoublens.cpp @ 111841:25e3c2636c1f
* lisp/gnus/message.el: Use completion-at-point.
(message-completion-function): New fun, extracted from message-tab.
(message-mode): Use it for completion-at-point-functions.
(message-tab): Use it and completion-at-point.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Mon, 06 Dec 2010 21:01:00 -0500 |
parents | 89eccb374dec |
children | 376148b31b5e |
line wrap: on
line source
// testdoublens.cpp --- semantic-ia-utest completion engine unit tests // Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. // Author: Eric M. Ludlam <eric@siege-engine.com> // This file is part of GNU Emacs. // GNU Emacs is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // GNU Emacs is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. #include "testdoublens.hpp" namespace Name1 { namespace Name2 { Foo::Foo() { p// -1- // #1# ( "pMumble" "publishStuff" ) ; } int Foo::get() // ^1^ { p// -2- // #2# ( "pMumble" "publishStuff" ) ; return 0; } void Foo::publishStuff(int /* a */, int /* b */) // ^2^ { } void Foo::sendStuff(int /* a */, int /* b */) // ^3^ { } } // namespace Name2 } // namespace Name1 // Test multiple levels of metatype expansion int test_fcn () { stage3_Foo MyFoo; MyFoo.// -3- // #3# ( "Mumble" "get" ) ; Name1::Name2::F//-4- // #4# ( "Foo" ) ; // @TODO - get this working... Name1::stage2_Foo::M//-5- /// #5# ( "Mumble" ) ; } stage3_Foo foo_fcn() { // Can we go "up" to foo with senator-go-to-up-reference? } // Second test from Ravikiran Rajagopal namespace A { class foo { public: void aa(); void bb(); }; } namespace A { class bar { public: void xx(); public: foo myFoo; }; void bar::xx() { myFoo.// -6- <--- cursor is here after the dot // #6# ( "aa" "bb" ) ; } } // Double namespace example from Hannu Koivisto // // This is tricky because the parent class "Foo" is found within the // scope of B, so the scope calculation needs to put that together // before searching for parents in scope. namespace a { namespace b { class Bar : public Foo { int baz(); }; int Bar::baz() { return dum// -7- // #7# ( "dumdum" ) ; } } // namespace b } // namespace a // Three namespace example from Hannu Koivisto // // This one is special in that the name e::Foo, where "e" is in // the scope, and not referenced from the global namespace. This // wasn't previously handled, so the fullscope needed to be added // to the list of things searched when in split-name decent search mode // for scopes. namespace d { namespace e { class Foo { public: int write(); }; } // namespace d } // namespace e namespace d { namespace f { class Bar { public: int baz(); private: e::Foo &foo; }; int Bar::baz() { return foo.w// -8- // #8# ( "write" ) ; } } // namespace f } // namespace d // arch-tag: a185c9f1-7519-48de-8eba-9d9b4140624b