From patchwork Wed Jan 12 00:33:23 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicola Pero X-Patchwork-Id: 78495 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 79BD8B70A3 for ; Wed, 12 Jan 2011 11:33:55 +1100 (EST) Received: (qmail 9224 invoked by alias); 12 Jan 2011 00:33:52 -0000 Received: (qmail 9205 invoked by uid 22791); 12 Jan 2011 00:33:47 -0000 X-SWARE-Spam-Status: No, hits=-0.4 required=5.0 tests=AWL, BAYES_40, TW_PM, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from fencepost.gnu.org (HELO fencepost.gnu.org) (140.186.70.10) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 12 Jan 2011 00:33:38 +0000 Received: from eggs.gnu.org ([140.186.70.92]:43068) by fencepost.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1Pcoea-0000CQ-Ax for gcc-patches@gnu.org; Tue, 11 Jan 2011 19:33:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PcoeT-0005rb-4p for gcc-patches@gnu.org; Tue, 11 Jan 2011 19:33:35 -0500 Received: from smtp181.iad.emailsrvr.com ([207.97.245.181]:34901) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PcoeS-0005rQ-Qc for gcc-patches@gnu.org; Tue, 11 Jan 2011 19:33:25 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp38.relay.iad1a.emailsrvr.com (SMTP Server) with ESMTP id 0C0D9348911 for ; Tue, 11 Jan 2011 19:33:24 -0500 (EST) Received: from dynamic11.wm-web.iad.mlsrvr.com (dynamic11.wm-web.iad1a.rsapps.net [192.168.2.218]) by smtp38.relay.iad1a.emailsrvr.com (SMTP Server) with ESMTP id DE0AE348BBD for ; Tue, 11 Jan 2011 19:33:23 -0500 (EST) Received: from meta-innovation.com (localhost [127.0.0.1]) by dynamic11.wm-web.iad.mlsrvr.com (Postfix) with ESMTP id C3171E0086 for ; Tue, 11 Jan 2011 19:33:23 -0500 (EST) Received: by www2.webmail.us (Authenticated sender: nicola.pero@meta-innovation.com, from: nicola.pero@meta-innovation.com) with HTTP; Wed, 12 Jan 2011 01:33:23 +0100 (CET) Date: Wed, 12 Jan 2011 01:33:23 +0100 (CET) Subject: ObjC++: patch fixing the Objective-C++ testsuite From: "Nicola Pero" To: "gcc-patches@gnu.org" MIME-Version: 1.0 X-Type: plain Message-ID: <1294792403.797310642@192.168.4.58> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org This patch fixes the problems with the Objective-C++ testsuite. One effect of the fix is that dg-error, dg-warning and dg-message now correctly match different types of compiler messages - unfortunately because this used to be broken, many testcases had been committed which used dg-error to match a warning or vice versa; so after fixing the testsuite I had to fix many testcases too. ;-) Anyway, it now all seems to work. :-) Ok to commit ? Thanks Index: lib/obj-c++.exp =================================================================== --- lib/obj-c++.exp (revision 168682) +++ lib/obj-c++.exp (working copy) @@ -211,6 +211,8 @@ proc obj-c++_init { args } { global OBJCXX_UNDER_TEST global TESTING_IN_BUILD_TREE global target_triplet + global gcc_warning_prefix + global gcc_error_prefix if ![info exists OBJCXX_UNDER_TEST] then { if [info exists TOOL_EXECUTABLE] { @@ -265,6 +267,9 @@ proc obj-c++_init { args } { # error-message parsing machinery. lappend ALWAYS_OBJCXXFLAGS "additional_flags=-fmessage-length=0" + set gcc_warning_prefix "warning:" + set gcc_error_prefix "error:" + if { [string match "*-*-darwin*" $target_triplet] } { lappend ALWAYS_OBJCXXFLAGS "ldflags=-multiply_defined suppress" } Index: ChangeLog =================================================================== --- ChangeLog (revision 168682) +++ ChangeLog (working copy) @@ -1,3 +1,53 @@ +2011-01-12 Nicola Pero + + Fixed the Objective-C++ testsuite and updated all tests. + * lib/obj-c++.exp (obj-c++_init): Declare and set + gcc_warning_prefix and gcc_error_prefix. + * obj-c++.dg/attributes/categ-attribute-2.mm: Fixed usage of + 'dg-warning', 'dg-message' and 'dg-error'. + * obj-c++.dg/class-extension-3.mm: Same change. + * obj-c++.dg/class-protocol-1.mm: Same change. + * obj-c++.dg/encode-7.mm: Same change. + * obj-c++.dg/exceptions-3.mm: Same change. + * obj-c++.dg/exceptions-5.mm: Same change. + * obj-c++.dg/method-12.mm: Same change. + * obj-c++.dg/method-13.mm: Same change. + * obj-c++.dg/method-15.mm: Same change. + * obj-c++.dg/method-16.mm: Same change. + * obj-c++.dg/method-4.mm: Same change. + * obj-c++.dg/method-8.mm: Same change. + * obj-c++.dg/method-conflict-1.mm: Same change. + * obj-c++.dg/method-conflict-2.mm: Same change. + * obj-c++.dg/method-conflict-3.mm: Same change. Also, removed + FIXME and uncommented second part of the testcase now that the + testsuite works correctly. + * obj-c++.dg/method-conflict-4.mm: Same change. Also, removed + FIXME and uncommented second part of the testcase now that the + testsuite works correctly. + * obj-c++.dg/private-1.mm: Same change. + * obj-c++.dg/proto-lossage-4.mm: Same change. + * obj-c++.dg/syntax-error-7.mm: Same change. + * obj-c++.dg/warn5.mm: Same change. + + * obj-c++.dg/property/at-property-14.mm: Same change. + * obj-c++.dg/property/at-property-16.mm: Same change, and removed + FIXME. + * obj-c++.dg/property/at-property-18.mm: Same change. + * obj-c++.dg/property/at-property-20.mm: Same change, and removed + FIXME. + * obj-c++.dg/property/at-property-21.mm: Same change. + * obj-c++.dg/property/at-property-28.mm: Same change. + * obj-c++.dg/property/at-property-5.mm: Same change. + * obj-c++.dg/property/dynamic-2.mm: Same change. + * obj-c++.dg/property/property-neg-3.mm: Same change. + * obj-c++.dg/property/synthesize-11.mm: Same change. + * obj-c++.dg/property/synthesize-6.mm: Same change. + * obj-c++.dg/property/synthesize-8.mm: Same change. + * obj-c++.dg/property/synthesize-9.mm: Same change. + * obj-c++.dg/tls/diag-5.mm: Same change. + * obj-c++.dg/ivar-invalid-type-1.mm: Removed FIXME and uncommented + dg-error, now matched correctly. + 2011-01-11 Dodji Seketeli PR debug/46955 Index: obj-c++.dg/private-1.mm =================================================================== --- obj-c++.dg/private-1.mm (revision 168682) +++ obj-c++.dg/private-1.mm (working copy) @@ -49,8 +49,8 @@ int main (void) { int access; - access = m->_private; /* { dg-error "is @private" } */ - access = m->_protected; /* { dg-error "is @protected" } */ + access = m->_private; /* { dg-warning "is @private" } */ + access = m->_protected; /* { dg-warning "is @protected" } */ access = m->_public; /* Ok */ } Index: obj-c++.dg/method-conflict-3.mm =================================================================== --- obj-c++.dg/method-conflict-3.mm (revision 168682) +++ obj-c++.dg/method-conflict-3.mm (working copy) @@ -27,39 +27,37 @@ - (void) method6: (id )x; - (void) method6: (id )x; /* Ok */ -- (void) method7: (id)x; /* { dg-warning "previous declaration" } */ +- (void) method7: (id)x; /* { dg-message "previous declaration" } */ - (void) method7: (id )x; /* { dg-error "duplicate declaration" } */ -- (void) method8: (id )x; /* { dg-warning "previous declaration" } */ +- (void) method8: (id )x; /* { dg-message "previous declaration" } */ - (void) method8: (id)x; /* { dg-error "duplicate declaration" } */ -- (void) method9: (id )x; /* { dg-warning "previous declaration" } */ +- (void) method9: (id )x; /* { dg-message "previous declaration" } */ - (void) method9: (id )x; /* { dg-error "duplicate declaration" } */ -- (void) methodA: (id )x; /* { dg-warning "previous declaration" } */ +- (void) methodA: (id )x; /* { dg-message "previous declaration" } */ - (void) methodA: (id )x; /* { dg-error "duplicate declaration" } */ -/* FIXME: Bug in the testsuite - the following are done Ok by the compiler, but - the testsuite barfs so we have to comment out the tests. */ -/* - (void) methodB: (id )x; dg-warning "previous declaration" */ -/* - (void) methodB: (id )x; dg-error "duplicate declaration" */ +- (void) methodB: (id )x; /* { dg-message "previous declaration" } */ +- (void) methodB: (id )x; /* { dg-error "duplicate declaration" } */ -/* - (void) methodC: (id )x; dg-warning "previous declaration" */ -/* - (void) methodC: (id )x; dg-error "duplicate declaration" */ +- (void) methodC: (id )x; /* { dg-message "previous declaration" } */ +- (void) methodC: (id )x; /* { dg-error "duplicate declaration" } */ -/* - (void) methodD: (id )x; dg-warning "previous declaration" */ -/* - (void) methodD: (id )x; dg-error "duplicate declaration" */ +- (void) methodD: (id )x; /* { dg-message "previous declaration" } */ +- (void) methodD: (id )x; /* { dg-error "duplicate declaration" } */ -/* - (void) methodE: (MyClass *)x; dg-warning "previous declaration" */ -/* - (void) methodE: (MyClass *)x; dg-error "duplicate declaration" */ +- (void) methodE: (MyClass *)x; /* { dg-message "previous declaration" } */ +- (void) methodE: (MyClass *)x; /* { dg-error "duplicate declaration" } */ - (void) methodF: (MyClass *)x; - (void) methodF: (MyClass *)x; /* Ok */ -/* - (void) methodG: (MyClass *)x; dg-warning "previous declaration" */ -/* - (void) methodG: (MyClass *)x; dg-error "duplicate declaration" */ +- (void) methodG: (MyClass *)x; /* { dg-message "previous declaration" } */ +- (void) methodG: (MyClass *)x; /* { dg-error "duplicate declaration" } */ -/* - (void) methodH: (MyClass *)x; dg-warning "previous declaration" */ -/* - (void) methodH: (MyClass *)x; dg-error "duplicate declaration" */ +- (void) methodH: (MyClass *)x; /* { dg-message "previous declaration" } */ +- (void) methodH: (MyClass *)x; /* { dg-error "duplicate declaration" } */ @end Index: obj-c++.dg/warn5.mm =================================================================== --- obj-c++.dg/warn5.mm (revision 168682) +++ obj-c++.dg/warn5.mm (working copy) @@ -16,10 +16,10 @@ struct A { typedef void (A::*pmf)(); -static int mememe = &A::foo - &A::bar; // { dg-warning "" } -pmf b = &A::foo-1; // { dg-warning "" } +static int mememe = &A::foo - &A::bar; // { dg-error "" } +pmf b = &A::foo-1; // { dg-error "" } int main() { double y; - y=X(Y-Z); // { dg-warning "" } + y=X(Y-Z); // { dg-error "" } } Index: obj-c++.dg/cxx-scope-2.mm =================================================================== --- obj-c++.dg/cxx-scope-2.mm (revision 168682) +++ obj-c++.dg/cxx-scope-2.mm (working copy) @@ -11,9 +11,9 @@ @end int main(void) { - id i = [std::iostream new]; /* { dg-warning "not an Objective\\-C class name or alias" } */ + id i = [std::iostream new]; /* { dg-error "not an Objective\\-C class name or alias" } */ i = [iostream new]; - i = [std::basic_string new]; /* { dg-warning "not an Objective\\-C class name or alias" } */ + i = [std::basic_string new]; /* { dg-error "not an Objective\\-C class name or alias" } */ return 0; } Index: obj-c++.dg/syntax-error-7.mm =================================================================== --- obj-c++.dg/syntax-error-7.mm (revision 168682) +++ obj-c++.dg/syntax-error-7.mm (working copy) @@ -9,5 +9,5 @@ -(void) someMethod /* { dg-error "expected before .-." } */ { } -@end /* { dg-error "incomplete implementation of class" } */ -/* { dg-error "method definition for ..someMethod. not found" "" { target *-*-* } 12 } */ +@end /* { dg-warning "incomplete implementation of class" } */ +/* { dg-warning "method definition for ..someMethod. not found" "" { target *-*-* } 12 } */ Index: obj-c++.dg/method-8.mm =================================================================== --- obj-c++.dg/method-8.mm (revision 168682) +++ obj-c++.dg/method-8.mm (working copy) @@ -2,12 +2,12 @@ /* { dg-do compile } */ @interface class1 -- (int) meth1; /* { dg-error "previous declaration" } */ +- (int) meth1; /* { dg-message "previous declaration" } */ - (void) meth1; /* { dg-error "duplicate declaration of method .\\-meth1." } */ @end @interface class2 -+ (void) meth1; /* { dg-error "previous declaration" } */ ++ (void) meth1; /* { dg-message "previous declaration" } */ + (int) meth1; /* { dg-error "duplicate declaration of method .\\+meth1." } */ @end Index: obj-c++.dg/property/at-property-20.mm =================================================================== --- obj-c++.dg/property/at-property-20.mm (revision 168682) +++ obj-c++.dg/property/at-property-20.mm (working copy) @@ -37,14 +37,13 @@ @interface MyClass : MyRootClass { } -@property (assign) id a; /* { dg-warning "originally specified here" } */ -@property int b; /* { dg-warning "originally specified here" } */ -@property float c; /* { dg-warning "originally specified here" } */ -@property (assign) MyRootClass *d; /* { dg-warning "originally specified here" } */ -@property (assign) MySubClass1 *e; /* { dg-warning "originally specified here" } */ -/* FIXME: Mysteriously two of the next three need to be 'dg-message' instead of 'dg-warning' for the testcase to work. */ +@property (assign) id a; /* { dg-message "originally specified here" } */ +@property int b; /* { dg-message "originally specified here" } */ +@property float c; /* { dg-message "originally specified here" } */ +@property (assign) MyRootClass *d; /* { dg-message "originally specified here" } */ +@property (assign) MySubClass1 *e; /* { dg-message "originally specified here" } */ @property (assign, readonly) MySubClass1 *f; /* { dg-message "originally specified here" } */ -@property (assign) MySubClass3 *g; /* { dg-warning "originally specified here" } */ +@property (assign) MySubClass3 *g; /* { dg-message "originally specified here" } */ @property (assign, readonly) MySubClass3 *h; /* { dg-message "originally specified here" } */ @end Index: obj-c++.dg/property/at-property-14.mm =================================================================== --- obj-c++.dg/property/at-property-14.mm (revision 168682) +++ obj-c++.dg/property/at-property-14.mm (working copy) @@ -10,11 +10,11 @@ /* Test the warnings on 'assign'. */ @property id property_a; /* { dg-warning "object property .property.a. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 12 } */ + /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 12 } */ @property (readonly) id property_b; /* No 'assign' warning (assign semantics do not matter if the property is readonly). */ @property id *property_c; /* No 'assign' warning (the type is not an Objective-C object). */ @property Class property_d; /* No 'assign' warning (Classes are static objects so assign semantics do not matter for them). */ @property MyRootClass *property_e; /* { dg-warning "object property .property.e. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 18 } */ + /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 18 } */ @end Index: obj-c++.dg/property/synthesize-6.mm =================================================================== --- obj-c++.dg/property/synthesize-6.mm (revision 168682) +++ obj-c++.dg/property/synthesize-6.mm (working copy) @@ -15,7 +15,7 @@ @property int v2; @end @implementation Test -@synthesize v1 = v; /* { dg-warning "originally specified here" } */ +@synthesize v1 = v; /* { dg-message "originally specified here" } */ @synthesize v2 = v; /* { dg-error "property .v2. is using the same instance variable as property .v1." } */ @end @interface Test2 : Test @@ -26,5 +26,5 @@ @synthesize w1; /* { dg-error "ivar .w1. used by .@synthesize. declaration must be an existing ivar" } */ @end /* { dg-warning "incomplete implementation" "" { target *-*-* } 27 } */ -/* { dg-warning "method definition for .-setW1:. not found" "" { target *-*-* } 27 } */ -/* { dg-warning "method definition for .-w1. not found" "" { target *-*-* } 27 } */ +/* { dg-message "method definition for .-setW1:. not found" "" { target *-*-* } 27 } */ +/* { dg-message "method definition for .-w1. not found" "" { target *-*-* } 27 } */ Index: obj-c++.dg/property/at-property-18.mm =================================================================== --- obj-c++.dg/property/at-property-18.mm (revision 168682) +++ obj-c++.dg/property/at-property-18.mm (working copy) @@ -26,21 +26,21 @@ @end @interface MyRootClass (Category) @property (retain) id a; /* { dg-warning "assign semantics attributes of property .a. conflict with previous declaration" } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 16 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 16 } */ @property (assign) id b; /* { dg-warning "assign semantics attributes of property .b. conflict with previous declaration" } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 17 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 17 } */ @property (nonatomic) int c; /* { dg-warning ".nonatomic. attribute of property .c. conflicts with previous declaration" } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 18 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 18 } */ @property int d; /* { dg-warning ".nonatomic. attribute of property .d. conflicts with previous declaration" } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 19 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 19 } */ @property (setter=setX:) int e; /* { dg-warning ".setter. attribute of property .e. conflicts with previous declaration" } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 20 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 20 } */ @property (getter=x) int f; /* { dg-warning ".getter. attribute of property .f. conflicts with previous declaration" } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 21 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 21 } */ @property (readonly) int g; /* { dg-warning ".readonly. attribute of property .g. conflicts with previous declaration" } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 22 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 22 } */ @property (readwrite) int h; /* Ok */ @property (readonly) int i; /* { dg-warning ".getter. attribute of property .i. conflicts with previous declaration" } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 24 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 24 } */ @property (nonatomic) float j; /* Ok */ @end Index: obj-c++.dg/property/at-property-28.mm =================================================================== --- obj-c++.dg/property/at-property-28.mm (revision 168682) +++ obj-c++.dg/property/at-property-28.mm (working copy) @@ -10,11 +10,11 @@ { Class isa; } -@property (readonly, retain) id property1; /* { dg-warning "originally specified here" } */ -@property (readonly) int property2; /* { dg-warning "originally specified here" } */ -@property (readonly, getter=y) int property3; /* { dg-warning "originally specified here" } */ +@property (readonly, retain) id property1; /* { dg-message "originally specified here" } */ +@property (readonly) int property2; /* { dg-message "originally specified here" } */ +@property (readonly, getter=y) int property3; /* { dg-message "originally specified here" } */ @property (readonly) int property4; /* Ok */ -@property (readonly) int property5; /* { dg-warning "originally specified here" } */ +@property (readonly) int property5; /* { dg-message "originally specified here" } */ @end @interface MyRootClass () Index: obj-c++.dg/property/dynamic-2.mm =================================================================== --- obj-c++.dg/property/dynamic-2.mm (revision 168682) +++ obj-c++.dg/property/dynamic-2.mm (working copy) @@ -40,6 +40,6 @@ @implementation AnotherTest @dynamic one; @dynamic one; /* { dg-error "property .one. already specified in .@dynamic." } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 41 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 41 } */ @dynamic three; /* { dg-error "no declaration of property .three. found in the interface" } */ @end Index: obj-c++.dg/property/synthesize-9.mm =================================================================== --- obj-c++.dg/property/synthesize-9.mm (revision 168682) +++ obj-c++.dg/property/synthesize-9.mm (working copy) @@ -52,12 +52,12 @@ /* This is sometimes OK, sometimes not OK. */ @interface Test2 { - int v; /* { dg-warning "originally specified here" } */ - float w; /* { dg-warning "originally specified here" } */ - id x; /* { dg-warning "originally specified here" } */ + int v; /* { dg-message "originally specified here" } */ + float w; /* { dg-message "originally specified here" } */ + id x; /* { dg-message "originally specified here" } */ Test *y; - id *z; /* { dg-warning "originally specified here" } */ - ClassA *a; /* { dg-warning "originally specified here" } */ + id *z; /* { dg-message "originally specified here" } */ + ClassA *a; /* { dg-message "originally specified here" } */ ClassB *b; } @property (assign, readonly) float v; Index: obj-c++.dg/property/synthesize-11.mm =================================================================== --- obj-c++.dg/property/synthesize-11.mm (revision 168682) +++ obj-c++.dg/property/synthesize-11.mm (working copy) @@ -10,8 +10,8 @@ @interface MyRootClass { Class isa; - int countA : 2; /* { dg-warning "originally specified here" } */ - int countB : 3; /* { dg-warning "originally specified here" } */ + int countA : 2; /* { dg-message "originally specified here" } */ + int countB : 3; /* { dg-message "originally specified here" } */ } + (id) initialize; + (id) alloc; @@ -27,5 +27,5 @@ @synthesize countA; /* { dg-error ".atomic. property .countA. is using bit-field instance variable .countA." } */ @synthesize countB; /* { dg-error "property .countB. is using instance variable .countB. of incompatible type" } */ @end /* { dg-warning "incomplete implementation of class" } */ -/* { dg-warning "method definition for ..setCountA.. not found" "" { target *-*-* } 29 } */ -/* { dg-warning "method definition for ..countA. not found" "" { target *-*-* } 29 } */ +/* { dg-message "method definition for ..setCountA.. not found" "" { target *-*-* } 29 } */ +/* { dg-message "method definition for ..countA. not found" "" { target *-*-* } 29 } */ Index: obj-c++.dg/property/at-property-5.mm =================================================================== --- obj-c++.dg/property/at-property-5.mm (revision 168682) +++ obj-c++.dg/property/at-property-5.mm (working copy) @@ -18,7 +18,7 @@ /* Test various error messages. */ @property id property_a; /* { dg-warning "object property .property.a. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 20 } */ + /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 20 } */ @property int property_b = 4; /* { dg-error "expected" } */ @property (retain) int property_c; /* { dg-error ".retain. attribute is only valid for Objective-C objects" } */ @property (copy) int property_d; /* { dg-error ".copy. attribute is only valid for Objective-C objects" } */ @@ -28,7 +28,7 @@ @property (retain) id property_g; @property (retain) id property_h; @property (retain) id property_e; /* { dg-error "redeclaration of property .property_e." } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 26 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 26 } */ @end @property id test; /* { dg-error "misplaced .@property. Objective-C.. construct" } */ Index: obj-c++.dg/property/property-neg-3.mm =================================================================== --- obj-c++.dg/property/property-neg-3.mm (revision 168682) +++ obj-c++.dg/property/property-neg-3.mm (working copy) @@ -10,5 +10,5 @@ @implementation Person @dynamic firstName; @synthesize firstName; /* { dg-error "property .firstName. already specified in .@dynamic." } */ - /* { dg-warning "originally specified here" "" { target *-*-* } 11 } */ + /* { dg-message "originally specified here" "" { target *-*-* } 11 } */ @end Index: obj-c++.dg/property/at-property-16.mm =================================================================== --- obj-c++.dg/property/at-property-16.mm (revision 168682) +++ obj-c++.dg/property/at-property-16.mm (working copy) @@ -10,16 +10,15 @@ { Class isa; } -@property (assign) id a; /* { dg-warning "originally specified here" } */ -@property (retain) id b; /* { dg-warning "originally specified here" } */ -@property int c; /* { dg-warning "originally specified here" } */ -@property (nonatomic) int d; /* { dg-warning "originally specified here" } */ -/* FIXME: Mysteriously the next 3 need to be 'dg-message' instead of 'dg-warning' for the testcase to work. */ +@property (assign) id a; /* { dg-message "originally specified here" } */ +@property (retain) id b; /* { dg-message "originally specified here" } */ +@property int c; /* { dg-message "originally specified here" } */ +@property (nonatomic) int d; /* { dg-message "originally specified here" } */ @property int e; /* { dg-message "originally specified here" } */ @property int f; /* { dg-message "originally specified here" } */ @property int g; /* { dg-message "originally specified here" } */ @property (readonly) int h; /* Ok */ -@property (readonly,getter=getMe) int i; /* { dg-warning "originally specified here" } */ +@property (readonly,getter=getMe) int i; /* { dg-message "originally specified here" } */ @end @interface MyClass : MyRootClass Index: obj-c++.dg/property/synthesize-8.mm =================================================================== --- obj-c++.dg/property/synthesize-8.mm (revision 168682) +++ obj-c++.dg/property/synthesize-8.mm (working copy) @@ -52,13 +52,13 @@ /* This is not OK. */ @interface Test2 { - int v; /* { dg-warning "originally specified here" } */ - float w; /* { dg-warning "originally specified here" } */ - id x; /* { dg-warning "originally specified here" } */ - Test *y; /* { dg-warning "originally specified here" } */ - id *z; /* { dg-warning "originally specified here" } */ - ClassA *a; /* { dg-warning "originally specified here" } */ - ClassB *b; /* { dg-warning "originally specified here" } */ + int v; /* { dg-message "originally specified here" } */ + float w; /* { dg-message "originally specified here" } */ + id x; /* { dg-message "originally specified here" } */ + Test *y; /* { dg-message "originally specified here" } */ + id *z; /* { dg-message "originally specified here" } */ + ClassA *a; /* { dg-message "originally specified here" } */ + ClassB *b; /* { dg-message "originally specified here" } */ } @property (assign) float v; @property (assign) id w; Index: obj-c++.dg/property/at-property-21.mm =================================================================== --- obj-c++.dg/property/at-property-21.mm (revision 168682) +++ obj-c++.dg/property/at-property-21.mm (working copy) @@ -14,10 +14,10 @@ /* Test the warnings on 'assign' with protocols. */ @property id property_a; /* { dg-warning "object property .property.a. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 16 } */ + /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 16 } */ @property MyRootClass *property_b; /* { dg-warning "object property .property.b. has no .assign., .retain. or .copy. attribute" } */ - /* { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 19 } */ + /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 19 } */ @property Class property_c; /* No 'assign' warning (Classes are static objects so assign semantics do not matter for them). */ @end Index: obj-c++.dg/method-conflict-1.mm =================================================================== --- obj-c++.dg/method-conflict-1.mm (revision 168682) +++ obj-c++.dg/method-conflict-1.mm (working copy) @@ -7,17 +7,17 @@ with the same name but conflicting method signatures. */ @protocol MyProtocol -+ (int) method1: (int)x; /* { dg-error "previous declaration" } */ ++ (int) method1: (int)x; /* { dg-message "previous declaration" } */ + (float) method1: (int)x; /* { dg-error "duplicate declaration of method .\\+method1." } */ -- (int) method2: (int)x; /* { dg-error "previous declaration" } */ +- (int) method2: (int)x; /* { dg-message "previous declaration" } */ - (int) method2: (float)x; /* { dg-error "duplicate declaration of method .\\-method2." } */ @optional -+ (int *) method3: (int)x; /* { dg-error "previous declaration" } */ ++ (int *) method3: (int)x; /* { dg-message "previous declaration" } */ + (int *) method3: (int **)x; /* { dg-error "duplicate declaration of method .\\+method3." } */ -- (id) method4: (id)x; /* { dg-error "previous declaration" } */ +- (id) method4: (id)x; /* { dg-message "previous declaration" } */ - (void) method4: (id)x; /* { dg-error "duplicate declaration of method .\\-method4." } */ @end Index: obj-c++.dg/exceptions-5.mm =================================================================== --- obj-c++.dg/exceptions-5.mm (revision 168682) +++ obj-c++.dg/exceptions-5.mm (working copy) @@ -71,9 +71,9 @@ int test (id object) @try { @throw object; } @catch (MyObject) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ { /* { dg-error "no matching function" "" { target *-*-* } 72 } */ - dummy++; /* { dg-warning "MyObject" "" { target *-*-* } 13 } */ - } /* { dg-warning "candidate" "" { target *-*-* } 13 } */ - /* { dg-warning "candidate" "" { target *-*-* } 72 } */ + dummy++; /* { dg-message "MyObject" "" { target *-*-* } 13 } */ + } /* { dg-message "candidate" "" { target *-*-* } 13 } */ + /* { dg-message "candidate" "" { target *-*-* } 72 } */ @try { @throw object; } @catch (static MyObject *) /* { dg-error "storage class" } */ Index: obj-c++.dg/method-12.mm =================================================================== --- obj-c++.dg/method-12.mm (revision 168682) +++ obj-c++.dg/method-12.mm (working copy) @@ -19,8 +19,8 @@ void foo(void) { Class receiver; [receiver port]; /* { dg-warning "multiple methods named .\\+port. found" } */ - /* { dg-warning "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 9 } */ - /* { dg-warning "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 14 } */ + /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 9 } */ + /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 14 } */ [receiver starboard]; /* { dg-warning "no .\\+starboard. method found" } */ /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 25 } */ Index: obj-c++.dg/encode-7.mm =================================================================== --- obj-c++.dg/encode-7.mm (revision 168682) +++ obj-c++.dg/encode-7.mm (working copy) @@ -26,7 +26,7 @@ @interface Test : Object { float j; } -(void) test2: (int [5])a with: (int [])b; --(id) test3: (Test **)b; /* { dg-warning "previous declaration of .\\-\\(id\\)test3:\\(Test \\*\\*\\)b." } */ +-(id) test3: (Test **)b; /* { dg-message "previous declaration of .\\-\\(id\\)test3:\\(Test \\*\\*\\)b." } */ @end @implementation Test Index: obj-c++.dg/class-extension-3.mm =================================================================== --- obj-c++.dg/class-extension-3.mm (revision 168682) +++ obj-c++.dg/class-extension-3.mm (working copy) @@ -10,8 +10,8 @@ Class isa; int count; } -- (int) test; /* { dg-warning "previous declaration" } */ -@property int count; /* { dg-warning "originally specified here" } */ +- (int) test; /* { dg-message "previous declaration" } */ +@property int count; /* { dg-message "originally specified here" } */ @end @interface MyObject () Index: obj-c++.dg/method-conflict-4.mm =================================================================== --- obj-c++.dg/method-conflict-4.mm (revision 168682) +++ obj-c++.dg/method-conflict-4.mm (working copy) @@ -21,10 +21,10 @@ @end @interface MyClass2 -- (void) aMethod: (id )x; /* { dg-error "previous declaration" } */ +- (void) aMethod: (id )x; /* { dg-message "previous declaration" } */ - (void) aMethod: (id )x; /* { dg-error "duplicate declaration" } */ -- (void) bMethod: (id )x; /* { dg-error "previous declaration" } */ +- (void) bMethod: (id )x; /* { dg-message "previous declaration" } */ - (void) bMethod: (id )x; /* { dg-error "duplicate declaration" } */ - (void) cMethod: (id )x; @@ -33,16 +33,15 @@ - (void) dMethod: (id )x; - (void) dMethod: (id )x; /* Ok */ -/* FIXME: The compiler works, but the testsuite produces errors anyway. */ -/* - (void) eMethod: (id )x; dg-error "previous declaration" */ -/* - (void) eMethod: (id )x; dg-error "duplicate declaration" */ +- (void) eMethod: (id )x; /* { dg-message "previous declaration" } */ +- (void) eMethod: (id )x; /* { dg-error "duplicate declaration" } */ -/*- (void) fMethod: (id )x; dg-error "previous declaration" */ -/*- (void) fMethod: (id )x; dg-error "duplicate declaration" */ +- (void) fMethod: (id )x; /* { dg-message "previous declaration" } */ +- (void) fMethod: (id )x; /* { dg-error "duplicate declaration" } */ -/* - (void) gMethod: (id )x; dg-error "previous declaration" */ -/* - (void) gMethod: (id )x; dg-error "duplicate declaration" */ +- (void) gMethod: (id )x; /* { dg-message "previous declaration" } */ +- (void) gMethod: (id )x; /* { dg-error "duplicate declaration" } */ -/* - (void) hMethod: (id )x; dg-error "previous declaration" */ -/* - (void) hMethod: (id )x; dg-error "duplicate declaration" */ +- (void) hMethod: (id )x; /* { dg-message "previous declaration" } */ +- (void) hMethod: (id )x; /* { dg-error "duplicate declaration" } */ @end Index: obj-c++.dg/method-15.mm =================================================================== --- obj-c++.dg/method-15.mm (revision 168682) +++ obj-c++.dg/method-15.mm (working copy) @@ -32,9 +32,9 @@ { NTGridDataObject *result = [[NTGridDataObject alloc] initWithData:data]; /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } 33 } */ - /* { dg-warning "using .\\-\\(id\\)initWithData:\\(Object \\*\\)data." "" { target *-*-* } 9 } */ - /* { dg-warning "also found .\\-\\(id\\)initWithData:\\(id \\)data." "" { target *-*-* } 17 } */ - /* { dg-warning "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } 13 } */ + /* { dg-message "using .\\-\\(id\\)initWithData:\\(Object \\*\\)data." "" { target *-*-* } 9 } */ + /* { dg-message "also found .\\-\\(id\\)initWithData:\\(id \\)data." "" { target *-*-* } 17 } */ + /* { dg-message "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } 13 } */ /* The following warning is a consequence of picking the "wrong" method signature. */ /* { dg-warning "passing argument 1 of .initWithData:. from distinct Objective\\-C type" "" { target *-*-* } 33 } */ Index: obj-c++.dg/attributes/categ-attribute-2.mm =================================================================== --- obj-c++.dg/attributes/categ-attribute-2.mm (revision 168682) +++ obj-c++.dg/attributes/categ-attribute-2.mm (working copy) @@ -20,7 +20,7 @@ __attribute__ ((deprecated("no dep_categ"))) @end __attribute__ ((deprecated)) -@implementation obj (dep_categ) /* { dg-error "prefix attributes are ignored before" } */ +@implementation obj (dep_categ) /* { dg-warning "prefix attributes are ignored before" } */ - (int) depmth { return var + 1; } @end Index: obj-c++.dg/exceptions-3.mm =================================================================== --- obj-c++.dg/exceptions-3.mm (revision 168682) +++ obj-c++.dg/exceptions-3.mm (working copy) @@ -71,9 +71,9 @@ int test (id object) @try { @throw object; } @catch (MyObject x) /* { dg-error "@catch parameter is not a known Objective-C class type" } */ { /* { dg-error "no matching function" "" { target *-*-* } 72 } */ - dummy++; /* { dg-warning "MyObject" "" { target *-*-* } 13 } */ - } /* { dg-warning "candidate" "" { target *-*-* } 13 } */ - /* { dg-warning "candidate" "" { target *-*-* } 72 } */ + dummy++; /* { dg-message "MyObject" "" { target *-*-* } 13 } */ + } /* { dg-message "candidate" "" { target *-*-* } 13 } */ + /* { dg-message "candidates" "" { target *-*-* } 72 } */ @try { @throw object; } @catch (static MyObject *x) /* { dg-error "storage class" } */ { Index: obj-c++.dg/ivar-invalid-type-1.mm =================================================================== --- obj-c++.dg/ivar-invalid-type-1.mm (revision 168682) +++ obj-c++.dg/ivar-invalid-type-1.mm (working copy) @@ -14,6 +14,6 @@ static int c; /* { dg-error "invalid type" } */ inline int d; /* { dg-error "declared as an .inline." } */ typedef int e; /* { dg-error "invalid type" } */ - __thread int f; /* dg-error "invalid type" */ /* FIXME: The compiler generates this message, but the testsuite does not match it. */ + __thread int f; /* { dg-error "invalid type" } */ } @end Index: obj-c++.dg/method-conflict-2.mm =================================================================== --- obj-c++.dg/method-conflict-2.mm (revision 168682) +++ obj-c++.dg/method-conflict-2.mm (working copy) @@ -11,8 +11,8 @@ @protocol MyProtocol @optional -+ (void) method1: (id)x; /* { dg-error "previous declaration" } */ -- (id) method2: (long)x; /* { dg-error "previous declaration" } */ ++ (void) method1: (id)x; /* { dg-message "previous declaration" } */ +- (id) method2: (long)x; /* { dg-message "previous declaration" } */ @required + (void) method1: (id)x; /* { dg-error "declared .@optional. and .@required. at the same time" } */ @@ -24,8 +24,8 @@ @protocol MyProtocol2 @required -+ (void) method3: (Class)x; /* { dg-error "previous declaration" } */ -- (id *) method4: (long)x; /* { dg-error "previous declaration" } */ ++ (void) method3: (Class)x; /* { dg-message "previous declaration" } */ +- (id *) method4: (long)x; /* { dg-message "previous declaration" } */ @optional + (void) method3: (Class)x; /* { dg-error "declared .@optional. and .@required. at the same time" } */ Index: obj-c++.dg/method-4.mm =================================================================== --- obj-c++.dg/method-4.mm (revision 168682) +++ obj-c++.dg/method-4.mm (working copy) @@ -7,13 +7,13 @@ #include @interface Base -- (id) meth1: (Base *)arg1; /* { dg-warning "using .\\-\\(id\\)meth1:\\(Base \\*\\)arg1." } */ -- (id) window; /* { dg-warning "using .\\-\\(id\\)window" } */ +- (id) meth1: (Base *)arg1; /* { dg-message "using .\\-\\(id\\)meth1:\\(Base \\*\\)arg1." } */ +- (id) window; /* { dg-message "using .\\-\\(id\\)window" } */ @end @interface Derived: Base -- (id) meth1: (Derived *)arg1; /* { dg-warning "also found .\\-\\(id\\)meth1:\\(Derived \\*\\)arg1." } */ -- (Base *) window; /* { dg-warning "also found .\\-\\(Base \\*\\)window." } */ +- (id) meth1: (Derived *)arg1; /* { dg-message "also found .\\-\\(id\\)meth1:\\(Derived \\*\\)arg1." } */ +- (Base *) window; /* { dg-message "also found .\\-\\(Base \\*\\)window." } */ @end void foo(void) { Index: obj-c++.dg/proto-lossage-4.mm =================================================================== --- obj-c++.dg/proto-lossage-4.mm (revision 168682) +++ obj-c++.dg/proto-lossage-4.mm (working copy) @@ -40,7 +40,7 @@ long foo(void) { receiver += [objrcvr2 someValue]; receiver += [objrcvr2 anotherValue]; receiver += [(Obj *)objrcvr2 someValue]; /* { dg-warning ".Obj. may not respond to .\\-someValue." } */ -/* { dg-warning "invalid conversion" "" { target *-*-* } 42 } */ +/* { dg-error "invalid conversion" "" { target *-*-* } 42 } */ receiver += [(Obj *)objrcvr2 anotherValue]; Index: obj-c++.dg/method-13.mm =================================================================== --- obj-c++.dg/method-13.mm (revision 168682) +++ obj-c++.dg/method-13.mm (working copy) @@ -20,8 +20,8 @@ id foo(void) { /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 18 } */ /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 18 } */ [obj2 setWindow:nil]; /* { dg-warning "multiple methods named .\\-setWindow:. found" } */ - /* { dg-warning "using .\\-\\(void\\)setWindow:\\(Object \\*\\)wdw." "" { target *-*-* } 8 } */ - /* { dg-warning "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } 12 } */ + /* { dg-message "using .\\-\\(void\\)setWindow:\\(Object \\*\\)wdw." "" { target *-*-* } 8 } */ + /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } 12 } */ return obj; } Index: obj-c++.dg/class-protocol-1.mm =================================================================== --- obj-c++.dg/class-protocol-1.mm (revision 168682) +++ obj-c++.dg/class-protocol-1.mm (working copy) @@ -326,8 +326,8 @@ testComptypes(void) objP1 == cls; /* { dg-warning "lacks a cast" } */ } { /* id , non-ObjC */ - num == objP1; /* { dg-warning "between pointer" } */ - objP1 == num; /* { dg-warning "between pointer" } */ + num == objP1; /* { dg-error "between pointer" } */ + objP1 == num; /* { dg-error "between pointer" } */ ptr == objP1; objP1 == ptr; @@ -352,8 +352,8 @@ testComptypes(void) clsP1 == cls; } { /* Class , non-ObjC */ - num == clsP1; /* { dg-warning "between pointer" } */ - clsP1 == num; /* { dg-warning "between pointer" } */ + num == clsP1; /* { dg-error "between pointer" } */ + clsP1 == num; /* { dg-error "between pointer" } */ ptr == clsP1; clsP1 == ptr; Index: obj-c++.dg/tls/diag-5.mm =================================================================== --- obj-c++.dg/tls/diag-5.mm (revision 168682) +++ obj-c++.dg/tls/diag-5.mm (working copy) @@ -1,4 +1,4 @@ /* __thread specifiers on empty declarations. */ /* { dg-require-effective-target tls } */ -__thread struct foo; /* { dg-warning "qualifiers can only be specified for objects and functions" } */ +__thread struct foo; /* { dg-error "qualifiers can only be specified for objects and functions" } */ Index: obj-c++.dg/method-16.mm =================================================================== --- obj-c++.dg/method-16.mm (revision 168682) +++ obj-c++.dg/method-16.mm (working copy) @@ -25,9 +25,9 @@ void foo(void) { id obj1, obj2 = 0; obj2 = [obj1 initWithData: obj2]; /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } 26 } */ - /* { dg-warning "using .\\-\\(void\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 13 } */ - /* { dg-warning "also found .\\-\\(id\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 17 } */ - /* { dg-warning "also found .\\-\\(id\\)initWithData:\\(Object2 \\*\\)data." "" { target *-*-* } 21 } */ + /* { dg-message "using .\\-\\(void\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 13 } */ + /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 17 } */ + /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object2 \\*\\)data." "" { target *-*-* } 21 } */ /* The following error is a consequence of picking the "wrong" method signature. */ /* { dg-error "void value not ignored as it ought to be" "" { target *-*-* } 26 } */