[LLVMbugs] [Bug 12563] New: Add @switch and @case options to Objective-C
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Sun Apr 15 16:10:09 PDT 2012
http://llvm.org/bugs/show_bug.cgi?id=12563
Bug #: 12563
Summary: Add @switch and @case options to Objective-C
Product: new-bugs
Version: unspecified
Platform: Macintosh
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P
Component: new bugs
AssignedTo: unassignedbugs at nondot.org
ReportedBy: garywade at desisoftsystems.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
I often have code sequences like the following (these are contrived examples,
not actual ones) that could be optimized by the compiler if it supported a
@switch and @case mechanism:
if ([thisNSString isEqualToString:@"firstStringToCheck"])
{
[self doSomethingForFirst];
}
else if ([thisNSString isEqualToString:@"secondStringToCheck"])
{
[self doSomethingForSecond];
}
else if ([thisNSString isEqualToString:@"thirdStringToCheck"])
{
[self doSomethingForThird];
}
else if ([thisNSString isEqualToString:@"fourthStringToCheck"])
{
[self doSomethingForFourth];
}
else
{
[self doSomethingForDefault];
}
If @switch/@case were supported, this could be turned into the following in the
source:
@switch (thisNSString)
{
@case @"firstStringToCheck":
{
[self doSomethingForFirst];
@break;
}
@case @"secondStringToCheck":
{
[self doSomethingForSecond];
@break;
}
@case @"thirdStringToCheck":
{
[self doSomethingForThird];
@break;
}
@case @"fourthStringToCheck":
{
[self doSomethingForFourth];
@break;
}
@default:
{
[self doSomethingForDefault];
@break;
}
}
And the runtime could just pull the method to call for the setup of the @switch
and not have to do that for each succeeding failure test. This could be
extended for NSNumber objects to allow non-integer numeric literals be @case
tests:
@case 2.5d:
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list