================ @@ -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