deterministic when faced with an ambiguity. This eliminates the
annoying test/SemaCXX/using-directive.cpp failure.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68952
91177308-0d34-0410-b5e6-
96231b3b80d8
for (LookupResult::iterator Res = Result.begin(), ResEnd = Result.end();
Res != ResEnd; ++Res) {
if (isa<TypeDecl>(*Res) || isa<ObjCInterfaceDecl>(*Res)) {
- IIDecl = *Res;
- break;
+ if (!IIDecl ||
+ (*Res)->getLocation().getRawEncoding() <
+ IIDecl->getLocation().getRawEncoding())
+ IIDecl = *Res;
}
}
// RUN: clang-cc -fsyntax-only -verify %s
-// XFAIL
namespace A {
short i; // expected-note 2{{candidate found by name lookup is 'A::i'}}
}
namespace TwoTag {
- struct X; // expected-note{{candidate found by name lookup is 'TwoTag::X'}} \
- // expected-note{{forward declaration}}
+ struct X; // expected-note{{candidate found by name lookup is 'TwoTag::X'}}
}
namespace FuncHidesTagAmbiguity {
using namespace TwoTag;
void test() {
- (void)X(); // expected-error{{reference to 'X' is ambiguous}} \
- // FIXME: expected-error{{invalid use of incomplete type}}
+ (void)X(); // expected-error{{reference to 'X' is ambiguous}}
}
}