From 12354c910c7174d1c092c313ca91a92193207803 Mon Sep 17 00:00:00 2001 From: Alexander Kornienko Date: Fri, 16 Nov 2018 14:57:51 +0000 Subject: [PATCH] [clang-tidy] Expanded a test NFC Expanded the readability-inconsistent-declaration-parameter-name-macros.cpp to check notes and added a test with pasted tokens. llvm-svn: 347053 --- ...onsistent-declaration-parameter-name-macros.cpp | 38 +++++++++++++++++----- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/clang-tools-extra/test/clang-tidy/readability-inconsistent-declaration-parameter-name-macros.cpp b/clang-tools-extra/test/clang-tidy/readability-inconsistent-declaration-parameter-name-macros.cpp index c06bbfb453e8..ed05faca4154 100644 --- a/clang-tools-extra/test/clang-tidy/readability-inconsistent-declaration-parameter-name-macros.cpp +++ b/clang-tools-extra/test/clang-tidy/readability-inconsistent-declaration-parameter-name-macros.cpp @@ -3,23 +3,45 @@ // RUN: -- -std=c++11 #define MACRO() \ - void f(int x); + void f(int x) -struct S { +struct S1 { MACRO(); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: function 'S::f' has a definition with different parameter names + // CHECK-NOTES: :[[@LINE-1]]:3: warning: function 'S1::f' has a definition with different parameter names + // CHECK-NOTES: :[[@LINE-5]]:8: note: expanded from macro 'MACRO' + // CHECK-NOTES: :[[@LINE+4]]:10: note: the definition seen here + // CHECK-NOTES: :[[@LINE-4]]:3: note: differing parameters are named here: ('x'), in definition: ('y') + // CHECK-NOTES: :[[@LINE-8]]:8: note: expanded from macro 'MACRO' }; +void S1::f(int y) {} -void S::f(int y) { -} +struct S2 { + int g() const; + void set_g(int g); + // CHECK-NOTES: :[[@LINE-1]]:8: warning: function 'S2::set_g' has a definition with different parameter names + // CHECK-NOTES: :[[@LINE+14]]:1: note: the definition seen here + // CHECK-NOTES: :[[@LINE+9]]:12: note: expanded from macro 'DEFINITION' + // This one is unfortunate, but the location this points to is in a scratch + // space, so it's not helpful to the user. + // CHECK-NOTES: {{^}}note: expanded from here{{$}} + // CHECK-NOTES: :[[@LINE-7]]:8: note: differing parameters are named here: ('g'), in definition: ('w') +}; + +#define DEFINITION(name, parameter) \ + int S2::name() const { return 0; } \ + void S2::set_##name(int parameter) { \ + (void)parameter; \ + } + +DEFINITION(g, w) ////////////////////////////////////////////////////// #define DECLARE_FUNCTION_WITH_PARAM_NAME(function_name, param_name) \ void function_name(int param_name) -// CHECK-MESSAGES: :[[@LINE+1]]:34: warning: function 'macroFunction' has 1 other declaration with different parameter names [readability-inconsistent-declaration-parameter-name] +// CHECK-NOTES: :[[@LINE+1]]:34: warning: function 'macroFunction' has 1 other declaration with different parameter names [readability-inconsistent-declaration-parameter-name] DECLARE_FUNCTION_WITH_PARAM_NAME(macroFunction, a); -// CHECK-MESSAGES: :[[@LINE+2]]:34: note: the 1st inconsistent declaration seen here -// CHECK-MESSAGES: :[[@LINE+1]]:34: note: differing parameters are named here: ('b'), in the other declaration: ('a') +// CHECK-NOTES: :[[@LINE+2]]:34: note: the 1st inconsistent declaration seen here +// CHECK-NOTES: :[[@LINE+1]]:34: note: differing parameters are named here: ('b'), in the other declaration: ('a') DECLARE_FUNCTION_WITH_PARAM_NAME(macroFunction, b); -- 2.11.4.GIT