[cfe-dev] clang_parseTranslationUnit2 passes on incomplete type error
Jiri Olsa via cfe-dev
cfe-dev at lists.llvm.org
Mon Apr 29 05:14:08 PDT 2019
On Mon, Apr 29, 2019 at 01:48:42PM +0200, Milian Wolff wrote:
> On Thursday, April 18, 2019 3:14:46 PM CEST Jiri Olsa via cfe-dev wrote:
> > hi,
> > when using clang_parseTranslationUnit2 to compile uncomplete
> > struct declaration, like:
> >
> > struct a {
> > int a;
> > int b;
> > struct c c;
> > };
> >
> > I'm getting just warning on terminal but no error on the call itself:
> >
> > $ ./test
> > definitions.h:1:35: error: field has incomplete type 'struct c'
> > definitions.h:1:33: note: forward declaration of 'struct c'
> > Clang error 0
> >
> > Is there a way (some flag perhaps) to make this fail on this input,
> > or do I need to call clang_visitChildren and check the fields offsets
> > and sizes, because those seem mangled, offsets are zero and size -2.
> >
> > I'm new to this, so I might be missing something obvious ;-)
>
> Hey Jirka,
>
> I think clang_parseTranslationUnit2 only returns an error when something
> seriously failed. But it won't return an error on "normal" source input
> errors. Instead, you'll get diagnostics for those. So in your case, I suggest
> you iterate over the diagnostics (cf. clang_getNumDiagnostics and
> clang_getDiagnostic), then check clang_getDiagnosticSeverity for every
> diagnostic and error-our when you encounter an error.
ok, I was hoping for some magical flag to force it that I overlooked ;-)
I'll check on the diagnostics iteration then
thanks,
jirka
More information about the cfe-dev
mailing list