+2001-12-26 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/196
+ * cp/parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
+
2001-12-24 Nathan Sidwell <nathan@codesourcery.com>
PR c++/160
}
| notype_declarator
{
- error ("type specifier omitted for parameter");
- if (TREE_CODE ($$) == SCOPE_REF
- && (TREE_CODE (TREE_OPERAND ($$, 0)) == TEMPLATE_TYPE_PARM
- || TREE_CODE (TREE_OPERAND ($$, 0)) == BOUND_TEMPLATE_TEMPLATE_PARM))
- error (" perhaps you want `typename %E' to make it a type", $$);
+ if (TREE_CODE ($$) == SCOPE_REF)
+ {
+ if (TREE_CODE (TREE_OPERAND ($$, 0)) == TEMPLATE_TYPE_PARM
+ || TREE_CODE (TREE_OPERAND ($$, 0)) == BOUND_TEMPLATE_TEMPLATE_PARM)
+ error ("`%E' is not a type, use `typename %E' to make it one", $$);
+ else
+ error ("no type `%D' in `%T'", TREE_OPERAND ($$, 1), TREE_OPERAND ($$, 0));
+ }
+ else
+ error ("type specifier omitted for parameter `%E'", $$);
$$ = build_tree_list (integer_type_node, $$);
}
;
+2001-12-26 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/eh/ctor1.C: New test.
+ * g++.dg/other/error2.C: New test.
+
2001-12-24 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/other/init2.C: New test.
--- /dev/null
+// { dg-do run }
+
+// Copyright (C) 2001 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 26 Dec 2001 <nathan@nathan@codesourcery.com>
+
+// PR 411
+
+bool was_f_in_Bar_destroyed=false;
+
+struct Foo
+{
+ ~Foo()
+ {
+ was_f_in_Bar_destroyed=true;
+ }
+};
+
+struct Bar
+{
+ ~Bar()
+ {
+ throw 1;
+ }
+
+ Foo f;
+};
+
+int main()
+{
+ try
+ {
+ Bar f;
+ }
+ catch(int i)
+ {
+ if(was_f_in_Bar_destroyed)
+ {
+ return 0;
+ }
+ }
+ return 1;
+}
--- /dev/null
+// { dg-do compile }
+
+// Copyright (C) 2001 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 26 Dec 2001 <nathan@nathan@codesourcery.com>
+
+// PR 196. Misleading diagnostic
+
+namespace N
+{
+ class B { friend void operator>>(int, class B); };
+ class N { friend void operator>>(int,class N); };
+}
+void N::operator>>(int, N::B) // { dg-error "no type `B' in `N::N'" "" }
+{ } // { dg-error "" "" }