aboutsummaryrefslogtreecommitdiffstats
path: root/tests/function-args-by-ref
diff options
context:
space:
mode:
authorSergio Martins <smartins@kde.org>2018-03-17 18:04:41 +0000
committerSergio Martins <smartins@kde.org>2018-03-17 18:04:41 +0000
commite675855cb3127825ff1aac3dd22e2878dc894a7c (patch)
tree254a1db8bde9ad338016ac7308252b198d2cfa87 /tests/function-args-by-ref
parentdba14f317183428e64a3d4e6c0559faacafdf6b0 (diff)
function-args-by-*: Add an option to warn for overridden methods
Warning for overridden methods is disabled by default, but can be enabled with: export CLAZY_EXTRA_OPTIONS=function-args-by-value-warn-for-overridden-methods (or s/value/ref)
Diffstat (limited to 'tests/function-args-by-ref')
-rw-r--r--tests/function-args-by-ref/config.json4
-rw-r--r--tests/function-args-by-ref/warn-for-overridden-methods.cpp22
-rw-r--r--tests/function-args-by-ref/warn-for-overridden-methods.cpp.expected7
3 files changed, 33 insertions, 0 deletions
diff --git a/tests/function-args-by-ref/config.json b/tests/function-args-by-ref/config.json
index 03f72844..173569d8 100644
--- a/tests/function-args-by-ref/config.json
+++ b/tests/function-args-by-ref/config.json
@@ -8,6 +8,10 @@
},
{
"filename" : "sharedptrs.cpp"
+ },
+ {
+ "filename" : "warn-for-overridden-methods.cpp",
+ "env" : { "CLAZY_EXTRA_OPTIONS" : "function-args-by-ref-warn-for-overridden-methods" }
}
]
}
diff --git a/tests/function-args-by-ref/warn-for-overridden-methods.cpp b/tests/function-args-by-ref/warn-for-overridden-methods.cpp
new file mode 100644
index 00000000..f4a7ee37
--- /dev/null
+++ b/tests/function-args-by-ref/warn-for-overridden-methods.cpp
@@ -0,0 +1,22 @@
+struct NonTrivial {
+ NonTrivial() {}
+ NonTrivial(const NonTrivial &) {}
+ void constFunction() const {};
+ void nonConstFunction() {};
+ int a;
+};
+
+class BaseWithVirtuals
+{
+public:
+ virtual void virtualMethod1(NonTrivial) {}; // Warn
+ virtual void virtualMethod2(NonTrivial) {}; // Warn
+ void nonVirtualMethod(NonTrivial) {}; // Warn
+};
+
+class DerivedWithVirtuals : BaseWithVirtuals {
+public:
+ void virtualMethod1(NonTrivial) override {}; // Warn
+ void virtualMethod2(NonTrivial) {}; // Warn
+ void nonVirtualMethod(NonTrivial) {}; // Warn
+};
diff --git a/tests/function-args-by-ref/warn-for-overridden-methods.cpp.expected b/tests/function-args-by-ref/warn-for-overridden-methods.cpp.expected
new file mode 100644
index 00000000..d9acacbd
--- /dev/null
+++ b/tests/function-args-by-ref/warn-for-overridden-methods.cpp.expected
@@ -0,0 +1,7 @@
+function-args-by-ref/warn-for-overridden-methods.cpp:20:10: warning: 'virtualMethod2' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
+function-args-by-ref/warn-for-overridden-methods.cpp:12:33: warning: Missing reference on non-trivial type (struct NonTrivial) [-Wclazy-function-args-by-ref]
+function-args-by-ref/warn-for-overridden-methods.cpp:13:33: warning: Missing reference on non-trivial type (struct NonTrivial) [-Wclazy-function-args-by-ref]
+function-args-by-ref/warn-for-overridden-methods.cpp:14:27: warning: Missing reference on non-trivial type (struct NonTrivial) [-Wclazy-function-args-by-ref]
+function-args-by-ref/warn-for-overridden-methods.cpp:19:25: warning: Missing reference on non-trivial type (struct NonTrivial) [-Wclazy-function-args-by-ref]
+function-args-by-ref/warn-for-overridden-methods.cpp:20:25: warning: Missing reference on non-trivial type (struct NonTrivial) [-Wclazy-function-args-by-ref]
+function-args-by-ref/warn-for-overridden-methods.cpp:21:27: warning: Missing reference on non-trivial type (struct NonTrivial) [-Wclazy-function-args-by-ref]