4 ms·
It's strange, but I cannot make it work. I did this: cargo install ast-grep Then I'm searching in my code with: $ sg --pattern 'catch (...) { $$$ARG
by zX41ZdbW 3y ago
It's strange, but I cannot make it work.
I did this:
cargo install ast-grep
Then I'm searching in my code with:
$ sg --pattern 'catch (...) { $$$ARGS }' --lang c++
./Server/TCPHandler.cpp
657│ catch (...)
658│ {
659│ state.io.onException();
660│ exception = std::make_unique<DB::Exception>(ErrorCodes::UNKNOWN_EXCEPTION, "Unknown exception");
661│ }
But there should be more than one result.
It also does not work in Playground: https://ast-grep.github.io/playground.html#eyJtb2RlIjoiUGF0Y2giLCJsYW5nIjoiY3BwIiwicXVlcnkiOiJjYXRjaCAoLi4uKSB7ICQkJEFSR1MgfVxuIiwicmV3cml0ZSI6InRlc3QiLCJjb25maWciOiIjIFlBTUwgUnVsZSBpcyBtb3JlIHBvd2VyZnVsIVxuIyBodHRwczovL2FzdC1ncmVwLmdpdGh1Yi5pby9ndWlkZS9ydWxlLWNvbmZpZy5odG1sI3J1bGVcbnJ1bGU6XG4gIGFueTpcbiAgICAtIHBhdHRlcm46IGNvbnNvbGUubG9nKCRBKVxuICAgIC0gcGF0dGVybjogY29uc29sZS5kZWJ1ZygkQSlcbmZpeDpcbiAgbG9nZ2VyLmxvZygkQSkiLCJzb3VyY2UiOiIgICAgdHJ5XG4gICAge1xuICAgICAgICBpZiAodGhyZWFkX2dyb3VwKVxuICAgICAgICAgICAgQ3VycmVudFRocmVhZDo6YXR0YWNoVG9Hcm91cCh0aHJlYWRfZ3JvdXApO1xuXG4gICAgICAgIGRhdGEuZXhlY3V0b3ItPmV4ZWN1dGUobnVtX3RocmVhZHMsIGNvbmN1cnJlbmN5X2NvbnRyb2wpO1xuICAgIH1cbiAgICBjYXRjaCAoLi4uKVxuICAgIHtcbiAgICAgICAgZGF0YS5leGNlcHRpb24gPSBzdGQ6OmN1cnJlbnRfZXhjZXB0aW9uKCk7XG4gICAgICAgIGRhdGEuaGFzX2V4Y2VwdGlvbiA9IHRydWU7XG4gICAgfVxuIn0= https://ast-grep.github.io/playground.html#eyJtb2RlIjoiUGF0Y...
- herrington_d 3y agoHi, thanks for giving ast-grep a try. Pattern code must be valid code that tree-sitter can parse.[0] You can use this syntax `try { $$$CODE } catch ($$$E) { $$$HANDLE }`[1] [0] https://ast-grep.github.io/guide/pattern-syntax.html#pattern-matching https://ast-grep.github.io/guide/pattern-syntax.html#pattern... [1] https://ast-grep.github.io/playground.html#eyJtb2RlIjoiUGF0Y2giLCJsYW5nIjoiY3BwIiwicXVlcnkiOiJ0cnkgeyAkJCRDT0RFIH0gY2F0Y2ggKCQkJEUpIHsgJCQkSEFORExFIH0iLCJyZXdyaXRlIjoidGVzdCIsImNvbmZpZyI6IiMgWUFNTCBSdWxlIGlzIG1vcmUgcG93ZXJmdWwhXG4jIGh0dHBzOi8vYXN0LWdyZXAuZ2l0aHViLmlvL2d1aWRlL3J1bGUtY29uZmlnLmh0bWwjcnVsZVxucnVsZTpcbiAgYW55OlxuICAgIC0gcGF0dGVybjogY29uc29sZS5sb2coJEEpXG4gICAgLSBwYXR0ZXJuOiBjb25zb2xlLmRlYnVnKCRBKVxuZml4OlxuICBsb2dnZXIubG9nKCRBKSIsInNvdXJjZSI6IiAgICB0cnlcbiAgICB7XG4gICAgICAgIGlmICh0aHJlYWRfZ3JvdXApXG4gICAgICAgICAgICBDdXJyZW50VGhyZWFkOjphdHRhY2hUb0dyb3VwKHRocmVhZF9ncm91cCk7XG5cbiAgICAgICAgZGF0YS5leGVjdXRvci0+ZXhlY3V0ZShudW1fdGhyZWFkcywgY29uY3VycmVuY3lfY29udHJvbCk7XG4gICAgfVxuICAgIGNhdGNoICguLi4pXG4gICAge1xuICAgICAgICBkYXRhLmV4Y2VwdGlvbiA9IHN0ZDo6Y3VycmVudF9leGNlcHRpb24oKTtcbiAgICAgICAgZGF0YS5oYXNfZXhjZXB0aW9uID0gdHJ1ZTtcbiAgICB9XG4ifQ== https://ast-grep.github.io/playground.html#eyJtb2RlIjoiUGF0Y...
- zX41ZdbW 3y agoThank you! You saved me :) Although it is non-obvious, which AST fragments are considered valid and which are not.