40 lines · cpp
1// RUN: %clang_cc1 -E %s > %t.src.cpp2// RUN: %clang_cc1 -E %s > %t.dst.cpp -DDEST3// RUN: clang-diff -dump-matches -s=0 %t.src.cpp %t.dst.cpp -- | FileCheck %s4//5// Test the bottom-up matching, with maxsize set to 0, so that the optimal matching will never be applied.6 7#ifndef DEST8 9void f1() { ; {{;}} }10void f2() { ;; {{;}} }11 12#else13 14// Jaccard similarity threshold is 0.5.15 16void f1() {17// CompoundStmt: 3 matched descendants, subtree sizes 4 and 518// Jaccard similarity = 3 / (4 + 5 - 3) = 3 / 6 >= 0.519// 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 529// Jaccard similarity = 3 / (5 + 6 - 3) = 3 / 8 < 0.530// 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#endif40