Clang ast: Как я могу посетить одно сообщение об ошибке - PullRequest
0 голосов
/ 25 февраля 2020

Код:

//ViewController.h
@interface ViewController : UIViewController
@end

//ViewController.m
@implementation ViewController

- (void)viewDidLoad {
    [self notExistMethod];//the method don't exist!
}

@end

RecursiveASTVisitor

bool VisitObjCMessageExpr(ObjCMessageExpr *messageExpr) {
    string selectorName =  messageExpr->getSelector().getAsString();
    cout << "message selector:" << selectorName << endl;
    return true;
}

Я получаю ошибку:

message selector::respondsToSelector:
message selector::currentDevice
message selector::userInterfaceIdiom
message selector::currentDevice
/Users/fenglihai/Desktop/Demo/Demo/ViewController.m:25:11: error: no visible @interface for 'SubViewController' declares the selector
      'notExistMethod'
    [self notExistMethod];//the method don't exist!
     ~~~~ ^~~~~~~~~~~~~~
message selector::respondsToSelector:
message selector::currentDevice
message selector::userInterfaceIdiom
message selector::currentDevice
message selector::existMethod
1 error generated.
Error while processing /Users/fenglihai/Desktop/Demo/Demo/ViewController.m.

Моя проблема заключается в том, что при возникновении ошибки компиляции в мой код, то есть я вызываю несуществующий метод [self notExistMethod]; Однако я все еще хочу захватить это выражение сообщения в обратном вызове bool VisitObjCMessageExpr (ObjCMessageExpr * messageExpr). На самом деле, сообщение не перезвонило. Итак, что мне делать?

...