Viewing file: suggestions-scoped-enums.C (3.71 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// { dg-do compile { target c++11 } } // { dg-options "-fdiagnostics-show-caret" }
/* Verify that we offer suggestions for misspelled values in scoped enums, and for values from scoped enums that are missing their scope. Verify that we emit fix-it hints for those cases for which we have adequate location information. */
enum class vegetable { CARROT, TURNIP }; // { dg-line decl_of_vegetable } namespace pasta { enum class shape { LASAGNA, LINGUINE, SPAGHETTI, TAGLIATELLE }; // { dg-line decl_of_shape } }
void misspelled_value_in_scoped_enum () { vegetable::TURNUP; // { dg-error "'TURNUP' is not a member of 'vegetable'; did you mean 'TURNIP'" } /* { dg-begin-multiline-output "" } vegetable::TURNUP; ^~~~~~ TURNIP { dg-end-multiline-output "" } */ }
void misspelled_value_using_explicit_ns () { pasta::shape::SPOOGHETTI; // { dg-error "'SPOOGHETTI' is not a member of 'pasta::shape'; did you mean 'SPAGHETTI'" } /* { dg-begin-multiline-output "" } pasta::shape::SPOOGHETTI; ^~~~~~~~~~ SPAGHETTI { dg-end-multiline-output "" } */ }
namespace pasta { void misspelled_value_using_implicit_ns () { shape::SPOOGHETTI; // { dg-error "'SPOOGHETTI' is not a member of 'pasta::shape'; did you mean 'SPAGHETTI'" } /* { dg-begin-multiline-output "" } shape::SPOOGHETTI; ^~~~~~~~~~ SPAGHETTI { dg-end-multiline-output "" } */ } } // namespace pasta
void unqualified_enum_in_global_ns () { CARROT; // { dg-error "'CARROT' was not declared in this scope; did you mean 'vegetable::CARROT'" } /* { dg-begin-multiline-output "" } CARROT; ^~~~~~ vegetable::CARROT { dg-end-multiline-output "" } */ // { dg-message "'vegetable::CARROT' declared here" "" { target *-*-* } decl_of_vegetable } /* { dg-begin-multiline-output "" } enum class vegetable { CARROT, TURNIP }; ^~~~~~ { dg-end-multiline-output "" } */ }
void unqualified_enum_in_ns () { LASAGNA; // { dg-error "'LASAGNA' was not declared in this scope; did you mean 'pasta::shape::LASAGNA'" } /* { dg-begin-multiline-output "" } LASAGNA; ^~~~~~~ pasta::shape::LASAGNA { dg-end-multiline-output "" } */ // { dg-message "'pasta::shape::LASAGNA' declared here" "" { target *-*-* } decl_of_shape } /* { dg-begin-multiline-output "" } enum class shape { LASAGNA, LINGUINE, SPAGHETTI, TAGLIATELLE }; ^~~~~~~ { dg-end-multiline-output "" } */ }
/* We can't guarantee location information here, so don't expect a fix-it hint. */
void unqualified_enum_in_explicit_ns () { pasta::LINGUINE; // { dg-error "'LINGUINE' is not a member of 'pasta'; did you mean 'pasta::shape::LINGUINE'" } /* { dg-begin-multiline-output "" } pasta::LINGUINE; ^~~~~~~~ { dg-end-multiline-output "" } */ // { dg-message "'pasta::shape::LINGUINE' declared here" "" { target *-*-* } decl_of_shape } /* { dg-begin-multiline-output "" } enum class shape { LASAGNA, LINGUINE, SPAGHETTI, TAGLIATELLE }; ^~~~~~~~ { dg-end-multiline-output "" } */ }
namespace pasta { void unqualified_enum_in_implicit_ns () { TAGLIATELLE; // { dg-error "'TAGLIATELLE' was not declared in this scope; did you mean 'pasta::shape::TAGLIATELLE'" } /* { dg-begin-multiline-output "" } TAGLIATELLE; ^~~~~~~~~~~ pasta::shape::TAGLIATELLE { dg-end-multiline-output "" } */ // { dg-message "'pasta::shape::TAGLIATELLE' declared here" "" { target *-*-* } decl_of_shape } /* { dg-begin-multiline-output "" } enum class shape { LASAGNA, LINGUINE, SPAGHETTI, TAGLIATELLE }; ^~~~~~~~~~~ { dg-end-multiline-output "" } */ } }
|