balazske added inline comments.
================ Comment at: lib/AST/ASTImporter.cpp:3046 + if (!D->doesThisDeclarationHaveABody()) + return cast<Decl>(const_cast<FunctionDecl *>(FoundByLookup)); + else { ---------------- The `cast<Decl>` should not be needed here (and is not done at the other return places). The `const_cast` can be omitted too (`FoundByLookup` is not const now). ================ Comment at: unittests/AST/ASTImporterTest.cpp:2243 + auto BP = cxxMethodDecl(hasName("f"), hasParent(cxxRecordDecl(hasName("B")))); + auto DP = cxxMethodDecl(hasName("f"), hasParent(cxxRecordDecl(hasName("D")))); + ---------------- I think names like `BP` and `BFP ` could be better (`P` should stand for "Pattern" and always the last part of the name, so use `BFP` and `BFIsDefP`). And for storing `B::F` a `BF` can be better name than `B`. ================ Comment at: unittests/AST/ASTImporterTest.cpp:2260 +TEST_P(ImportFunctions, ImportOverriddenMethodTwiceDefinitionFirst) { + auto CodeWithOutDef = + R"( ---------------- Use `CodeWithoutDef`. ================ Comment at: unittests/AST/ASTImporterTest.cpp:2312 + auto DFP = + cxxMethodDecl(hasName("f"), hasParent(cxxRecordDecl(hasName("D")))); + ---------------- It is ensured only by `FirstDeclMatcher` that not the definition is found (this pattern may match the definition too) for `BFP`. It may be more accurate to include in the pattern that this is not a definition. ================ Comment at: unittests/AST/ASTImporterTest.cpp:2325 + EXPECT_EQ(DeclCounter<FunctionDecl>().match(ToTU, BFP), 1u); + EXPECT_EQ(DeclCounter<FunctionDecl>().match(ToTU, BFPIsDef), 0u); + ---------------- For the out-of-class definition the `hasParent(cxxRecordDecl(hasName("B")))` does not match? (Otherwise this count should be 1.) ================ Comment at: unittests/AST/ASTImporterTest.cpp:2344 + +TEST_P(ImportFunctions, ImportOverriddenMethodTwiceOutOfClassDefTwoTUs) { + auto CodeTU0 = ---------------- The previous tests use two TUs too so the name for this is not exact (here the code is different, maybe use `ImportOverriddenMethodTwiceOutOfClassDefInSeparateCode`?). This test does roughly the same as `ImportOverriddenMethodTwiceDefinitionFirst` but with the definition last and out-of-class version. (Name can be `ImportOverriddenMethodTwiceOutOfClassDefLast` too.) I am not sure why is the `foo` used here (`B::F` can be imported instead). ================ Comment at: unittests/AST/ASTImporterTest.cpp:2366 + auto DFPIsDef = cxxMethodDecl( + hasName("f"), hasParent(cxxRecordDecl(hasName("B"))), isDefinition()); + auto FooDef = functionDecl(hasName("foo")); ---------------- `hasName("B")` is wrong here, should be "D"? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D56936/new/ https://reviews.llvm.org/D56936 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits