summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilfred Hughes <me@wilfred.me.uk>2023-10-26 08:55:43 -0700
committerWilfred Hughes <me@wilfred.me.uk>2023-10-26 08:56:37 -0700
commit778a6bee9a82eb6e992ddfc92c5eaf7eae1c1368 (patch)
tree7c4e6af9ec366806310ef9cd3068a390726caa85
parent8400000b3b7e0efd19ff40c1a420dd43c94b9e9c (diff)
Flatten nullable types in Kotlin
Workaround for #589 and #411
-rw-r--r--CHANGELOG.md3
-rw-r--r--sample_files/compare.expected5
-rw-r--r--sample_files/nullable_after.kt3
-rw-r--r--sample_files/nullable_before.kt3
-rw-r--r--src/parse/tree_sitter_parser.rs6
5 files changed, 17 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0b876287f..c4f154e64 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,8 @@
Added support for SCSS.
-Updated the Kotlin parser.
+Updated the Kotlin parser and improved handling of Kotlin nullable
+types.
### Command Line Interface
diff --git a/sample_files/compare.expected b/sample_files/compare.expected
index da1665a85..ddb4b1725 100644
--- a/sample_files/compare.expected
+++ b/sample_files/compare.expected
@@ -1,5 +1,5 @@
sample_files/Session_before.kt sample_files/Session_after.kt
-7b0c38d1fcc9b4e20c5fcf0070cb1620 -
+80c53658ee849d38f397863803677a02 -
sample_files/ada_before.adb sample_files/ada_after.adb
626e22f4f256ae591ece3f280176b3f7 -
@@ -151,6 +151,9 @@ sample_files/newick_before.nwk sample_files/newick_after.nwk
sample_files/nix_before.nix sample_files/nix_after.nix
e00b95a4cf3fa3edf994155d8656063f -
+sample_files/nullable_before.kt sample_files/nullable_after.kt
+66da628a2c20e18059b8669aaa14a163 -
+
sample_files/ocaml_before.ml sample_files/ocaml_after.ml
2113c6c7959b8099f678d13953f7f44a -
diff --git a/sample_files/nullable_after.kt b/sample_files/nullable_after.kt
new file mode 100644
index 000000000..3f5b5d1c9
--- /dev/null
+++ b/sample_files/nullable_after.kt
@@ -0,0 +1,3 @@
+class Foo {
+ val str: String
+}
diff --git a/sample_files/nullable_before.kt b/sample_files/nullable_before.kt
new file mode 100644
index 000000000..e345a0f3d
--- /dev/null
+++ b/sample_files/nullable_before.kt
@@ -0,0 +1,3 @@
+class Foo {
+ val str: String?
+}
diff --git a/src/parse/tree_sitter_parser.rs b/src/parse/tree_sitter_parser.rs
index ee4e3b9aa..cf8775666 100644
--- a/src/parse/tree_sitter_parser.rs
+++ b/src/parse/tree_sitter_parser.rs
@@ -615,7 +615,11 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
let language = unsafe { tree_sitter_kotlin() };
TreeSitterConfig {
language,
- atom_nodes: vec!["line_string_literal", "character_literal"]
+ // Flattening nullable type means we can't diff the
+ // structure of complex types within, but it beats
+ // ignoring nullable changes.
+ // https://github.com/Wilfred/difftastic/issues/411
+ atom_nodes: vec!["line_string_literal", "character_literal", "nullable_type"]
.into_iter()
.collect(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]"), ("<", ">")]