Merge branch 'jd/userdiff-kotlin'

A new built-in userdiff driver for kotlin.

* jd/userdiff-kotlin:
  userdiff: add builtin diff driver for kotlin language.
This commit is contained in:
Junio C Hamano 2022-03-23 14:09:29 -07:00
commit 3ece3cb865
15 changed files with 167 additions and 0 deletions

View File

@ -829,6 +829,8 @@ patterns are available:
- `java` suitable for source code in the Java language.
- `kotlin` suitable for source code in the Kotlin language.
- `markdown` suitable for Markdown documents.
- `matlab` suitable for source code in the MATLAB and Octave languages.

5
t/t4018/kotlin-class Normal file
View File

@ -0,0 +1,5 @@
class RIGHT {
//comment
//comment
return ChangeMe
}

View File

@ -0,0 +1,5 @@
enum class RIGHT{
// Left
// a comment
ChangeMe
}

5
t/t4018/kotlin-fun Normal file
View File

@ -0,0 +1,5 @@
fun RIGHT(){
//a comment
//b comment
return ChangeMe()
}

View File

@ -0,0 +1,5 @@
open class RIGHT{
// a comment
// b comment
// ChangeMe
}

View File

@ -0,0 +1,5 @@
value class RIGHT(Args){
// a comment
// b comment
ChangeMe
}

5
t/t4018/kotlin-interface Normal file
View File

@ -0,0 +1,5 @@
interface RIGHT{
//another comment
//another comment
//ChangeMe
}

View File

@ -0,0 +1,9 @@
class LEFT{
class CENTER{
fun RIGHT( a:Int){
//comment
//comment
ChangeMe
}
}
}

View File

@ -0,0 +1,5 @@
public class RIGHT{
//comment1
//comment2
ChangeMe
}

View File

@ -0,0 +1,5 @@
sealed class RIGHT {
// a comment
// b comment
ChangeMe
}

View File

@ -324,6 +324,7 @@ test_language_driver dts
test_language_driver fortran
test_language_driver html
test_language_driver java
test_language_driver kotlin
test_language_driver matlab
test_language_driver objc
test_language_driver pascal

43
t/t4034/kotlin/expect Normal file
View File

@ -0,0 +1,43 @@
<BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 11ea3de..2e1df4c 100644<RESET>
<BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET>
<CYAN>@@ -1,30 +1,30 @@<RESET>
println("Hello World<RED>!\n<RESET><GREEN>?<RESET>")
<GREEN>(<RESET>1<GREEN>) (<RESET>-1e10<GREEN>) (<RESET>0xabcdef<GREEN>)<RESET> '<RED>x<RESET><GREEN>y<RESET>'
[<RED>a<RESET><GREEN>x<RESET>] <RED>a<RESET><GREEN>x<RESET>-><RED>b a<RESET><GREEN>y x<RESET>.<RED>b<RESET><GREEN>y<RESET>
!<RED>a a<RESET><GREEN>x x<RESET>.inv() <RED>a<RESET><GREEN>x<RESET>*<RED>b a<RESET><GREEN>y x<RESET>&<RED>b<RESET>
<RED>a<RESET><GREEN>y<RESET>
<GREEN>x<RESET>*<RED>b a<RESET><GREEN>y x<RESET>/<RED>b a<RESET><GREEN>y x<RESET>%<RED>b<RESET>
<RED>a<RESET><GREEN>y<RESET>
<GREEN>x<RESET>+<RED>b a<RESET><GREEN>y x<RESET>-<RED>b<RESET><GREEN>y<RESET>
a <RED>shr<RESET><GREEN>shl<RESET> b
<RED>a<RESET><GREEN>x<RESET><<RED>b a<RESET><GREEN>y x<RESET><=<RED>b a<RESET><GREEN>y x<RESET>><RED>b a<RESET><GREEN>y x<RESET>>=<RED>b<RESET>
<RED>a<RESET><GREEN>y<RESET>
<GREEN>x<RESET>==<RED>b a<RESET><GREEN>y x<RESET>!=<RED>b a<RESET><GREEN>y x<RESET>===<RED>b<RESET>
<RED>a<RESET><GREEN>y<RESET>
<GREEN>x<RESET> and <RED>b<RESET>
<RED>a<RESET><GREEN>y<RESET>
<GREEN>x<RESET>^<RED>b<RESET>
<RED>a<RESET><GREEN>y<RESET>
<GREEN>x<RESET> or <RED>b<RESET>
<RED>a<RESET><GREEN>y<RESET>
<GREEN>x<RESET>&&<RED>b a<RESET><GREEN>y x<RESET>||<RED>b<RESET>
<RED>a<RESET><GREEN>y<RESET>
<GREEN>x<RESET>=<RED>b a<RESET><GREEN>y x<RESET>+=<RED>b a<RESET><GREEN>y x<RESET>-=<RED>b a<RESET><GREEN>y x<RESET>*=<RED>b a<RESET><GREEN>y x<RESET>/=<RED>b a<RESET><GREEN>y x<RESET>%=<RED>b a<RESET><GREEN>y x<RESET><<=<RED>b a<RESET><GREEN>y x<RESET>>>=<RED>b a<RESET><GREEN>y x<RESET>&=<RED>b a<RESET><GREEN>y x<RESET>^=<RED>b a<RESET><GREEN>y x<RESET>|=<RED>b<RESET><GREEN>y<RESET>
a<RED>=<RESET><GREEN>+=<RESET>b c<RED>+=<RESET><GREEN>=<RESET>d e<RED>-=<RESET><GREEN><=<RESET>f g<RED>*=<RESET><GREEN>>=<RESET>h i<RED>/=<RESET><GREEN>/<RESET>j k<RED>%=<RESET><GREEN>%<RESET>l m<RED><<=<RESET><GREEN><<<RESET>n o<RED>>>=<RESET><GREEN>>><RESET>p q<RED>&=<RESET><GREEN>&<RESET>r s<RED>^=<RESET><GREEN>^<RESET>t u<RED>|=<RESET><GREEN>|<RESET>v
a<RED><<=<RESET><GREEN><=<RESET>b
a<RED>||<RESET><GREEN>|<RESET>b a<RED>&&<RESET><GREEN>&<RESET>b
<RED>a<RESET><GREEN>x<RESET>,y
--a<RED>==<RESET><GREEN>!=<RESET>--b
a++<RED>==<RESET><GREEN>!=<RESET>++b
<RED>0xFF_EC_DE_5E 0b100_000 100_000<RESET><GREEN>0xFF_E1_DE_5E 0b100_100 200_000<RESET>
a<RED>==<RESET><GREEN>===<RESET>b
a<RED>!!<RESET><GREEN>!=<RESET>b
<RED>_32<RESET><GREEN>_33<RESET>.find(arr)
X.<RED>fill<RESET><GREEN>find<RESET>()
X.<RED>u<RESET><GREEN>f<RESET>+1
X.u<RED>-<RESET><GREEN>+<RESET>2
a<RED>.<RESET><GREEN>..<RESET>b
a<RED>?.<RESET><GREEN>?:<RESET>b
<RED>.32_00_456<RESET><GREEN>.32_00_446<RESET>

