D31187: Fix removal of out-of-line definitions.
authorVassil Vassilev <v.g.vassilev@gmail.com>
Tue, 20 Jun 2017 14:59:57 +0000 (14:59 +0000)
committerVassil Vassilev <v.g.vassilev@gmail.com>
Tue, 20 Jun 2017 14:59:57 +0000 (14:59 +0000)
commit130156f32c5c7a9de4278d1607d552b6e8b665a4
tree694eb54e20ca7c3c3707bab008b08987a6f26786
parent65043f330617de8cc3740da0448c7e12110589b0
D31187: Fix removal of out-of-line definitions.

Consider:

struct MyClass {
  void f() {}
}
MyClass::f(){} // expected error redefinition of f. #1

Some clients (eg. cling) need to call removeDecl for the redefined (#1) decl.

This patch enables us to remove the lookup entry is registered in the semantic
decl context and not in the primary decl context of the lexical decl context
where we currently are trying to remove it from.

It is not trivial to test this piece and writing a full-blown unit test seems
too much.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@305799 91177308-0d34-0410-b5e6-96231b3b80d8
lib/AST/DeclBase.cpp