forked from OSchip/llvm-project
objective-C modern translator: Fixes a mistranslation
of @throw statement by finding location of the ';' correctly. // rdar://13186010 llvm-svn: 174898
This commit is contained in:
parent
6ad180cf35
commit
b0fdab26d1
|
@ -2093,7 +2093,9 @@ Stmt *RewriteModernObjC::RewriteObjCThrowStmt(ObjCAtThrowStmt *S) {
|
|||
assert((*wBuf == 'w') && "@throw: can't find 'w'");
|
||||
ReplaceText(startLoc, wBuf-startBuf+1, buf);
|
||||
|
||||
const char *semiBuf = strchr(startBuf, ';');
|
||||
SourceLocation endLoc = S->getLocEnd();
|
||||
const char *endBuf = SM->getCharacterData(endLoc);
|
||||
const char *semiBuf = strchr(endBuf, ';');
|
||||
assert((*semiBuf == ';') && "@throw: can't find ';'");
|
||||
SourceLocation semiLoc = startLoc.getLocWithOffset(semiBuf-startBuf);
|
||||
if (S->getThrowExpr())
|
||||
|
|
|
@ -65,3 +65,29 @@ int main()
|
|||
}
|
||||
}
|
||||
@end
|
||||
|
||||
// rdar://13186010
|
||||
@class NSDictionary, NSException;
|
||||
@class NSMutableDictionary;
|
||||
|
||||
@interface NSString
|
||||
+ (id)stringWithFormat:(NSString *)format, ... ;
|
||||
@end
|
||||
|
||||
@interface NSException
|
||||
+ (NSException *)exceptionWithName:(NSString *)name reason:(NSString *)reason userInfo:(NSDictionary *)userInfo;
|
||||
@end
|
||||
id *_imp__NSInvalidArgumentException;
|
||||
|
||||
@interface NSSetExpression @end
|
||||
|
||||
@implementation NSSetExpression
|
||||
-(id)expressionValueWithObject:(id)object context:(NSMutableDictionary*)bindings {
|
||||
id leftSet;
|
||||
id rightSet;
|
||||
@throw [NSException exceptionWithName: *_imp__NSInvalidArgumentException reason: [NSString stringWithFormat: @"Can't evaluate set expression; left subexpression not a set (lhs = %@ rhs = %@)", leftSet, rightSet] userInfo: 0];
|
||||
|
||||
return leftSet ;
|
||||
}
|
||||
@end
|
||||
|
||||
|
|
Loading…
Reference in New Issue