Handle multi-level typenames and implicit typename in base list.
authorJason Merrill <jason@yorick.cygnus.com>
Thu, 25 Sep 1997 18:56:40 +0000 (18:56 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 25 Sep 1997 18:56:40 +0000 (14:56 -0400)
commit653cc74afc6785458eee2791fde774fb23ec3d8f
tree0e2ab47b18732e9a6b88e92e405a180726d99a24
parent6d4312ddbf30f452fd9c93254e0be63c4fcbda9a
Handle multi-level typenames and implicit typename in base list.

* parse.y (typename_sub{,[0-2]}): New rules.
(structsp, rule TYPENAME_KEYWORD): Use typename_sub.
(nonnested_type): New rule.
(complete_type_name): Use it.
(base_class.1): Use typename_sub and nonnested_type.
(nested_name_specifier): Don't elide std:: here.
* decl.c (make_typename_type): Handle getting a type for NAME.
(lookup_name_real): Turn std:: into :: here.

Rvalue conversions were removed in London.
* call.c (is_subseq): Don't consider lvalue transformations.
(build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
(joust): Reenable ?: kludge.

From-SVN: r15715
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/decl.c
gcc/cp/parse.y