nickdesaulniers added inline comments.

================
Comment at: clang/lib/Sema/SemaDecl.cpp:18891
+        // incomplete definition.
+        if (const auto *RD = dyn_cast<RecordDecl>(D))
+          return !RD->isCompleteDefinition();
----------------
nickdesaulniers wrote:
> void wrote:
> > nickdesaulniers wrote:
> > > what about `EnumDecl`s? I suspect the shared common base `TagDecl` might 
> > > be better to use?
> > > 
> > > If it is, can you add a test?  I'm guessing
> > > 
> > > ```
> > > struct foo {
> > >   enum havent_seen_yet;
> > >   enum havent_seen_yet2;
> > > }
> > > ```
> > > would be the test case.
> > Would testing for a `TagDecl` be better here?
> I think so; common shared base and same logic for both cases here.  Unless 
> there's something other than RecordDecl and EnumDecl where this shouldn't 
> apply.
> Unless there's something other than RecordDecl and EnumDecl where this 
> shouldn't apply.

The `TagDecl` constructor is only called from the `RecordDecl` and `EnumDecl` 
constructors.  So I think it's simpler to just check `TagDecl` base type rather 
than each of the two derived types.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D143300/new/

https://reviews.llvm.org/D143300

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to