This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Your 'Class <Protocol>' Work


David, et al,

Sorry for the delay. Attached please find a patch (_with_ ChangeLogs, this time) that
addresses some of the concerns you raised.


I say "some" because the compiler will still warn that "no `+foo' method found" in
some situations where you probably think it shouldn't (see class-protocol-1.m). The
reason that I left things in this state is that I'd like to attack these superfluous
messages with a separate patch that enhances how protocols get used for message
lookup. Because these enhancements will affect cases other than just 'Class <Protocol>',
they deserve a separate e-mail thread and discussion, which I will start forthwith.


For now, though, it would be great if you could take the current patch for a spin.

Thanks,

--Zem

[gcc/ChangeLog]
2004-10-11  David Ayers  <d.ayers@inode.at>

	* c-common.h: Remove RID_ID.
	* c-parse.in: Remove OBJECTNAME and references to RID_ID.
	(typespec_reserved_attr): Add rule for TYPENAME
	non_empty_protocolrefs.
	(yylexname): Remove special handling of RID_ID.

[gcc/objc/ChangeLog]
2004-10-11  Ziemowit Laski  <zlaski@apple.com>
	    David Ayers  <d.ayers@inode.at>

	* objc-act.c (objc_comptypes): Use IS_PROTOCOL_QUALIFIED_UNTYPED
	instead of IS_PROTOCOL_QUALIFIED_ID; add comparisons for:
	'Class <Protocol> != id <Protocol>'; 'Class <Protocol> != <class> *';
	'Class <Protocol> != id'; 'Class <Protocol> = Class'.
	(objc_is_id): Add test for 'super'.
	(objc_finish_message_expr): Allow for messaging of 'Class <Proto>'
	receivers; if class methods are not found in protocol lists, search
	for instance methods therein and warn if one is found.  Look in
	global hash tables for suitable method as a last resort when messaging
	'id <Proto>', 'Class <Proto>' and invalid receiver types.
	* objc-act.h (IS_PROTOCOL_QUALIFIED_ID): Rename to
	IS_PROTOCOL_QUALIFIED_UNTYPED and allow for 'Class <Proto>' in
	addition to 'id <Proto>'.

[gcc/testsuite/ChangeLog]
2004-10-11  David Ayers  <d.ayers@inode.at>
	    Ziemowit Laski  <zlaski@apple.com>

	* objc.dg/call-super-2.m: Add messages to 'Class <Proto>'; update
	diagnostics when messaging 'id <Proto>'.
	* objc.dg/class-protocol-1.m: New test.
	* objc.dg/desig-init-1.m: Add message to an invalid receiver using
	a non-existent method signature.
	* objc.dg/method-5.m, objc.dg/method-6.m, objc.dg/proto-hier-1.m:
	Update diagnostics when messaging with non-existent method signature.
	* objc.dg/proto-lossage-1.m, objc.dg/proto-lossage-4.m: Messages to
	invalid receivers are now resolved as if messaging 'id'; remove
	extraneous diagnostics.

Attachment: objc.20041011.diff.gz
Description: GNU Zip compressed data



--------------------------------------------------------------
Ziemowit Laski                 1 Infinite Loop, MS 301-2K
Mac OS X Compiler Group        Cupertino, CA USA  95014-2083
Apple Computer, Inc.           +1.408.974.6229  Fax .5477

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]