aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBrendan Kehoe <brendan@gcc.gnu.org>1998-08-18 11:11:05 -0400
committerBrendan Kehoe <brendan@gcc.gnu.org>1998-08-18 11:11:05 -0400
commitba6ac69e478e4f2c56d284664a0a7400e1068e89 (patch)
tree719fd4049f49a6925fc735867a0b7bca6586ccaa /gcc
parent20045452636c20b9941102c5d4df386a2e364cb0 (diff)
downloadgcc-ba6ac69e478e4f2c56d284664a0a7400e1068e89.zip
gcc-ba6ac69e478e4f2c56d284664a0a7400e1068e89.tar.gz
gcc-ba6ac69e478e4f2c56d284664a0a7400e1068e89.tar.bz2
add expr/decl ambiguity test
From-SVN: r21825
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/parse3.C22
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/parse3.C b/gcc/testsuite/g++.old-deja/g++.brendan/parse3.C
new file mode 100644
index 0000000..c346a28
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/parse3.C
@@ -0,0 +1,22 @@
+// Build don't link:
+
+// these are marked as expected errors because they evidence an
+// ambiguity in the grammar between expressions and declarations.
+// when the parser's been cleaned up or rewritten, these two error
+// markers can go away, since they'll no longer occur.
+
+class A
+{
+ public:
+ int high;
+ unsigned int low;
+ A operator+(const A in);
+};
+
+A A::operator+(const A in)
+{
+ if (high==0)
+ return A(); // this works
+ else
+ return (A()); // this works not !! -> why ?? // ERROR -
+} // ERROR -