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

Reply via email to