parse.y (parse_finish_call_expr): Check lookup_member result.
authorNathan Sidwell <nathan@codesourcery.com>
Mon, 16 Sep 2002 15:15:36 +0000 (15:15 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Mon, 16 Sep 2002 15:15:36 +0000 (15:15 +0000)
cp:
* parse.y (parse_finish_call_expr): Check lookup_member result.
testsuite:
* g++.dg/lookup/scoped2.C: New test.

From-SVN: r57195

gcc/cp/ChangeLog
gcc/cp/parse.y
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/lookup/scoped2.C [new file with mode: 0644]

index 3c3fb937d88c3582e9595c8b007e68605a5fe6e7..a4ddb5a6dc8f1ce9b9cec29ed6f8269b3424776d 100644 (file)
@@ -1,5 +1,7 @@
 2002-09-16  Nathan Sidwell  <nathan@codesourcery.com>
 
+       * parse.y (parse_finish_call_expr): Check lookup_member result.
+
        PR c++/7015
        * semantic.c (finish_asm_stmt): Fix operand/output_operands
        thinko.
index 8fe244e6147fae3502ea14824047d0e4215e4cb9..8cce99bd5c01b5e26edd9cbb9febb36b682f6e56 100644 (file)
@@ -4177,6 +4177,12 @@ parse_finish_call_expr (tree fn, tree args, int koenig)
                    name = DECL_NAME (get_first_fn (name));
                  fn = lookup_member (scope, name, /*protect=*/1, 
                                      /*prefer_type=*/0);
+                 if (!fn)
+                   {
+                     error ("'%D' has no member named '%E'", scope, name);
+                     return error_mark_node;
+                   }
+                 
                  if (BASELINK_P (fn) && template_id)
                    BASELINK_FUNCTIONS (fn) 
                      = build_nt (TEMPLATE_ID_EXPR,
index 603b39d080ae2724673be2bba77ea6cb5719a1bb..2d65752998fc87e46615ad9641ad2afc2d959330 100644 (file)
@@ -1,5 +1,7 @@
 2002-09-16  Nathan Sidwell  <nathan@codesourcery.com>
 
+       * g++.dg/lookup/scoped2.C: New test.
+
        * g++.dg/ext/asm3.C: New test.
 
 2002-09-16  Richard Earnshaw  <rearnsha@arm.com>
diff --git a/gcc/testsuite/g++.dg/lookup/scoped2.C b/gcc/testsuite/g++.dg/lookup/scoped2.C
new file mode 100644 (file)
index 0000000..80cfb1f
--- /dev/null
@@ -0,0 +1,19 @@
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 16 Sep 2002 <nathan@codesourcery.com>
+
+// Seg faulted.
+
+struct Base 
+{
+};
+
+struct Derived : Base
+{
+  void Foo ()
+  {
+    Base::Baz ();  // { dg-error "has no member" "" }
+      
+  };
+};