From nobody Fri Feb 18 15:11:01 2022 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9749019DCD06; Fri, 18 Feb 2022 15:11:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4K0Zs22s8pz3L38; Fri, 18 Feb 2022 15:11:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645197062; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CulHnXvqeLgw7RQshHTFFYvQKO33OObLO/IdesmYEA4=; b=RicmuRFlUj2BdBh0q4A7GfqcO7wVi19qvmhC73hWcQCZ5Fd2PWdkBdRls5y6QtRd1iwaih R4ltXQBnKYe3YGkAWW+V7ja89UFVIhgP2Gmutnplc4mSSqPfLAzGCGK5SCmYxGpJDEHyre 4G521SAHsiH1EoK49UiCNboEjt1ApZp+Gmlppw/bBOwCKzgWrce3XMBdRkh1GJSTOweVmU xSZGE18/pGEwOPUyrdJ2yeoDRhueapiJ4TOqBEHreyEUkGCQXKAHVmtze7ROVdPGqTRh6u ma/7q06PInVMph3eWIWaus4c9oNquSTGB3y1+DLDCwqPUY/GD6/pW8Z15etVNQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E66171FA94; Fri, 18 Feb 2022 15:11:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 21IFB1Tx004070; Fri, 18 Feb 2022 15:11:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21IFB123004069; Fri, 18 Feb 2022 15:11:01 GMT (envelope-from git) Date: Fri, 18 Feb 2022 15:11:01 GMT Message-Id: <202202181511.21IFB123004069@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: 8f79bd9b8571 - main - diff: Detect Objective-C methods List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8f79bd9b85716c495c2741ac25db37e8d71f22f7 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645197062; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CulHnXvqeLgw7RQshHTFFYvQKO33OObLO/IdesmYEA4=; b=Q4NiULhwX8aLYY3+nGgRFFXUD++strbAa2usf3Ij1IHobZ6UcsAdWgq9uM1Vn4voCo0ocC sxRp9wvGnzWBeXVpQjtoqIlWvLzEX8Z++562G8LpxGpX6QrNycSt8Ftkm9zpujU5oiPpS2 rTgVX8EKK0sQXy272oQ3LT04m3PdiEn4eooOpV/pHbf6roy+v2ppevd49ZRL9Pr/lnDKQY ZT9H22kWAAzb6ReDlgDuybkfN6/BHmHEl0Y2phRPbhqbdgHBtGpIc6wEmrOIplhKkn+BQe Y9SVnRjeDkm5YhY7G17ZzwoVW6p6gQNNhLLCHOA5fCDr1/sKH3+tQ+zF8IryZQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1645197062; a=rsa-sha256; cv=none; b=kMMmQahCa6jiRtZzqsjIACtjvuPhTNNaNMKAYuHhCZyLh1QbFIssFbklWvSGpFbJoFriMq PFg792XyvGWx97+4HusipluyqtkH3OxaGX9Gy8pvgeVZyKhZJkQohYGz7/K2AE7UIqwS6U QNbzS453jcXu/R0z4VwdYq/3TplQ1UhHY5EHI59Zb1Y3m1xvG213fKwc2xho1FHbCBI573 oid2S1Pp4NfOV8VpzRA1b5fezleWuWm//dOLgEMyHwiwKTmRFiVs0d3W9Ism+NG4YZWBfZ Zi45Tqd9CVZp38v02PiAdMBHxp8Ch1v2tqCRK27hxNOabwB9SLmDf465Ue65rw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=8f79bd9b85716c495c2741ac25db37e8d71f22f7 commit 8f79bd9b85716c495c2741ac25db37e8d71f22f7 Author: Tom Jones AuthorDate: 2022-02-18 15:07:52 +0000 Commit: Tom Jones CommitDate: 2022-02-18 15:09:57 +0000 diff: Detect Objective-C methods When searching back for function definitions, consider lines starting with '+' and '-', this allows us to pick up Objective-C methods as well as C style function definitions. Reviewed by: bapt Sponsored by: Klara Inc. Differential Revision: https://reviews.freebsd.org/D34202 --- usr.bin/diff/diff.1 | 4 ++-- usr.bin/diff/diffreg.c | 3 ++- usr.bin/diff/tests/Makefile | 9 +++++++- usr.bin/diff/tests/diff_test.sh | 19 ++++++++++++++++ usr.bin/diff/tests/functionname.in | 29 ++++++++++++++++++++++++ usr.bin/diff/tests/functionname_c.in | 29 ++++++++++++++++++++++++ usr.bin/diff/tests/functionname_c.out | 11 +++++++++ usr.bin/diff/tests/functionname_objcclassm.in | 31 ++++++++++++++++++++++++++ usr.bin/diff/tests/functionname_objcclassm.out | 11 +++++++++ usr.bin/diff/tests/functionname_objcm.in | 29 ++++++++++++++++++++++++ usr.bin/diff/tests/functionname_objcm.out | 11 +++++++++ 11 files changed, 182 insertions(+), 4 deletions(-) diff --git a/usr.bin/diff/diff.1 b/usr.bin/diff/diff.1 index dea01bf918f4..b17ddb123fd5 100644 --- a/usr.bin/diff/diff.1 +++ b/usr.bin/diff/diff.1 @@ -396,8 +396,8 @@ file name and time in the context or unified diff header. With unified and context diffs, show with each change the first 40 characters of the last line before the context beginning with a letter, an underscore or a dollar sign. -For C source code following standard layout conventions, this will -show the prototype of the function the change applies to. +For C and Objective-C source code following standard layout conventions, this +will show the prototype of the function the change applies to. .It Fl T -initial-tab Print a tab rather than a space before the rest of the line for the normal, context or unified output formats. diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c index 995843f9e539..ae815aa4e01f 100644 --- a/usr.bin/diff/diffreg.c +++ b/usr.bin/diff/diffreg.c @@ -1419,7 +1419,8 @@ match_function(const long *f, int pos, FILE *fp) strlcpy(lastbuf, buf, sizeof(lastbuf)); lastmatchline = pos; return (lastbuf); - } else if (isalpha(buf[0]) || buf[0] == '_' || buf[0] == '$') { + } else if (isalpha(buf[0]) || buf[0] == '_' || buf[0] == '$' + || buf[0] == '-' || buf[0] == '+') { if (begins_with(buf, "private:")) { if (!state) state = " (private)"; diff --git a/usr.bin/diff/tests/Makefile b/usr.bin/diff/tests/Makefile index 303a37911fbd..fbfac0c8372d 100644 --- a/usr.bin/diff/tests/Makefile +++ b/usr.bin/diff/tests/Makefile @@ -27,7 +27,14 @@ ${PACKAGE}FILES+= \ header_ns.out \ ifdef.out \ group-format.out \ - strip_o.out + strip_o.out \ + functionname.in \ + functionname_c.in \ + functionname_c.out \ + functionname_objcclassm.in \ + functionname_objcclassm.out \ + functionname_objcm.in \ + functionname_objcm.out NETBSD_ATF_TESTS_SH+= netbsd_diff_test diff --git a/usr.bin/diff/tests/diff_test.sh b/usr.bin/diff/tests/diff_test.sh index 4f73b23d686a..8c0219712db7 100755 --- a/usr.bin/diff/tests/diff_test.sh +++ b/usr.bin/diff/tests/diff_test.sh @@ -19,6 +19,7 @@ atf_test_case label atf_test_case report_identical atf_test_case non_regular_file atf_test_case binary +atf_test_case functionname simple_body() { @@ -278,6 +279,23 @@ binary_body() atf_check -o inline:"176c\nx\n.\n" -s exit:1 diff -ae A B } +functionname_body() +{ + atf_check -o empty -x "which diff" + + atf_check -o file:$(atf_get_srcdir)/functionname_c.out -s exit:1 \ + diff -u -p -L functionname.in -L functionname_c.in \ + "$(atf_get_srcdir)/functionname.in" "$(atf_get_srcdir)/functionname_c.in" + + atf_check -o file:$(atf_get_srcdir)/functionname_objcm.out -s exit:1 \ + diff -u -p -L functionname.in -L functionname_objcm.in \ + "$(atf_get_srcdir)/functionname.in" "$(atf_get_srcdir)/functionname_objcm.in" + + atf_check -o file:$(atf_get_srcdir)/functionname_objcclassm.out -s exit:1 \ + diff -u -p -L functionname.in -L functionname_objcclassm.in \ + "$(atf_get_srcdir)/functionname.in" "$(atf_get_srcdir)/functionname_objcclassm.in" +} + atf_init_test_cases() { atf_add_test_case simple @@ -299,4 +317,5 @@ atf_init_test_cases() atf_add_test_case report_identical atf_add_test_case non_regular_file atf_add_test_case binary + atf_add_test_case functionname } diff --git a/usr.bin/diff/tests/functionname.in b/usr.bin/diff/tests/functionname.in new file mode 100644 index 000000000000..7b4c50c86cd9 --- /dev/null +++ b/usr.bin/diff/tests/functionname.in @@ -0,0 +1,29 @@ +static void +doSomethingThenPrintHello(int test) +{ + test = test << 4; + if (test % 8 == 6) { + return; + } + + print("goodbye\n"); +} + + +- (long) readOffset:(FILE*)file +{ + if( version >= 11){ + long offset; + fread(&offset, sizeof(long), 1, file); + return offset; + } else { + int offset; + fread(&offset, sizeof(int), 1, file); + return offset; + } +} + ++ (BOOL) isEdible:(NSString *)mushroom +{ + return TRUE; +} diff --git a/usr.bin/diff/tests/functionname_c.in b/usr.bin/diff/tests/functionname_c.in new file mode 100644 index 000000000000..84f6846783ca --- /dev/null +++ b/usr.bin/diff/tests/functionname_c.in @@ -0,0 +1,29 @@ +static void +doSomethingThenPrintHello(int test) +{ + test = test << 4; + if (test % 8 == 6) { + return; + } + + print("hello\n"); +} + + +- (long) readOffset:(FILE*)file +{ + if( version >= 11){ + long offset; + fread(&offset, sizeof(long), 1, file); + return offset; + } else { + int offset; + fread(&offset, sizeof(int), 1, file); + return offset; + } +} + ++ (BOOL) isEdible:(NSString *)mushroom +{ + return TRUE; +} diff --git a/usr.bin/diff/tests/functionname_c.out b/usr.bin/diff/tests/functionname_c.out new file mode 100644 index 000000000000..b17ce05d04ca --- /dev/null +++ b/usr.bin/diff/tests/functionname_c.out @@ -0,0 +1,11 @@ +--- functionname.in ++++ functionname_c.in +@@ -6,7 +6,7 @@ doSomethingThenPrintHello(int test) + return; + } + +- print("goodbye\n"); ++ print("hello\n"); + } + + diff --git a/usr.bin/diff/tests/functionname_objcclassm.in b/usr.bin/diff/tests/functionname_objcclassm.in new file mode 100644 index 000000000000..37a9a76c6e6a --- /dev/null +++ b/usr.bin/diff/tests/functionname_objcclassm.in @@ -0,0 +1,31 @@ +static void +doSomethingThenPrintHello(int test) +{ + test = test << 4; + if (test % 8 == 6) { + return; + } + + print("goodbye\n"); +} + + +- (long) readOffset:(FILE*)file +{ + if( version >= 11){ + long offset; + fread(&offset, sizeof(long), 1, file); + return offset; + } else { + int offset; + fread(&offset, sizeof(int), 1, file); + return offset; + } +} + ++ (BOOL) isEdible:(NSString *)mushroom +{ + /* With a solid guide book (such as Phillips 2006) assume we can't eat + * the fungus */ + return FALSE; +} diff --git a/usr.bin/diff/tests/functionname_objcclassm.out b/usr.bin/diff/tests/functionname_objcclassm.out new file mode 100644 index 000000000000..b68b732fb7c3 --- /dev/null +++ b/usr.bin/diff/tests/functionname_objcclassm.out @@ -0,0 +1,11 @@ +--- functionname.in ++++ functionname_objcclassm.in +@@ -25,5 +25,7 @@ + (BOOL) isEdible:(NSString *)mushroom + + + (BOOL) isEdible:(NSString *)mushroom + { +- return TRUE; ++ /* With a solid guide book (such as Phillips 2006) assume we can't eat ++ * the fungus */ ++ return FALSE; + } diff --git a/usr.bin/diff/tests/functionname_objcm.in b/usr.bin/diff/tests/functionname_objcm.in new file mode 100644 index 000000000000..06c3e9b2722d --- /dev/null +++ b/usr.bin/diff/tests/functionname_objcm.in @@ -0,0 +1,29 @@ +static void +doSomethingThenPrintHello(int test) +{ + test = test << 4; + if (test % 8 == 6) { + return; + } + + print("goodbye\n"); +} + + +- (long) readOffset:(FILE*)file +{ + if( version >= 11){ + long offset; + fread(&offset, sizeof(long), 1, file); + return offset; + } else { + int offset; + fread(&offset-1, sizeof(int), 1, file); + return offset; + } +} + ++ (BOOL) isEdible:(NSString *)mushroom +{ + return TRUE; +} diff --git a/usr.bin/diff/tests/functionname_objcm.out b/usr.bin/diff/tests/functionname_objcm.out new file mode 100644 index 000000000000..cb29b0892115 --- /dev/null +++ b/usr.bin/diff/tests/functionname_objcm.out @@ -0,0 +1,11 @@ +--- functionname.in ++++ functionname_objcm.in +@@ -18,7 +18,7 @@ - (long) readOffset:(FILE*)file + return offset; + } else { + int offset; +- fread(&offset, sizeof(int), 1, file); ++ fread(&offset-1, sizeof(int), 1, file); + return offset; + } + }