[PATCH] D32751: [ASTImporter] Support new kinds of declarations (mostly Using*)
Aleksei Sidorin via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 15 09:37:05 PDT 2017
a.sidorin added inline comments.
Comment at: lib/AST/ASTImporter.cpp:2993
+ return nullptr;
> nit: As I see these cases typically handled in the way:
> FrPattern = .;
> ToPattern = ..;
> if(FrPattern && !ToPattern)
> Just to avoid the nested ifstmt.
The logic is a bit more complicated. There are 3 cases:
# Both `FromPattern` and `ToPattern` are `nullptr`s. Just continue.
# `FromPattern` is non-null and `ToPattern` is null. Return error (`nullptr`).
# Both `FromPattern` and `ToPattern` are `nullptr`s. Do the `set...` action.
So, it will require nested `if`s or a code like:
if (FromPattern && ToPattern)
if (FromPattern && !ToPattern)
Comment at: lib/AST/ASTImporter.cpp:3000
+ // FIXME: We return a nullptr here but the definition is already created
+ // and available with lookups. How to fix this?..
> I dont see the problem with moving these up , collect nad investigate them in a smallset before the Create function, then adding them to the created ToUsing decl. It could be done as a follow up patch, dont want to mark it as a blocking issue.
There is a chicken and egg problem: both UsingShadowDecl and UsingDecl reference each other and UsingShadowDecl gets referenced UsingDecl as a ctor argument. If you have a good idea on how to resolve this dependency correctly, please point me.
More information about the cfe-commits