Clang Project

clang_source_code/test/Tooling/clang-diff-bottomup.cpp
1// RUN: %clang_cc1 -E %s > %t.src.cpp
2// RUN: %clang_cc1 -E %s > %t.dst.cpp -DDEST
3// RUN: clang-diff -dump-matches -s=0 %t.src.cpp %t.dst.cpp -- | FileCheck %s
4//
5// Test the bottom-up matching, with maxsize set to 0, so that the optimal matching will never be applied.
6
7#ifndef DEST
8
9void f1() { ; {{;}} }
10void f2() { ;; {{;}} }
11
12#else
13
14// Jaccard similarity threshold is 0.5.
15
16void f1() {
17// CompoundStmt: 3 matched descendants, subtree sizes 4 and 5
18// Jaccard similarity = 3 / (4 + 5 - 3) = 3 / 6 >= 0.5
19// CHECK: Match FunctionDecl: f1(void ())(1) to FunctionDecl: f1(void ())(1)
20// CHECK: Match CompoundStmt(2) to CompoundStmt(2)
21// CHECK: Match CompoundStmt(4) to CompoundStmt(3)
22// CHECK: Match CompoundStmt(5) to CompoundStmt(4)
23// CHECK: Match NullStmt(6) to NullStmt(5)
24  {{;}} ;;
25}
26
27void f2() {
28// CompoundStmt: 3 matched descendants, subtree sizes 4 and 5
29// Jaccard similarity = 3 / (5 + 6 - 3) = 3 / 8 < 0.5
30// CHECK-NOT: Match FunctionDecl(9)
31// CHECK-NOT: Match CompoundStmt(10)
32// CHECK: Match CompoundStmt(11) to CompoundStmt(10)
33// CHECK: Match CompoundStmt(12) to CompoundStmt(11)
34// CHECK: Match NullStmt(13) to NullStmt(12)
35// CHECK-NOT: Match NullStmt(13)
36  {{;}} ;;;
37}
38
39#endif
40