[clang-tools-extra] r260532 - Merge branch 'arcpatch-D16922'

David Blaikie via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 11 09:11:48 PST 2016


On Thu, Feb 11, 2016 at 8:03 AM, Cong Liu via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: congliu
> Date: Thu Feb 11 10:03:27 2016
> New Revision: 260532
>
> URL: http://llvm.org/viewvc/llvm-project?rev=260532&view=rev
> Log:
> Merge branch 'arcpatch-D16922'
>

Please be sure to check/correct your commit message(s) next time :)


>
> Modified:
>     clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.cpp
>     clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.h
>     clang-tools-extra/trunk/test/clang-tidy/misc-virtual-near-miss.cpp
>
> Modified: clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.cpp?rev=260532&r1=260531&r2=260532&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.cpp
> (original)
> +++ clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.cpp Thu
> Feb 11 10:03:27 2016
> @@ -249,11 +249,19 @@ void VirtualNearMissCheck::check(const M
>          if (EditDistance > 0 && EditDistance <= EditDistanceThreshold) {
>            if (checkOverrideWithoutName(Context, BaseMD, DerivedMD)) {
>              // A "virtual near miss" is found.
> -            diag(DerivedMD->getLocStart(),
> -                 "method '%0' has a similar name and the same signature
> as "
> -                 "virtual method '%1'; did you mean to override it?")
> +            auto Range = CharSourceRange::getTokenRange(
> +                SourceRange(DerivedMD->getLocation()));
> +
> +            bool ApplyFix = !BaseMD->isTemplateInstantiation() &&
> +                            !DerivedMD->isTemplateInstantiation();
> +            auto Diag =
> +                diag(DerivedMD->getLocStart(),
> +                     "method '%0' has a similar name and the same
> signature as "
> +                     "virtual method '%1'; did you mean to override it?")
>                  << DerivedMD->getQualifiedNameAsString()
>                  << BaseMD->getQualifiedNameAsString();
> +            if (ApplyFix)
> +              Diag << FixItHint::CreateReplacement(Range,
> BaseMD->getName());
>            }
>          }
>        }
>
> Modified: clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.h
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.h?rev=260532&r1=260531&r2=260532&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.h
> (original)
> +++ clang-tools-extra/trunk/clang-tidy/misc/VirtualNearMissCheck.h Thu Feb
> 11 10:03:27 2016
> @@ -12,7 +12,6 @@
>
>  #include "../ClangTidy.h"
>  #include <map>
> -#include <string>
>
>  namespace clang {
>  namespace tidy {
> @@ -46,12 +45,12 @@ private:
>    bool isOverriddenByDerivedClass(const CXXMethodDecl *BaseMD,
>                                    const CXXRecordDecl *DerivedRD);
>
> -  /// key: the unique ID of a method;
> -  /// value: whether the method is possible to be overridden.
> +  /// Key: the unique ID of a method.
> +  /// Value: whether the method is possible to be overridden.
>    std::map<const CXXMethodDecl *, bool> PossibleMap;
>
> -  /// key: <unique ID of base method, name of derived class>
> -  /// value: whether the base method is overridden by some method in the
> derived
> +  /// Key: <unique ID of base method, name of derived class>
> +  /// Value: whether the base method is overridden by some method in the
> derived
>    /// class.
>    std::map<std::pair<const CXXMethodDecl *, const CXXRecordDecl *>, bool>
>        OverriddenMap;
>
> Modified:
> clang-tools-extra/trunk/test/clang-tidy/misc-virtual-near-miss.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-virtual-near-miss.cpp?rev=260532&r1=260531&r2=260532&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/test/clang-tidy/misc-virtual-near-miss.cpp
> (original)
> +++ clang-tools-extra/trunk/test/clang-tidy/misc-virtual-near-miss.cpp Thu
> Feb 11 10:03:27 2016
> @@ -16,9 +16,11 @@ struct Derived : Base {
>    // overriden by this class.
>    virtual void funk();
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Derived::funk' has
> a similar name and the same signature as virtual method 'Base::func'; did
> you mean to override it? [misc-virtual-near-miss]
> +  // CHECK-FIXES: virtual void func();
>
>    void func2();
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Derived::func2' has
> {{.*}} 'Base::func'
> +  // CHECK-FIXES: void func();
>
>    void func22(); // Should not warn.
>
> @@ -26,12 +28,46 @@ struct Derived : Base {
>
>    void fun();
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Derived::fun' has
> {{.*}} 'Base::func'
> +  // CHECK-FIXES: void func();
>
>    Derived &operator==(const Base &); // Should not warn: operators are
> ignored.
>
>    virtual NoDefinedClass2 *f1(); // Should not crash: non-defined class
> return type is ignored.
>  };
>
> +template <typename T>
> +struct TBase {
> +  virtual void tfunc(T t);
> +};
> +
> +template <typename T>
> +struct TDerived : TBase<T> {
> +  virtual void tfunk(T t);
> +  // Should not apply fix for template.
> +  // CHECK-MESSAGES: :[[@LINE-2]]:3: warning: method
> 'TDerived<double>::tfunk' has {{.*}} 'TBase<double>::tfunc'
> +  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: method
> 'TDerived<int>::tfunk' has {{.*}} 'TBase<int>::tfunc'
> +  // CHECK-FIXES: virtual void tfunk(T t);
> +};
> +
> +TDerived<int> T1;
> +TDerived<double> T2;
> +
> +// Should not fix macro definition
> +#define MACRO1 void funcM()
> +// CHECK-FIXES: #define MACRO1 void funcM()
> +#define MACRO2(m) void m()
> +// CHECK-FIXES: #define MACRO2(m) void m()
> +
> +struct DerivedMacro : Base {
> +  MACRO1;
> +  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method
> 'DerivedMacro::funcM' has {{.*}} 'Base::func'
> +  // CHECK-FIXES: MACRO1;
> +
> +  MACRO2(func3);
> +  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method
> 'DerivedMacro::func3' has {{.*}} 'Base::func'
> +  // CHECK-FIXES: MACRO2(func);
> +};
> +
>  typedef Derived derived_type;
>
>  class Father {
> @@ -58,32 +94,40 @@ public:
>
>    virtual void func2();
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Child::func2' has
> {{.*}} 'Father::func'
> +  // CHECK-FIXES: virtual void func();
>
>    int methoe(int x, char **strs); // Should not warn: parameter types
> don't match.
>
>    int methoe(int x);
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Child::methoe' has
> {{.*}} 'Mother::method'
> +  // CHECK-FIXES: int method(int x);
>
>    void methof(int x, const char **strs); // Should not warn: return types
> don't match.
>
>    int methoh(int x, const char **strs);
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Child::methoh' has
> {{.*}} 'Mother::method'
> +  // CHECK-FIXES: int method(int x, const char **strs);
>
>    virtual Child *creat(int i);
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Child::creat' has
> {{.*}} 'Father::create'
> +  // CHECK-FIXES: virtual Child *create(int i);
>
>    virtual Derived &&generat();
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Child::generat' has
> {{.*}} 'Father::generate'
> +  // CHECK-FIXES: virtual Derived &&generate();
>
>    int decaz(const char str[]);
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Child::decaz' has
> {{.*}} 'Mother::decay'
> +  // CHECK-FIXES: int decay(const char str[]);
>
>    operator bool();
>
>    derived_type *canonica(derived_type D);
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Child::canonica'
> has {{.*}} 'Father::canonical'
> +  // CHECK-FIXES: derived_type *canonical(derived_type D);
>
>  private:
>    void funk();
>    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: method 'Child::funk' has
> {{.*}} 'Father::func'
> +  // CHECK-FIXES: void func();
>  };
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160211/02c780d3/attachment.html>


More information about the cfe-commits mailing list