r227278 - Use the real CXXScopeSpec when setting the correction SourceRange.

Kaelyn Takata rikka at google.com
Tue Jan 27 16:50:48 PST 2015


This is a trivial enough fix it should probably be merged into the release
branch to avoid spurious bug reports. ;)

On Tue, Jan 27, 2015 at 4:46 PM, Kaelyn Takata <rikka at google.com> wrote:

> Author: rikka
> Date: Tue Jan 27 18:46:09 2015
> New Revision: 227278
>
> URL: http://llvm.org/viewvc/llvm-project?rev=227278&view=rev
> Log:
> Use the real CXXScopeSpec when setting the correction SourceRange.
>
> Otherwise, in the most important case and the only case where SS and
> TempSS are different (which is when the CXXScopeSpec should be dropped,
> and TempSS is NULL) the wrong SourceRange will be used in the fixit for
> the typo correction. Fixes the remaining issue in PR20626.
>
> Modified:
>     cfe/trunk/lib/Sema/SemaLookup.cpp
>     cfe/trunk/test/FixIt/typo-location-bugs.cpp
>
> Modified: cfe/trunk/lib/Sema/SemaLookup.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaLookup.cpp?rev=227278&r1=227277&r2=227278&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaLookup.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaLookup.cpp Tue Jan 27 18:46:09 2015
> @@ -3587,7 +3587,7 @@ retry_lookup:
>          QualifiedResults.push_back(Candidate);
>        break;
>      }
> -    Candidate.setCorrectionRange(TempSS, Result.getLookupNameInfo());
> +    Candidate.setCorrectionRange(SS.get(), Result.getLookupNameInfo());
>      return true;
>    }
>    return false;
>
> Modified: cfe/trunk/test/FixIt/typo-location-bugs.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/FixIt/typo-location-bugs.cpp?rev=227278&r1=227277&r2=227278&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/FixIt/typo-location-bugs.cpp (original)
> +++ cfe/trunk/test/FixIt/typo-location-bugs.cpp Tue Jan 27 18:46:09 2015
> @@ -34,3 +34,16 @@ void test(B b) {
>    b.f(1);  // expected-error{{too many arguments to function call,
> expected 0, have 1; did you mean 'A::f'?}}
>  }
>  }
> +
> +namespace PR20626 {
> +class A {
> +public:
> +  void Foo(){};  // expected-note{{'Foo' declared here}}
> +};
> +class B {};
> +class C : public A, public B {
> +  void Run() {
> +    B::Foo();  // expected-error{{no member named 'Foo' in 'PR20626::B';
> did you mean simply 'Foo'?}}
> +  }
> +};
> +}
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150127/e07806f6/attachment.html>


More information about the cfe-commits mailing list