From 4dee1c89de1d1b7047525878d34f8e452569324f Mon Sep 17 00:00:00 2001 From: Jan Skrasek Date: Thu, 26 Oct 2023 19:57:41 +0200 Subject: [PATCH] add support for data object --- dist/Kotlin.JSON-tmLanguage | 4 +- dist/Kotlin.YAML-tmLanguage | 4 +- dist/Kotlin.tmLanguage | 4 +- snapshots/corpus.kt.snap | 96 +++++++++++++++++-------------------- src/classes.YAML-tmLanguage | 4 +- test/Objects.test.kt | 4 ++ 6 files changed, 55 insertions(+), 61 deletions(-) diff --git a/dist/Kotlin.JSON-tmLanguage b/dist/Kotlin.JSON-tmLanguage index 561dd98..d964972 100644 --- a/dist/Kotlin.JSON-tmLanguage +++ b/dist/Kotlin.JSON-tmLanguage @@ -40,7 +40,7 @@ "class-literal": { "patterns": [ { - "begin": "(?=\\b(?:(?:(?:data|value)\\s+)?class|(?:(?:fun|value)\\s+)?interface)\\s+\\w+)\\b", + "begin": "(?=\\b(?:(?:(?:data|value)\\s+)?class|(?:data\\s+)?object|(?:(?:fun|value)\\s+)?interface)\\s+\\w+)\\b", "end": "(?=\\}|$)", "name": "meta.class.kotlin", "patterns": [ @@ -48,7 +48,7 @@ "include": "#keywords" }, { - "begin": "\\b((?:(?:data|value)\\s+)?class|(?:(?:fun|value)\\s+)?interface)\\b\\s+(\\w+)", + "begin": "\\b((?:(?:data|value)\\s+)?class|(?:data\\s+)?object|(?:(?:fun|value)\\s+)?interface)\\b\\s+(\\w+)", "beginCaptures": { "1": { "name": "storage.modifier.kotlin" diff --git a/dist/Kotlin.YAML-tmLanguage b/dist/Kotlin.YAML-tmLanguage index a1b65b3..5bb4aaa 100644 --- a/dist/Kotlin.YAML-tmLanguage +++ b/dist/Kotlin.YAML-tmLanguage @@ -22,12 +22,12 @@ repository: class-literal: patterns: - - begin: '(?=\b(?:(?:(?:data|value)\s+)?class|(?:(?:fun|value)\s+)?interface)\s+\w+)\b' + begin: '(?=\b(?:(?:(?:data|value)\s+)?class|(?:data\s+)?object|(?:(?:fun|value)\s+)?interface)\s+\w+)\b' end: '(?=\}|$)' name: meta.class.kotlin patterns: - {include: '#keywords'} - - {begin: '\b((?:(?:data|value)\s+)?class|(?:(?:fun|value)\s+)?interface)\b\s+(\w+)', beginCaptures: {'1': {name: storage.modifier.kotlin}, '2': {name: entity.name.class.kotlin}}, end: '(?=\(|\{|$)', patterns: [{include: '#comments'}, {include: '#annotations'}, {include: '#types'}]} + - {begin: '\b((?:(?:data|value)\s+)?class|(?:data\s+)?object|(?:(?:fun|value)\s+)?interface)\b\s+(\w+)', beginCaptures: {'1': {name: storage.modifier.kotlin}, '2': {name: entity.name.class.kotlin}}, end: '(?=\(|\{|$)', patterns: [{include: '#comments'}, {include: '#annotations'}, {include: '#types'}]} - {begin: (\(), beginCaptures: {'0': {name: punctuation.section.group.begin.kotlin}, '1': {name: punctuation.definition.parameters.begin.kotlin}}, end: (\)), endCaptures: {'0': {name: punctuation.section.group.end.kotlin}, '1': {name: punctuation.definition.parameters.end.kotlin}}, name: meta.parameters.kotlin, patterns: [{include: '#class-parameter-list'}, {include: '#comments'}]} - {begin: '\{', beginCaptures: {'0': {name: punctuation.section.group.begin.kotlin}}, end: '\}', endCaptures: {'0': {name: punctuation.section.group.end.kotlin}}, name: meta.block.kotlin, patterns: [{include: '#code'}]} repository: diff --git a/dist/Kotlin.tmLanguage b/dist/Kotlin.tmLanguage index 292df8d..017fdf5 100644 --- a/dist/Kotlin.tmLanguage +++ b/dist/Kotlin.tmLanguage @@ -67,7 +67,7 @@ begin - (?=\b(?:(?:(?:data|value)\s+)?class|(?:(?:fun|value)\s+)?interface)\s+\w+)\b + (?=\b(?:(?:(?:data|value)\s+)?class|(?:data\s+)?object|(?:(?:fun|value)\s+)?interface)\s+\w+)\b end (?=\}|$) name @@ -80,7 +80,7 @@ begin - \b((?:(?:data|value)\s+)?class|(?:(?:fun|value)\s+)?interface)\b\s+(\w+) + \b((?:(?:data|value)\s+)?class|(?:data\s+)?object|(?:(?:fun|value)\s+)?interface)\b\s+(\w+) beginCaptures 1 diff --git a/snapshots/corpus.kt.snap b/snapshots/corpus.kt.snap index 8785847..a6d2420 100644 --- a/snapshots/corpus.kt.snap +++ b/snapshots/corpus.kt.snap @@ -823,15 +823,10 @@ # ^ source.kotlin meta.class.kotlin meta.parameters.kotlin punctuation.section.group.begin.kotlin punctuation.definition.parameters.begin.kotlin # ^ source.kotlin meta.class.kotlin meta.parameters.kotlin punctuation.section.group.end.kotlin punctuation.definition.parameters.end.kotlin >object NotANumber : Expr() -#^^^^^^ source.kotlin storage.type.kotlin -# ^ source.kotlin -# ^^^^^^^^^^ source.kotlin entity.name.type.class.kotlin -# ^ source.kotlin -# ^ source.kotlin keyword.operator.declaration.kotlin -# ^ source.kotlin -# ^^^^ source.kotlin entity.name.type.class.kotlin -# ^ source.kotlin meta.group.kotlin punctuation.section.group.begin.kotlin -# ^ source.kotlin meta.group.kotlin punctuation.section.group.end.kotlin +#^^^^^^ source.kotlin meta.class.kotlin storage.type.kotlin +# ^^^^^^^^^^^^^^^^^^ source.kotlin meta.class.kotlin +# ^ source.kotlin meta.class.kotlin meta.parameters.kotlin punctuation.section.group.begin.kotlin punctuation.definition.parameters.begin.kotlin +# ^ source.kotlin meta.class.kotlin meta.parameters.kotlin punctuation.section.group.end.kotlin punctuation.definition.parameters.end.kotlin >// #endregion #^^ source.kotlin punctuation.definition.comment.kotlin comment.line.double-slash.kotlin # ^^^^^^^^^^^^ source.kotlin punctuation.definition.comment.kotlin @@ -1074,54 +1069,49 @@ #^ source.kotlin meta.class.kotlin meta.block.kotlin punctuation.section.group.end.kotlin > >object DefaultListener : MouseAdapter() { -#^^^^^^ source.kotlin storage.type.kotlin -# ^ source.kotlin -# ^^^^^^^^^^^^^^^ source.kotlin entity.name.type.class.kotlin -# ^ source.kotlin -# ^ source.kotlin keyword.operator.declaration.kotlin -# ^ source.kotlin -# ^^^^^^^^^^^^ source.kotlin entity.name.type.class.kotlin -# ^ source.kotlin meta.group.kotlin punctuation.section.group.begin.kotlin -# ^ source.kotlin meta.group.kotlin punctuation.section.group.end.kotlin -# ^ source.kotlin -# ^ source.kotlin meta.block.kotlin punctuation.section.group.begin.kotlin +#^^^^^^ source.kotlin meta.class.kotlin storage.type.kotlin +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.kotlin meta.class.kotlin +# ^ source.kotlin meta.class.kotlin meta.parameters.kotlin punctuation.section.group.begin.kotlin punctuation.definition.parameters.begin.kotlin +# ^ source.kotlin meta.class.kotlin meta.parameters.kotlin punctuation.section.group.end.kotlin punctuation.definition.parameters.end.kotlin +# ^ source.kotlin meta.class.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin punctuation.section.group.begin.kotlin > override fun mouseClicked(e: MouseEvent) { } -#^^^^ source.kotlin meta.block.kotlin -# ^^^^^^^^ source.kotlin meta.block.kotlin storage.modifier.kotlin -# ^ source.kotlin meta.block.kotlin -# ^^^ source.kotlin meta.block.kotlin meta.function.kotlin keyword.other.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin -# ^^^^^^^^^^^^ source.kotlin meta.block.kotlin meta.function.kotlin entity.name.function.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin punctuation.section.group.begin.kotlin punctuation.definition.parameters.begin.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin variable.parameter.function.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin keyword.operator.declaration.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin -# ^^^^^^^^^^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin entity.name.type.class.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin punctuation.section.group.end.kotlin punctuation.definition.parameters.end.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin punctuation.section.group.begin.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin punctuation.section.group.end.kotlin +#^^^^ source.kotlin meta.class.kotlin meta.block.kotlin +# ^^^^^^^^ source.kotlin meta.class.kotlin meta.block.kotlin storage.modifier.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin +# ^^^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin keyword.other.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin +# ^^^^^^^^^^^^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin entity.name.function.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin punctuation.section.group.begin.kotlin punctuation.definition.parameters.begin.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin variable.parameter.function.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin keyword.operator.declaration.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin +# ^^^^^^^^^^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin entity.name.type.class.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin punctuation.section.group.end.kotlin punctuation.definition.parameters.end.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin punctuation.section.group.begin.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin punctuation.section.group.end.kotlin > > override fun mouseEntered(e: MouseEvent) { } -#^^^^ source.kotlin meta.block.kotlin -# ^^^^^^^^ source.kotlin meta.block.kotlin storage.modifier.kotlin -# ^ source.kotlin meta.block.kotlin -# ^^^ source.kotlin meta.block.kotlin meta.function.kotlin keyword.other.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin -# ^^^^^^^^^^^^ source.kotlin meta.block.kotlin meta.function.kotlin entity.name.function.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin punctuation.section.group.begin.kotlin punctuation.definition.parameters.begin.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin variable.parameter.function.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin keyword.operator.declaration.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin -# ^^^^^^^^^^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin entity.name.type.class.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin punctuation.section.group.end.kotlin punctuation.definition.parameters.end.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin punctuation.section.group.begin.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin -# ^ source.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin punctuation.section.group.end.kotlin +#^^^^ source.kotlin meta.class.kotlin meta.block.kotlin +# ^^^^^^^^ source.kotlin meta.class.kotlin meta.block.kotlin storage.modifier.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin +# ^^^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin keyword.other.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin +# ^^^^^^^^^^^^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin entity.name.function.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin punctuation.section.group.begin.kotlin punctuation.definition.parameters.begin.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin variable.parameter.function.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin keyword.operator.declaration.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin +# ^^^^^^^^^^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin entity.name.type.class.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.parameters.kotlin punctuation.section.group.end.kotlin punctuation.definition.parameters.end.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin punctuation.section.group.begin.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin +# ^ source.kotlin meta.class.kotlin meta.block.kotlin meta.function.kotlin meta.block.kotlin punctuation.section.group.end.kotlin >} -#^ source.kotlin meta.block.kotlin punctuation.section.group.end.kotlin +#^ source.kotlin meta.class.kotlin meta.block.kotlin punctuation.section.group.end.kotlin > >class Feature : Node("Title", "Content", "Description") { #^^^^^ source.kotlin meta.class.kotlin storage.modifier.kotlin diff --git a/src/classes.YAML-tmLanguage b/src/classes.YAML-tmLanguage index 3cc29e1..3a3f60d 100644 --- a/src/classes.YAML-tmLanguage +++ b/src/classes.YAML-tmLanguage @@ -2,14 +2,14 @@ repository: class-literal: patterns: - - begin: '(?=\b(?:(?:(?:data|value)\s+)?class|(?:(?:fun|value)\s+)?interface)\s+\w+)\b' + begin: '(?=\b(?:(?:(?:data|value)\s+)?class|(?:data\s+)?object|(?:(?:fun|value)\s+)?interface)\s+\w+)\b' end: '(?=\}|$)' name: meta.class.kotlin patterns: - include: '#keywords' - - begin: '\b((?:(?:data|value)\s+)?class|(?:(?:fun|value)\s+)?interface)\b\s+(\w+)' + begin: '\b((?:(?:data|value)\s+)?class|(?:data\s+)?object|(?:(?:fun|value)\s+)?interface)\b\s+(\w+)' beginCaptures: '1': name: storage.modifier.kotlin diff --git a/test/Objects.test.kt b/test/Objects.test.kt index 9693b03..bad80ee 100644 --- a/test/Objects.test.kt +++ b/test/Objects.test.kt @@ -33,3 +33,7 @@ }) //^ meta.group.kotlin meta.block.kotlin punctuation.section.group.end.kotlin // ^ meta.group.kotlin punctuation.section.group.end.kotlin + +data object Foo +// <------- source.kotlin meta.class.kotlin storage.modifier.kotlin +// ^^^ source.kotlin meta.class.kotlin