30
t/t4034/kotlin/post Normal file
View File

@ -0,0 +1,30 @@
println("Hello World?")
(1) (-1e10) (0xabcdef) 'y'
[x] x->y x.y
!x x.inv() x*y x&y
x*y x/y x%y
x+y x-y
a shl b
x<y x<=y x>y x>=y
x==y x!=y x===y
x and y
x^y
x or y
x&&y x||y
x=y x+=y x-=y x*=y x/=y x%=y x<<=y x>>=y x&=y x^=y x|=y
a+=b c=d e<=f g>=h i/j k%l m<<n o>>p q&r s^t u|v
a<=b
a|b a&b
x,y
--a!=--b
a++!=++b
0xFF_E1_DE_5E 0b100_100 200_000
a===b
a!=b
_33.find(arr)
X.find()
X.f+1
X.u+2
a..b
a?:b
.32_00_446

30
t/t4034/kotlin/pre Normal file
View File

@ -0,0 +1,30 @@
println("Hello World!\n")
1 -1e10 0xabcdef 'x'
[a] a->b a.b
!a a.inv() a*b a&b
a*b a/b a%b
a+b a-b
a shr b
a<b a<=b a>b a>=b
a==b a!=b a===b
a and b
a^b
a or b
a&&b a||b
a=b a+=b a-=b a*=b a/=b a%=b a<<=b a>>=b a&=b a^=b a|=b
a=b c+=d e-=f g*=h i/=j k%=l m<<=n o>>=p q&=r s^=t u|=v
a<<=b
a||b a&&b
a,y
--a==--b
a++==++b
0xFF_EC_DE_5E 0b100_000 100_000
a==b
a!!b
_32.find(arr)
X.fill()
X.u+1
X.u-2
a.b
a?.b
.32_00_456

View File

@ -180,6 +180,18 @@ PATTERNS("java",
"|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?"
"|[-+*/<>%&^|=!]="
"|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"),
PATTERNS("kotlin",
"^[ \t]*(([a-z]+[ \t]+)*(fun|class|interface)[ \t]+.*)$",
/* -- */
"[a-zA-Z_][a-zA-Z0-9_]*"
/* hexadecimal and binary numbers */
"|0[xXbB][0-9a-fA-F_]+[lLuU]*"
/* integers and floats */
"|[0-9][0-9_]*([.][0-9_]*)?([Ee][-+]?[0-9]+)?[fFlLuU]*"
/* floating point numbers beginning with decimal point */
"|[.][0-9][0-9_]*([Ee][-+]?[0-9]+)?[fFlLuU]?"
/* unary and binary operators */
"|[-+*/<>%&^|=!]==?|--|\\+\\+|<<=|>>=|&&|\\|\\||->|\\.\\*|!!|[?:.][.:]"),
PATTERNS("markdown",
"^ {0,3}#{1,6}[ \t].*",
/* -- */