OSDN Git Service

cp:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 Sep 2002 15:15:36 +0000 (15:15 +0000)
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 Sep 2002 15:15:36 +0000 (15:15 +0000)
* parse.y (parse_finish_call_expr): Check lookup_member result.
testsuite:
* g++.dg/lookup/scoped2.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57195 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 3c3fb93..a4ddb5a 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 8fe244e..8cce99b 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 603b39d..2d65752 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" "" }
+      
+  };
+};