Refactor to avoid explicitly listing all the different flavours of redeclarable declarations, and duplicating code between them.
Refactor to avoid explicitly listing all the different flavours of redeclarable
declarations, and duplicating code between them.


git-svn-id: ffe668792ed300d6c2daa1f6eba2e0aa28d7ec6c@208662 91177308-0d34-0410-b5e6-96231b3b80d8

apple/swift-clang,apple/swift-clang,apple/swift-clang,llvm-mirror/clang,llvm-mirror/clang,llvm-mirror/clang,apple/swift-clang,llvm-mirror/clang,llvm-mirror/clang,apple/swift-clang,llvm-mirror/clang,apple/swift-clang,llvm-mirror/clang,apple/swift-clang,llvm-mirror/clang,apple/swift-clang,apple/swift-clang,apple/swift-clang,llvm-mirror/clang,llvm-mirror/clang