view gcc/testsuite/g++.dg/lookup/suggestions-unscoped-enums.C @ 145:1830386684a0

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

// { dg-options "-fdiagnostics-show-caret" }

enum { LASAGNA, SPAGHETTI };
namespace outer_ns_a
{
  enum enum_in_outer_ns_a { STRAWBERRY, BANANA };
  namespace inner_ns
  {
    enum enum_in_inner_ns { ELEPHANT, LION };
  }
}
namespace outer_ns_b
{
  enum enum_in_outer_ns_b { NIGHT, DAY };
}

void misspelled_enum_in_global_ns ()
{
  SPOOGHETTI; // { dg-error "'SPOOGHETTI' was not declared in this scope; did you mean 'SPAGHETTI'" }
  /* { dg-begin-multiline-output "" }
   SPOOGHETTI;
   ^~~~~~~~~~
   SPAGHETTI
     { dg-end-multiline-output "" } */
}

void unqualified_enum_in_outer_ns ()
{
  BANANA; // { dg-error "'BANANA' was not declared in this scope; did you mean 'outer_ns_a::BANANA'" }
  /* { dg-begin-multiline-output "" }
   BANANA;
   ^~~~~~
   outer_ns_a::BANANA
     { dg-end-multiline-output "" } */
  /* { dg-begin-multiline-output "" }
   enum enum_in_outer_ns_a { STRAWBERRY, BANANA };
                                         ^~~~~~
     { dg-end-multiline-output "" } */
}

namespace outer_ns_a
{
  void misspelled_unqualified_enum_in_outer_ns () {
    BANANAS; // { dg-error "'BANANAS' was not declared in this scope; did you mean 'BANANA'" }
  /* { dg-begin-multiline-output "" }
     BANANAS;
     ^~~~~~~
     BANANA
     { dg-end-multiline-output "" } */
  }
};

void unqualified_enum_in_inner_ns ()
{
  ELEPHANT; // { dg-error "'ELEPHANT' was not declared in this scope; did you mean 'outer_ns_a::inner_ns::ELEPHANT'" }
  /* { dg-begin-multiline-output "" }
   ELEPHANT;
   ^~~~~~~~
   outer_ns_a::inner_ns::ELEPHANT
     { dg-end-multiline-output "" } */
  /* { dg-begin-multiline-output "" }
     enum enum_in_inner_ns { ELEPHANT, LION };
                             ^~~~~~~~
     { dg-end-multiline-output "" } */
}

void partially_qualified_enum_in_inner_ns ()
{
  outer_ns_a::ELEPHANT; // { dg-error "'ELEPHANT' is not a member of 'outer_ns_a'; did you mean 'outer_ns_a::inner_ns::ELEPHANT'" }
  /* { dg-begin-multiline-output "" }
   outer_ns_a::ELEPHANT;
               ^~~~~~~~
     { dg-end-multiline-output "" } */
  /* { dg-begin-multiline-output "" }
     enum enum_in_inner_ns { ELEPHANT, LION };
                             ^~~~~~~~
     { dg-end-multiline-output "" } */
}

void wrongly_qualified_enum ()
{
  outer_ns_a::NIGHT; // { dg-error "'NIGHT' is not a member of 'outer_ns_a'; did you mean 'outer_ns_b::NIGHT'" }
  /* { dg-begin-multiline-output "" }
   outer_ns_a::NIGHT;
               ^~~~~
     { dg-end-multiline-output "" } */
  /* { dg-begin-multiline-output "" }
   enum enum_in_outer_ns_b { NIGHT, DAY };
                             ^~~~~
     { dg-end-multiline-output "" } */
}