mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
For-range in replacement logic (#631)
This replaces GetAstMatcher with AddMatcher because cxxForRangeStmt is a StatementMatcher. addMatcher has multiple definitions (https://clang.llvm.org/doxygen/classclang_1_1ast__matchers_1_1MatchFinder.html) and so this approach allows using the right addMatcher without writing per-call overloads. To handle the `var`, I'm considering something like moving VarDecl logic into a VarMatcherBase so that I can just use CXXForRangeStmt's getLoopVariable. The problem is a for-range statement has multiple VarDecls, and getLoopVariable may be the easiest way to identify the real one.
This commit is contained in:
@@ -11,6 +11,7 @@ cc_binary(
|
||||
srcs = ["main.cpp"],
|
||||
deps = [
|
||||
":fn_inserter",
|
||||
":for_range",
|
||||
":var_decl",
|
||||
"@llvm-project//clang:tooling",
|
||||
],
|
||||
@@ -62,6 +63,24 @@ cc_test(
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "for_range",
|
||||
srcs = ["for_range.cpp"],
|
||||
hdrs = ["for_range.h"],
|
||||
deps = [":matcher"],
|
||||
)
|
||||
|
||||
cc_test(
|
||||
name = "for_range_test",
|
||||
srcs = ["for_range_test.cpp"],
|
||||
deps = [
|
||||
":for_range",
|
||||
":matcher_test_base",
|
||||
"@llvm-project//clang:tooling",
|
||||
"@llvm-project//llvm:gtest_main",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "var_decl",
|
||||
srcs = ["var_decl.cpp"],
|
||||
|
||||
Reference in New Issue
Block a user