================
@@ -142,6 +142,14 @@ NamedDecl *Parser::ParseCXXInlineMethodDef(
       SkipUntil(tok::semi);
     }
 
+    if (FunctionDecl *FD =
+            dyn_cast_if_present<FunctionDecl>(FnD->getPreviousDecl())) {
+      if (isa<CXXRecordDecl>(FD->getLexicalDeclContext()) ||
+          Actions.getDefaultedFunctionKind(FD).asComparison() ==
+              Sema::DefaultedComparisonKind::None)
----------------
a-tarasyuk wrote:

@zyn0217, thanks for the feedback. 

> 1. we have to check the semantics on the parser side 

The `ParseCXXInlineMethodDef` method handles function redefinitions

https://github.com/llvm/llvm-project/blob/dde00f5e22e81ac88b37d1502d2383985a58329d/clang/lib/Parse/ParseCXXInlineMethods.cpp#L70

https://github.com/llvm/llvm-project/blob/dde00f5e22e81ac88b37d1502d2383985a58329d/clang/lib/Parse/ParseCXXInlineMethods.cpp#L170-L174

however, it appears to skip over `= default` and `= delete` cases without any 
specific handling

https://github.com/llvm/llvm-project/blob/dde00f5e22e81ac88b37d1502d2383985a58329d/clang/lib/Parse/ParseCXXInlineMethods.cpp#L145

I believe these cases can also be addressed at this stage. Alternatively, 
consider extending

https://github.com/llvm/llvm-project/blob/e35cc2d387e170d0e1f6ef647f17423262feb1ea/clang/lib/Sema/SemaDeclCXX.cpp#L7711

and adding a similar check for `deleted` functions... not sure about this 
alternative

> we have to special-case the comparison operators

for cases involving _comparison operators_, for `delete` and `default`, there 
are more specific diagnostics 

https://github.com/llvm/llvm-project/blob/e35cc2d387e170d0e1f6ef647f17423262feb1ea/clang/lib/Sema/SemaDeclCXX.cpp#L9096-L9140

if cases like _comparisons_ or _declarations outside of scope_ are not skipped, 
these diagnostics will be replaced with a general redefinition diagnostic 
message

https://github.com/llvm/llvm-project/blob/e35cc2d387e170d0e1f6ef647f17423262feb1ea/clang/test/CXX/class/class.compare/class.compare.default/p1.cpp#L195-L199























https://github.com/llvm/llvm-project/pull/136717
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to