about summary refs log tree commit diff
path: root/third_party/git/t/t4018
diff options
context:
space:
mode:
authorVincent Ambo <Vincent Ambo>2020-01-11T23·36+0000
committerVincent Ambo <Vincent Ambo>2020-01-11T23·40+0000
commit7ef0d62730840ded097b524104cc0a0904591a63 (patch)
treea670f96103667aeca4789a95d94ca0dff550c4ce /third_party/git/t/t4018
parent6a2a3007077818e24a3d56fc492ada9206a10cf0 (diff)
parent1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5 (diff)
merge(third_party/git): Merge squashed git subtree at v2.23.0 r/373
Merge commit '1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5' as 'third_party/git'
Diffstat (limited to 'third_party/git/t/t4018')
-rw-r--r--third_party/git/t/t4018/README18
-rw-r--r--third_party/git/t/t4018/cpp-c++-function4
-rw-r--r--third_party/git/t/t4018/cpp-class-constructor4
-rw-r--r--third_party/git/t/t4018/cpp-class-constructor-mem-init5
-rw-r--r--third_party/git/t/t4018/cpp-class-definition4
-rw-r--r--third_party/git/t/t4018/cpp-class-definition-derived5
-rw-r--r--third_party/git/t/t4018/cpp-class-destructor4
-rw-r--r--third_party/git/t/t4018/cpp-function-returning-global-type4
-rw-r--r--third_party/git/t/t4018/cpp-function-returning-nested5
-rw-r--r--third_party/git/t/t4018/cpp-function-returning-pointer4
-rw-r--r--third_party/git/t/t4018/cpp-function-returning-reference4
-rw-r--r--third_party/git/t/t4018/cpp-gnu-style-function5
-rw-r--r--third_party/git/t/t4018/cpp-namespace-definition4
-rw-r--r--third_party/git/t/t4018/cpp-operator-definition4
-rw-r--r--third_party/git/t/t4018/cpp-skip-access-specifiers8
-rw-r--r--third_party/git/t/t4018/cpp-skip-comment-block9
-rw-r--r--third_party/git/t/t4018/cpp-skip-labels8
-rw-r--r--third_party/git/t/t4018/cpp-struct-definition9
-rw-r--r--third_party/git/t/t4018/cpp-struct-single-line7
-rw-r--r--third_party/git/t/t4018/cpp-template-function-definition4
-rw-r--r--third_party/git/t/t4018/cpp-union-definition4
-rw-r--r--third_party/git/t/t4018/cpp-void-c-function4
-rw-r--r--third_party/git/t/t4018/css-brace-in-col-15
-rw-r--r--third_party/git/t/t4018/css-colon-eol4
-rw-r--r--third_party/git/t/t4018/css-colon-selector5
-rw-r--r--third_party/git/t/t4018/css-common4
-rw-r--r--third_party/git/t/t4018/css-long-selector-list6
-rw-r--r--third_party/git/t/t4018/css-prop-sans-indent5
-rw-r--r--third_party/git/t/t4018/css-short-selector-list4
-rw-r--r--third_party/git/t/t4018/css-trailing-space5
-rw-r--r--third_party/git/t/t4018/custom1-pattern17
-rw-r--r--third_party/git/t/t4018/custom2-match-to-end-of-line8
-rw-r--r--third_party/git/t/t4018/custom3-alternation-in-pattern17
-rw-r--r--third_party/git/t/t4018/fountain-scene4
-rw-r--r--third_party/git/t/t4018/golang-complex-function8
-rw-r--r--third_party/git/t/t4018/golang-func4
-rw-r--r--third_party/git/t/t4018/golang-interface4
-rw-r--r--third_party/git/t/t4018/golang-long-func5
-rw-r--r--third_party/git/t/t4018/golang-struct4
-rw-r--r--third_party/git/t/t4018/java-class-member-function8
-rw-r--r--third_party/git/t/t4018/matlab-class-definition5
-rw-r--r--third_party/git/t/t4018/matlab-function4
-rw-r--r--third_party/git/t/t4018/matlab-octave-section-13
-rw-r--r--third_party/git/t/t4018/matlab-octave-section-23
-rw-r--r--third_party/git/t/t4018/matlab-section3
-rw-r--r--third_party/git/t/t4018/perl-skip-end-of-heredoc8
-rw-r--r--third_party/git/t/t4018/perl-skip-forward-decl10
-rw-r--r--third_party/git/t/t4018/perl-skip-sub-in-pod18
-rw-r--r--third_party/git/t/t4018/perl-sub-definition4
-rw-r--r--third_party/git/t/t4018/perl-sub-definition-kr-brace4
-rw-r--r--third_party/git/t/t4018/php-abstract-class4
-rw-r--r--third_party/git/t/t4018/php-class4
-rw-r--r--third_party/git/t/t4018/php-final-class4
-rw-r--r--third_party/git/t/t4018/php-function4
-rw-r--r--third_party/git/t/t4018/php-interface4
-rw-r--r--third_party/git/t/t4018/php-method7
-rw-r--r--third_party/git/t/t4018/php-trait7
-rw-r--r--third_party/git/t/t4018/rust-fn5
-rw-r--r--third_party/git/t/t4018/rust-impl5
-rw-r--r--third_party/git/t/t4018/rust-struct5
-rw-r--r--third_party/git/t/t4018/rust-trait5
61 files changed, 360 insertions, 0 deletions
diff --git a/third_party/git/t/t4018/README b/third_party/git/t/t4018/README
new file mode 100644
index 0000000000..283e01cca1
--- /dev/null
+++ b/third_party/git/t/t4018/README
@@ -0,0 +1,18 @@
+How to write RIGHT test cases
+=============================
+
+Insert the word "ChangeMe" (exactly this form) at a distance of
+at least two lines from the line that must appear in the hunk header.
+
+The text that must appear in the hunk header must contain the word
+"right", but in all upper-case, like in the title above.
+
+To mark a test case that highlights a malfunction, insert the word
+BROKEN in all lower-case somewhere in the file.
+
+This text is a bit twisted and out of order, but it is itself a
+test case for the default hunk header pattern. Know what you are doing
+if you change it.
+
+BTW, this tests that the head line goes to the hunk header, not the line
+of equal signs.
diff --git a/third_party/git/t/t4018/cpp-c++-function b/third_party/git/t/t4018/cpp-c++-function
new file mode 100644
index 0000000000..9ee6bbef55
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-c++-function
@@ -0,0 +1,4 @@
+Item RIGHT::DoSomething( Args with_spaces )
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-class-constructor b/third_party/git/t/t4018/cpp-class-constructor
new file mode 100644
index 0000000000..ec4f115c25
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-class-constructor
@@ -0,0 +1,4 @@
+Item::Item(int RIGHT)
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-class-constructor-mem-init b/third_party/git/t/t4018/cpp-class-constructor-mem-init
new file mode 100644
index 0000000000..49a69f37e1
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-class-constructor-mem-init
@@ -0,0 +1,5 @@
+Item::Item(int RIGHT) :
+	member(0)
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-class-definition b/third_party/git/t/t4018/cpp-class-definition
new file mode 100644
index 0000000000..11b61da3b7
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-class-definition
@@ -0,0 +1,4 @@
+class RIGHT
+{
+	int ChangeMe;
+};
diff --git a/third_party/git/t/t4018/cpp-class-definition-derived b/third_party/git/t/t4018/cpp-class-definition-derived
new file mode 100644
index 0000000000..3b98cd09ab
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-class-definition-derived
@@ -0,0 +1,5 @@
+class RIGHT :
+	public Baseclass
+{
+	int ChangeMe;
+};
diff --git a/third_party/git/t/t4018/cpp-class-destructor b/third_party/git/t/t4018/cpp-class-destructor
new file mode 100644
index 0000000000..5487665096
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-class-destructor
@@ -0,0 +1,4 @@
+RIGHT::~RIGHT()
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-function-returning-global-type b/third_party/git/t/t4018/cpp-function-returning-global-type
new file mode 100644
index 0000000000..1084d5990e
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-function-returning-global-type
@@ -0,0 +1,4 @@
+::Item get::it::RIGHT()
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-function-returning-nested b/third_party/git/t/t4018/cpp-function-returning-nested
new file mode 100644
index 0000000000..d9750aa61a
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-function-returning-nested
@@ -0,0 +1,5 @@
+get::Item get::it::RIGHT()
+{
+	ChangeMe;
+}
+
diff --git a/third_party/git/t/t4018/cpp-function-returning-pointer b/third_party/git/t/t4018/cpp-function-returning-pointer
new file mode 100644
index 0000000000..ef15657ea8
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-function-returning-pointer
@@ -0,0 +1,4 @@
+const char *get_it_RIGHT(char *ptr)
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-function-returning-reference b/third_party/git/t/t4018/cpp-function-returning-reference
new file mode 100644
index 0000000000..01b051df70
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-function-returning-reference
@@ -0,0 +1,4 @@
+string& get::it::RIGHT(char *ptr)
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-gnu-style-function b/third_party/git/t/t4018/cpp-gnu-style-function
new file mode 100644
index 0000000000..08c7c7565a
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-gnu-style-function
@@ -0,0 +1,5 @@
+const char *
+RIGHT(int arg)
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-namespace-definition b/third_party/git/t/t4018/cpp-namespace-definition
new file mode 100644
index 0000000000..6749980241
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-namespace-definition
@@ -0,0 +1,4 @@
+namespace RIGHT
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-operator-definition b/third_party/git/t/t4018/cpp-operator-definition
new file mode 100644
index 0000000000..1acd827159
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-operator-definition
@@ -0,0 +1,4 @@
+Value operator+(Value LEFT, Value RIGHT)
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-skip-access-specifiers b/third_party/git/t/t4018/cpp-skip-access-specifiers
new file mode 100644
index 0000000000..4d4a9dbb9d
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-skip-access-specifiers
@@ -0,0 +1,8 @@
+class RIGHT : public Baseclass
+{
+public:
+protected:
+private:
+	void DoSomething();
+	int ChangeMe;
+};
diff --git a/third_party/git/t/t4018/cpp-skip-comment-block b/third_party/git/t/t4018/cpp-skip-comment-block
new file mode 100644
index 0000000000..3800b9967a
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-skip-comment-block
@@ -0,0 +1,9 @@
+struct item RIGHT(int i)
+// Do not
+// pick up
+/* these
+** comments.
+*/
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-skip-labels b/third_party/git/t/t4018/cpp-skip-labels
new file mode 100644
index 0000000000..b9c10aba22
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-skip-labels
@@ -0,0 +1,8 @@
+void RIGHT (void)
+{
+repeat:		// C++ comment
+next:		/* C comment */
+	do_something();
+
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-struct-definition b/third_party/git/t/t4018/cpp-struct-definition
new file mode 100644
index 0000000000..521c59fd15
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-struct-definition
@@ -0,0 +1,9 @@
+struct RIGHT {
+	unsigned
+	/* this bit field looks like a label and should not be picked up */
+		decoy_bitfield: 2,
+		more : 1;
+	int filler;
+
+	int ChangeMe;
+};
diff --git a/third_party/git/t/t4018/cpp-struct-single-line b/third_party/git/t/t4018/cpp-struct-single-line
new file mode 100644
index 0000000000..a0de5fb800
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-struct-single-line
@@ -0,0 +1,7 @@
+void wrong()
+{
+}
+
+struct RIGHT_iterator_tag {};
+
+int ChangeMe;
diff --git a/third_party/git/t/t4018/cpp-template-function-definition b/third_party/git/t/t4018/cpp-template-function-definition
new file mode 100644
index 0000000000..0cdf5ba5bd
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-template-function-definition
@@ -0,0 +1,4 @@
+template<class T> int RIGHT(T arg)
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/cpp-union-definition b/third_party/git/t/t4018/cpp-union-definition
new file mode 100644
index 0000000000..7ec94df697
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-union-definition
@@ -0,0 +1,4 @@
+union RIGHT {
+	double v;
+	int ChangeMe;
+};
diff --git a/third_party/git/t/t4018/cpp-void-c-function b/third_party/git/t/t4018/cpp-void-c-function
new file mode 100644
index 0000000000..153081e872
--- /dev/null
+++ b/third_party/git/t/t4018/cpp-void-c-function
@@ -0,0 +1,4 @@
+void RIGHT (void)
+{
+	ChangeMe;
+}
diff --git a/third_party/git/t/t4018/css-brace-in-col-1 b/third_party/git/t/t4018/css-brace-in-col-1
new file mode 100644
index 0000000000..7831577506
--- /dev/null
+++ b/third_party/git/t/t4018/css-brace-in-col-1
@@ -0,0 +1,5 @@
+RIGHT label.control-label
+{
+    margin-top: 10px!important;
+    border : 10px ChangeMe #C6C6C6;
+}
diff --git a/third_party/git/t/t4018/css-colon-eol b/third_party/git/t/t4018/css-colon-eol
new file mode 100644
index 0000000000..5a30553d29
--- /dev/null
+++ b/third_party/git/t/t4018/css-colon-eol
@@ -0,0 +1,4 @@
+RIGHT h1 {
+color:
+ChangeMe;
+}
diff --git a/third_party/git/t/t4018/css-colon-selector b/third_party/git/t/t4018/css-colon-selector
new file mode 100644
index 0000000000..c6d71fb42d
--- /dev/null
+++ b/third_party/git/t/t4018/css-colon-selector
@@ -0,0 +1,5 @@
+RIGHT a:hover {
+    margin-top:
+    10px!important;
+    border : 10px ChangeMe #C6C6C6;
+}
diff --git a/third_party/git/t/t4018/css-common b/third_party/git/t/t4018/css-common
new file mode 100644
index 0000000000..84ed754b33
--- /dev/null
+++ b/third_party/git/t/t4018/css-common
@@ -0,0 +1,4 @@
+RIGHT label.control-label {
+    margin-top: 10px!important;
+    border : 10px ChangeMe #C6C6C6;
+}
diff --git a/third_party/git/t/t4018/css-long-selector-list b/third_party/git/t/t4018/css-long-selector-list
new file mode 100644
index 0000000000..7ccd25d9ed
--- /dev/null
+++ b/third_party/git/t/t4018/css-long-selector-list
@@ -0,0 +1,6 @@
+p.header,
+label.control-label,
+div ul#RIGHT {
+    margin-top: 10px!important;
+    border : 10px ChangeMe #C6C6C6;
+}
diff --git a/third_party/git/t/t4018/css-prop-sans-indent b/third_party/git/t/t4018/css-prop-sans-indent
new file mode 100644
index 0000000000..a9e3c86b3c
--- /dev/null
+++ b/third_party/git/t/t4018/css-prop-sans-indent
@@ -0,0 +1,5 @@
+RIGHT, label.control-label {
+margin-top: 10px!important;
+padding: 0;
+border : 10px ChangeMe #C6C6C6;
+}
diff --git a/third_party/git/t/t4018/css-short-selector-list b/third_party/git/t/t4018/css-short-selector-list
new file mode 100644
index 0000000000..6a0bdee336
--- /dev/null
+++ b/third_party/git/t/t4018/css-short-selector-list
@@ -0,0 +1,4 @@
+label.control, div ul#RIGHT {
+    margin-top: 10px!important;
+    border : 10px ChangeMe #C6C6C6;
+}
diff --git a/third_party/git/t/t4018/css-trailing-space b/third_party/git/t/t4018/css-trailing-space
new file mode 100644
index 0000000000..32b5606c70
--- /dev/null
+++ b/third_party/git/t/t4018/css-trailing-space
@@ -0,0 +1,5 @@
+RIGHT label.control-label {
+    margin:10px;   
+    padding:10px;
+    border : 10px ChangeMe #C6C6C6;
+}
diff --git a/third_party/git/t/t4018/custom1-pattern b/third_party/git/t/t4018/custom1-pattern
new file mode 100644
index 0000000000..e8fd59f884
--- /dev/null
+++ b/third_party/git/t/t4018/custom1-pattern
@@ -0,0 +1,17 @@
+public class Beer
+{
+	int special, RIGHT;
+	public static void main(String args[])
+	{
+		String s=" ";
+		for(int x = 99; x > 0; x--)
+		{
+			System.out.print(x + " bottles of beer on the wall "
+				+ x + " bottles of beer\n" // ChangeMe
+				+ "Take one down, pass it around, " + (x - 1)
+				+ " bottles of beer on the wall.\n");
+		}
+		System.out.print("Go to the store, buy some more,\n"
+			+ "99 bottles of beer on the wall.\n");
+	}
+}
diff --git a/third_party/git/t/t4018/custom2-match-to-end-of-line b/third_party/git/t/t4018/custom2-match-to-end-of-line
new file mode 100644
index 0000000000..f88ac318b7
--- /dev/null
+++ b/third_party/git/t/t4018/custom2-match-to-end-of-line
@@ -0,0 +1,8 @@
+public class RIGHT_Beer
+{
+	int special;
+	public static void main(String args[])
+	{
+		System.out.print("ChangeMe");
+	}
+}
diff --git a/third_party/git/t/t4018/custom3-alternation-in-pattern b/third_party/git/t/t4018/custom3-alternation-in-pattern
new file mode 100644
index 0000000000..5f3769c64f
--- /dev/null
+++ b/third_party/git/t/t4018/custom3-alternation-in-pattern
@@ -0,0 +1,17 @@
+public class Beer
+{
+	int special;
+	public static void main(String RIGHT[])
+	{
+		String s=" ";
+		for(int x = 99; x > 0; x--)
+		{
+			System.out.print(x + " bottles of beer on the wall "
+				+ x + " bottles of beer\n" // ChangeMe
+				+ "Take one down, pass it around, " + (x - 1)
+				+ " bottles of beer on the wall.\n");
+		}
+		System.out.print("Go to the store, buy some more,\n"
+			+ "99 bottles of beer on the wall.\n");
+	}
+}
diff --git a/third_party/git/t/t4018/fountain-scene b/third_party/git/t/t4018/fountain-scene
new file mode 100644
index 0000000000..6b3257d680
--- /dev/null
+++ b/third_party/git/t/t4018/fountain-scene
@@ -0,0 +1,4 @@
+EXT. STREET RIGHT OUTSIDE - DAY
+
+CHARACTER
+You didn't say the magic phrase, "ChangeMe".
diff --git a/third_party/git/t/t4018/golang-complex-function b/third_party/git/t/t4018/golang-complex-function
new file mode 100644
index 0000000000..e057dcefed
--- /dev/null
+++ b/third_party/git/t/t4018/golang-complex-function
@@ -0,0 +1,8 @@
+type Test struct {
+	a Type
+}
+
+func (t *Test) RIGHT(a Type) (Type, error) {
+	t.a = a
+	return ChangeMe, nil
+}
diff --git a/third_party/git/t/t4018/golang-func b/third_party/git/t/t4018/golang-func
new file mode 100644
index 0000000000..8e9c9ac7c3
--- /dev/null
+++ b/third_party/git/t/t4018/golang-func
@@ -0,0 +1,4 @@
+func RIGHT() {
+	a := 5
+	b := ChangeMe
+}
diff --git a/third_party/git/t/t4018/golang-interface b/third_party/git/t/t4018/golang-interface
new file mode 100644
index 0000000000..553bedec96
--- /dev/null
+++ b/third_party/git/t/t4018/golang-interface
@@ -0,0 +1,4 @@
+type RIGHT interface {
+	a() Type
+	b() ChangeMe
+}
diff --git a/third_party/git/t/t4018/golang-long-func b/third_party/git/t/t4018/golang-long-func
new file mode 100644
index 0000000000..ac3a77b5c4
--- /dev/null
+++ b/third_party/git/t/t4018/golang-long-func
@@ -0,0 +1,5 @@
+func RIGHT(aVeryVeryVeryLongVariableName AVeryVeryVeryLongType,
+	anotherLongVariableName AnotherLongType) {
+	a := 5
+	b := ChangeMe
+}
diff --git a/third_party/git/t/t4018/golang-struct b/third_party/git/t/t4018/golang-struct
new file mode 100644
index 0000000000..5deda77fee
--- /dev/null
+++ b/third_party/git/t/t4018/golang-struct
@@ -0,0 +1,4 @@
+type RIGHT struct {
+	a Type
+	b ChangeMe
+}
diff --git a/third_party/git/t/t4018/java-class-member-function b/third_party/git/t/t4018/java-class-member-function
new file mode 100644
index 0000000000..298bc7a71b
--- /dev/null
+++ b/third_party/git/t/t4018/java-class-member-function
@@ -0,0 +1,8 @@
+public class Beer
+{
+	int special;
+	public static void main(String RIGHT[])
+	{
+		System.out.print("ChangeMe");
+	}
+}
diff --git a/third_party/git/t/t4018/matlab-class-definition b/third_party/git/t/t4018/matlab-class-definition
new file mode 100644
index 0000000000..84daedfb4e
--- /dev/null
+++ b/third_party/git/t/t4018/matlab-class-definition
@@ -0,0 +1,5 @@
+classdef RIGHT
+    properties
+        ChangeMe
+    end
+end
diff --git a/third_party/git/t/t4018/matlab-function b/third_party/git/t/t4018/matlab-function
new file mode 100644
index 0000000000..897a9b13ff
--- /dev/null
+++ b/third_party/git/t/t4018/matlab-function
@@ -0,0 +1,4 @@
+function y = RIGHT()
+x = 5;
+y = ChangeMe + x;
+end
diff --git a/third_party/git/t/t4018/matlab-octave-section-1 b/third_party/git/t/t4018/matlab-octave-section-1
new file mode 100644
index 0000000000..3bb6c4670e
--- /dev/null
+++ b/third_party/git/t/t4018/matlab-octave-section-1
@@ -0,0 +1,3 @@
+%%% RIGHT section
+# this is octave script
+ChangeMe = 1;
diff --git a/third_party/git/t/t4018/matlab-octave-section-2 b/third_party/git/t/t4018/matlab-octave-section-2
new file mode 100644
index 0000000000..ab2980f7f2
--- /dev/null
+++ b/third_party/git/t/t4018/matlab-octave-section-2
@@ -0,0 +1,3 @@
+## RIGHT section
+# this is octave script
+ChangeMe = 1;
diff --git a/third_party/git/t/t4018/matlab-section b/third_party/git/t/t4018/matlab-section
new file mode 100644
index 0000000000..5ea59a5de0
--- /dev/null
+++ b/third_party/git/t/t4018/matlab-section
@@ -0,0 +1,3 @@
+%% RIGHT section
+% this is understood by both matlab and octave
+ChangeMe = 1;
diff --git a/third_party/git/t/t4018/perl-skip-end-of-heredoc b/third_party/git/t/t4018/perl-skip-end-of-heredoc
new file mode 100644
index 0000000000..c22d39b256
--- /dev/null
+++ b/third_party/git/t/t4018/perl-skip-end-of-heredoc
@@ -0,0 +1,8 @@
+sub RIGHTwithheredocument {
+	print <<"EOF"
+decoy here-doc
+EOF
+	# some lines of context
+	# to pad it out
+	print "ChangeMe\n";
+}
diff --git a/third_party/git/t/t4018/perl-skip-forward-decl b/third_party/git/t/t4018/perl-skip-forward-decl
new file mode 100644
index 0000000000..a98cb8bdad
--- /dev/null
+++ b/third_party/git/t/t4018/perl-skip-forward-decl
@@ -0,0 +1,10 @@
+package RIGHT;
+
+use strict;
+use warnings;
+use parent qw(Exporter);
+our @EXPORT_OK = qw(round finalround);
+
+sub other; # forward declaration
+
+# ChangeMe
diff --git a/third_party/git/t/t4018/perl-skip-sub-in-pod b/third_party/git/t/t4018/perl-skip-sub-in-pod
new file mode 100644
index 0000000000..e39f02462e
--- /dev/null
+++ b/third_party/git/t/t4018/perl-skip-sub-in-pod
@@ -0,0 +1,18 @@
+=head1 NAME
+
+Beer - subroutine to output fragment of a drinking song
+
+=head1 SYNOPSIS_RIGHT
+
+	use Beer qw(round finalround);
+
+	sub song {
+		for (my $i = 99; $i > 0; $i--) {
+			round $i;
+		}
+		finalround;
+	}
+
+	ChangeMe;
+
+=cut
diff --git a/third_party/git/t/t4018/perl-sub-definition b/third_party/git/t/t4018/perl-sub-definition
new file mode 100644
index 0000000000..a507d1f645
--- /dev/null
+++ b/third_party/git/t/t4018/perl-sub-definition
@@ -0,0 +1,4 @@
+sub RIGHT {
+	my ($n) = @_;
+	print "ChangeMe";
+}
diff --git a/third_party/git/t/t4018/perl-sub-definition-kr-brace b/third_party/git/t/t4018/perl-sub-definition-kr-brace
new file mode 100644
index 0000000000..330b3df114
--- /dev/null
+++ b/third_party/git/t/t4018/perl-sub-definition-kr-brace
@@ -0,0 +1,4 @@
+sub RIGHT
+{
+	print "ChangeMe\n";
+}
diff --git a/third_party/git/t/t4018/php-abstract-class b/third_party/git/t/t4018/php-abstract-class
new file mode 100644
index 0000000000..5213e12494
--- /dev/null
+++ b/third_party/git/t/t4018/php-abstract-class
@@ -0,0 +1,4 @@
+abstract class RIGHT
+{
+    const FOO = 'ChangeMe';
+}
diff --git a/third_party/git/t/t4018/php-class b/third_party/git/t/t4018/php-class
new file mode 100644
index 0000000000..7785b6303c
--- /dev/null
+++ b/third_party/git/t/t4018/php-class
@@ -0,0 +1,4 @@
+class RIGHT
+{
+    const FOO = 'ChangeMe';
+}
diff --git a/third_party/git/t/t4018/php-final-class b/third_party/git/t/t4018/php-final-class
new file mode 100644
index 0000000000..69f5710552
--- /dev/null
+++ b/third_party/git/t/t4018/php-final-class
@@ -0,0 +1,4 @@
+final class RIGHT
+{
+    const FOO = 'ChangeMe';
+}
diff --git a/third_party/git/t/t4018/php-function b/third_party/git/t/t4018/php-function
new file mode 100644
index 0000000000..35717c51c3
--- /dev/null
+++ b/third_party/git/t/t4018/php-function
@@ -0,0 +1,4 @@
+function RIGHT()
+{
+    return 'ChangeMe';
+}
diff --git a/third_party/git/t/t4018/php-interface b/third_party/git/t/t4018/php-interface
new file mode 100644
index 0000000000..86b49ad5d9
--- /dev/null
+++ b/third_party/git/t/t4018/php-interface
@@ -0,0 +1,4 @@
+interface RIGHT
+{
+    public function foo($ChangeMe);
+}
diff --git a/third_party/git/t/t4018/php-method b/third_party/git/t/t4018/php-method
new file mode 100644
index 0000000000..03af1a6d9d
--- /dev/null
+++ b/third_party/git/t/t4018/php-method
@@ -0,0 +1,7 @@
+class Klass
+{
+    public static function RIGHT()
+    {
+        return 'ChangeMe';
+    }
+}
diff --git a/third_party/git/t/t4018/php-trait b/third_party/git/t/t4018/php-trait
new file mode 100644
index 0000000000..65b8c82a61
--- /dev/null
+++ b/third_party/git/t/t4018/php-trait
@@ -0,0 +1,7 @@
+trait RIGHT
+{
+    public function foo($ChangeMe)
+    {
+        return 'foo';
+    }
+}
diff --git a/third_party/git/t/t4018/rust-fn b/third_party/git/t/t4018/rust-fn
new file mode 100644
index 0000000000..cbe02155f1
--- /dev/null
+++ b/third_party/git/t/t4018/rust-fn
@@ -0,0 +1,5 @@
+pub(self) fn RIGHT<T>(x: &[T]) where T: Debug {
+    let _ = x;
+    // a comment
+    let a = ChangeMe;
+}
diff --git a/third_party/git/t/t4018/rust-impl b/third_party/git/t/t4018/rust-impl
new file mode 100644
index 0000000000..09df3cd93b
--- /dev/null
+++ b/third_party/git/t/t4018/rust-impl
@@ -0,0 +1,5 @@
+impl<'a, T: AsRef<[u8]>>  std::RIGHT for Git<'a> {
+
+    pub fn ChangeMe(&self) -> () {
+    }
+}
diff --git a/third_party/git/t/t4018/rust-struct b/third_party/git/t/t4018/rust-struct
new file mode 100644
index 0000000000..76aff1c0d8
--- /dev/null
+++ b/third_party/git/t/t4018/rust-struct
@@ -0,0 +1,5 @@
+#[derive(Debug)]
+pub(super) struct RIGHT<'a> {
+    name: &'a str,
+    age: ChangeMe,
+}
diff --git a/third_party/git/t/t4018/rust-trait b/third_party/git/t/t4018/rust-trait
new file mode 100644
index 0000000000..ea397f09ed
--- /dev/null
+++ b/third_party/git/t/t4018/rust-trait
@@ -0,0 +1,5 @@
+unsafe trait RIGHT<T> {
+    fn len(&self) -> u32;
+    fn ChangeMe(&self, n: u32) -> T;
+    fn iter<F>(&self, f: F) where F: Fn(T);
+}