erichkeane added a comment.

Hmm... So I don't see us being able to change how we create `FunctionDecl`s, 
the way we are doing it with a 'build up to the final thing' is about all we 
can do.  However, it should never escape its 'creation' functions without its 
type set.

IF I were to design this from scratch, I probably would have designed a 
`FunctionDeclBuilder` type thing that modeled a `FunctionDecl`, but asserted 
when being `finalized` (to get the `FunctionDecl` from it) if it wasn't 
complete.  However, we don't really have anything that models that in this 
codebase, and I'm not sure we really want to add something like that...

I don't recall the case of a Null type being valid for functions (perhaps Aaron 
does?  Or perhaps its an error condition?).  But otherwise, I would expect 
`FunctionDecl` to have a type as soon as it escapes the function responsible 
for 'making' it (that is, the one that calls the ::Create and is filling in 
everything).  If that patch added a path that doesn't set the return type, 
perhaps we should just fix that?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D149733

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

Reply via email to