From 9c39113fdb155b3dda7c461f533466a6b6997fe4 Mon Sep 17 00:00:00 2001 From: Francois Pichet Date: Sat, 3 Dec 2011 15:55:29 +0000 Subject: In Microsoft mode, don't perform typo correction in a template member function dependent context because it interferes with the "lookup into dependent bases of class templates" feature. Basically typo correction will try to offer a correction instead of looking into type dependent base classes. I found this problem while parsing Microsoft ATL code with clang. llvm-svn: 145772 --- clang/lib/Sema/SemaLookup.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'clang/lib/Sema/SemaLookup.cpp') diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp index c232515ef36..9f1e9a5516b 100644 --- a/clang/lib/Sema/SemaLookup.cpp +++ b/clang/lib/Sema/SemaLookup.cpp @@ -3556,6 +3556,13 @@ TypoCorrection Sema::CorrectTypo(const DeclarationNameInfo &TypoName, if (Diags.hasFatalErrorOccurred() || !getLangOptions().SpellChecking) return TypoCorrection(); + // In Microsoft mode, don't perform typo correction in a template member + // function dependent context because it interferes with the "lookup into + // dependent bases of class templates" feature. + if (getLangOptions().MicrosoftMode && CurContext->isDependentContext() && + isa(CurContext)) + return TypoCorrection(); + // We only attempt to correct typos for identifiers. IdentifierInfo *Typo = TypoName.getName().getAsIdentifierInfo(); if (!Typo) -- cgit v1.2.3