summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/lookup
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-11-02 21:37:35 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-11-02 21:37:35 +0000
commitfd0d54e486cc57cbac351be7b531d8dd059b9add (patch)
treeba29739d0ecf05b40f1009692a1b470d1790c5c4 /gcc/testsuite/g++.dg/lookup
parentc2f54bdd8374481f98bc0d25c1b16efd82043ee4 (diff)
downloadgcc-fd0d54e486cc57cbac351be7b531d8dd059b9add.tar.gz
PR c++/33516
* parser.c (cp_parser_nested_name_specifier_opt): Use TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete typedef of currently open class. * g++.dg/lookup/typedef1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129862 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.dg/lookup')
-rw-r--r--gcc/testsuite/g++.dg/lookup/typedef1.C32
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/lookup/typedef1.C b/gcc/testsuite/g++.dg/lookup/typedef1.C
new file mode 100644
index 00000000000..f712fc25aa5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/typedef1.C
@@ -0,0 +1,32 @@
+// PR c++/33516
+// { dg-do compile }
+
+struct S1;
+typedef S1 T1;
+struct S1 {
+ typedef int U;
+ T1::U i;
+};
+struct S2;
+typedef S2 T2;
+struct S2 {
+ typedef int U;
+};
+T2::U j;
+struct S3;
+typedef S3 T3;
+struct S3 {
+ typedef int U;
+ S3::U i;
+};
+
+void
+foo ()
+{
+ S1 s1;
+ S2 s2;
+ S3 s3;
+ s1.i = 6;
+ j = 7;
+ s3.i = 8;
+}