blob: 17071345d3fb0ddc96eaa4a26a637065276e80b8 [file] [log] [blame]
// { dg-options "-fdiagnostics-show-caret" }
/* Various tests of name lookup within a namespace, both within an explicitly
given namespace, or implicitly. */
namespace detail {
/* Various things to look for. */
typedef int some_typedef;
int _foo(int i) { return i; }
template <typename T>
T something_else (T i) { return i; }
}
/* Tests of lookup of a typedef. */
void fn_1_explicit ()
{
detail::some_type i; // { dg-error ".some_type. is not a member of .detail.; did you mean 'some_typedef'\\?" }
/* { dg-begin-multiline-output "" }
detail::some_type i;
^~~~~~~~~
some_typedef
{ dg-end-multiline-output "" } */
}
namespace detail {
void fn_1_implicit ()
{
some_type i; // { dg-error ".some_type. was not declared in this scope; did you mean 'some_typedef'\\?" }
/* { dg-begin-multiline-output "" }
some_type i;
^~~~~~~~~
some_typedef
{ dg-end-multiline-output "" } */
}
} // namespace detail
/* Tests of lookup of a function. */
void fn_2_explicit (int i) {
detail::foo(i); // { dg-error ".foo. is not a member of .detail.; did you mean '_foo'\\?" }
/* { dg-begin-multiline-output "" }
detail::foo(i);
^~~
_foo
{ dg-end-multiline-output "" } */
}
namespace detail {
void fn_2_implicit (int i) {
foo(i); // { dg-error ".foo. was not declared in this scope; did you mean '_foo'\\?" }
/* { dg-begin-multiline-output "" }
foo(i);
^~~
_foo
{ dg-end-multiline-output "" } */
}
} // namespace detail
/* Examples using a template. */
void fn_3_explicit (int i) {
detail::something_els(i); // { dg-error ".something_els. is not a member of .detail.; did you mean 'something_else'\\?" }
/* { dg-begin-multiline-output "" }
detail::something_els(i);
^~~~~~~~~~~~~
something_else
{ dg-end-multiline-output "" } */
}
namespace detail {
void fn_3_implicit (int i) {
something_els(i); // { dg-error ".something_els. was not declared in this scope; did you mean 'something_else'\\?" }
/* { dg-begin-multiline-output "" }
something_els(i);
^~~~~~~~~~~~~
something_else
{ dg-end-multiline-output "" } */
}
} // namespace detail
/* Tests of lookup for which no hint is available. */
void fn_4_explicit (int i) {
detail::not_recognized(i); // { dg-error ".not_recognized. is not a member of .detail." }
/* { dg-begin-multiline-output "" }
detail::not_recognized(i);
^~~~~~~~~~~~~~
{ dg-end-multiline-output "" } */
}
namespace detail {
void fn_4_implicit (int i)
{
not_recognized(i); // { dg-error ".not_recognized. was not declared in this scope" }
/* { dg-begin-multiline-output "" }
not_recognized(i);
^~~~~~~~~~~~~~
{ dg-end-multiline-output "" } */
}
} // namespace detail
/* Test for failed lookup explicitly within global namespace. */
typedef int another_typedef;
void fn_5 ()
{
::another_type i; // { dg-error ".::another_type. has not been declared; did you mean 'another_typedef'\\?" }
/* { dg-begin-multiline-output "" }
::another_type i;
^~~~~~~~~~~~
another_typedef
{ dg-end-multiline-output "" } */
}