view gcc/testsuite/g++.dg/spellcheck-pr77829.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 04ced10e8804
children
line wrap: on
line source

// { 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 "" } */
}