http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47077
Summary: ICE on invalid code (method implementation outside of
implementation context)
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: objc
AssignedTo: [email protected]
ReportedBy: [email protected]
Here is a minimal testcase --
- (int) method: (int)argument
{
return argument;
}
The crash is due to the fact that, when we find a method outside an
implementation context, we don't even create a function context. So, all the
code in the method will be parsed in a void and crash the compiler at the first
reference to the local bind or such like.
We most likely ought to review the code start/closing the method, and if the
method is outside of an implementation context, start/close it normally but
without associating it with a class. I suppose 'self' could be set to be of
type 'id'.
Thanks