diff options
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CXX/drs/dr4xx.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/clang/test/CXX/drs/dr4xx.cpp b/clang/test/CXX/drs/dr4xx.cpp index 2a548e2eaba..bceea793faf 100644 --- a/clang/test/CXX/drs/dr4xx.cpp +++ b/clang/test/CXX/drs/dr4xx.cpp @@ -83,7 +83,7 @@ namespace dr406 { // dr406: yes } A; } -namespace dr407 { // dr407: no +namespace dr407 { // dr407: 3.8 struct S; typedef struct S S; void f() { @@ -108,22 +108,22 @@ namespace dr407 { // dr407: no struct S s; // expected-error {{ambiguous}} } namespace D { - // FIXME: This is valid. using A::S; - typedef struct S S; // expected-note {{here}} - struct S s; // expected-error {{refers to a typedef}} + typedef struct S S; + struct S s; } namespace E { - // FIXME: The standard doesn't say whether this is valid. + // The standard doesn't say whether this is valid. We interpret + // DR407 as meaning "if lookup finds both a tag and a typedef with the + // same type, then it's OK in an elaborated-type-specifier". typedef A::S S; using A::S; struct S s; } namespace F { - typedef A::S S; // expected-note {{here}} + typedef A::S S; } - // FIXME: The standard doesn't say what to do in these cases, but - // our behavior should not depend on the order of the using-directives. + // The standard doesn't say what to do in these cases either. namespace G { using namespace A; using namespace F; @@ -132,7 +132,7 @@ namespace dr407 { // dr407: no namespace H { using namespace F; using namespace A; - struct S s; // expected-error {{refers to a typedef}} + struct S s; } } } |

