diff options
Diffstat (limited to 'clang/lib/ARCMigrate/Transforms.h')
| -rw-r--r-- | clang/lib/ARCMigrate/Transforms.h | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/clang/lib/ARCMigrate/Transforms.h b/clang/lib/ARCMigrate/Transforms.h index 4ff35a5daf0..540426b81a2 100644 --- a/clang/lib/ARCMigrate/Transforms.h +++ b/clang/lib/ARCMigrate/Transforms.h @@ -79,14 +79,26 @@ public: }; class MigrationContext { - MigrationPass &Pass; std::vector<ASTTraverser *> Traversers; public: + MigrationPass &Pass; + + struct GCAttrOccurrence { + enum AttrKind { Weak, Strong } Kind; + SourceLocation Loc; + QualType ModifiedType; + Decl *Dcl; + /// \brief true if the attribute is owned, e.g. it is in a body and not just + /// in an interface. + bool FullyMigratable; + }; + std::vector<GCAttrOccurrence> GCAttrs; + + llvm::DenseSet<unsigned> AttrSet; + explicit MigrationContext(MigrationPass &pass) : Pass(pass) {} ~MigrationContext(); - - MigrationPass &getPass() { return Pass; } typedef std::vector<ASTTraverser *>::iterator traverser_iterator; traverser_iterator traversers_begin() { return Traversers.begin(); } @@ -108,6 +120,11 @@ public: // GC transformations +class GCAttrsTraverser : public ASTTraverser { +public: + virtual void traverseTU(MigrationContext &MigrateCtx); +}; + class GCCollectableCallsTraverser : public ASTTraverser { public: virtual void traverseBody(BodyContext &BodyCtx); |

