From: Mark Mitchell Date: Fri, 11 Jun 2004 18:14:52 +0000 (+0000) Subject: re PR c++/15862 ('enum yn' fails) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ba18e4dbfc7e018c9b313cfc3fea93592880bc41;p=gcc.git re PR c++/15862 ('enum yn' fails) PR c++/15862 * name-lookup.c (unqualified_namespace_lookup): Do not ignore type bindings for undeclared built-ins. PR c++/15862 * g++.dg/parse/enum1.C: New test. From-SVN: r82986 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6ab2a7a5ce7..4b4e42c95c9 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-06-11 Mark Mitchell + + PR c++/15862 + * name-lookup.c (unqualified_namespace_lookup): Do not ignore type + bindings for undeclared built-ins. + 2004-06-11 Giovanni Bajo * typeck2.c (abstract_virtual_errors): Reword diagnostics, make them diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 238023da877..d470251d317 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -3761,16 +3761,17 @@ unqualified_namespace_lookup (tree name, int flags) cxx_binding *b = cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name); - /* Ignore anticipated built-in functions. */ - if (b && b->value && DECL_P (b->value) - && DECL_LANG_SPECIFIC (b->value) && DECL_ANTICIPATED (b->value)) - /* Keep binding cleared. */; - else if (b) - { - /* Initialize binding for this context. */ - binding.value = b->value; - binding.type = b->type; - } + if (b) + { + if (b->value && DECL_P (b->value) + && DECL_LANG_SPECIFIC (b->value) + && DECL_ANTICIPATED (b->value)) + /* Ignore anticipated built-in functions. */ + ; + else + binding.value = b->value; + binding.type = b->type; + } /* Add all _DECLs seen through local using-directives. */ for (level = current_binding_level; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e980a438ed5..8fc34ba9d68 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-06-11 Mark Mitchell + + PR c++/15862 + * g++.dg/parse/enum1.C: New test. + 2004-06-10 Jeff Law * gcc.c-torture/compile/20040610-1.c: New test. diff --git a/gcc/testsuite/g++.dg/parse/enum1.C b/gcc/testsuite/g++.dg/parse/enum1.C new file mode 100644 index 00000000000..d5c5f8688c8 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/enum1.C @@ -0,0 +1,4 @@ +// PR c++/15862 + +enum yn { Y, N }; +enum yn x = Y;