summaryrefslogtreecommitdiff
path: root/test/Analysis/copypaste/sub-sequences.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis/copypaste/sub-sequences.cpp')
-rw-r--r--test/Analysis/copypaste/sub-sequences.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/Analysis/copypaste/sub-sequences.cpp b/test/Analysis/copypaste/sub-sequences.cpp
new file mode 100644
index 0000000000000..ff73632e43531
--- /dev/null
+++ b/test/Analysis/copypaste/sub-sequences.cpp
@@ -0,0 +1,27 @@
+// RUN: %clang_cc1 -analyze -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -verify %s
+
+// This tests if sub-sequences can match with normal sequences.
+
+void log2(int a);
+void log();
+
+int max(int a, int b) {
+ log2(a);
+ log(); // expected-warning{{Duplicate code detected}}
+ if (a > b)
+ return a;
+ return b;
+}
+
+int maxClone(int a, int b) {
+ log(); // expected-note{{Similar code here}}
+ if (a > b)
+ return a;
+ return b;
+}
+
+// Functions below are not clones and should not be reported.
+
+int foo(int a, int b) { // no-warning
+ return a + b;
+}