diff --git a/CHANGES.md b/CHANGES.md index 0036c3a5fa..5f77890137 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,6 +4,7 @@ Grammars: - fix(python) Fix recognition of numeric literals followed by keywords without whitespace (#2985) [Richard Gibson][] - enh(swift) add SE-0290 unavailability condition (#3382) [Bradley Mackey][] +- enh(java) add `sealed` and `non-sealed` keywords (#3386) [Bradley Mackey][] [Richard Gibson]: https://github.com/gibson042 [Bradley Mackey]: https://github.com/bradleymackey diff --git a/src/languages/java.js b/src/languages/java.js index 17e73e66ea..8c55aae215 100644 --- a/src/languages/java.js +++ b/src/languages/java.js @@ -73,7 +73,8 @@ export default function(hljs) { 'module', 'requires', 'exports', - 'do' + 'do', + 'sealed' ]; const BUILT_INS = [ @@ -179,6 +180,11 @@ export default function(hljs) { 3: "title.class" } }, + { + // Exceptions for hyphenated keywords + match: /non-sealed/, + scope: "keyword" + }, { begin: [ JAVA_IDENT_RE, diff --git a/test/markup/java/titles.expect.txt b/test/markup/java/titles.expect.txt index 571bd0fe51..2043511c9a 100644 --- a/test/markup/java/titles.expect.txt +++ b/test/markup/java/titles.expect.txt @@ -8,3 +8,11 @@ } } } + +sealed interface Command permits LoginCommand { + void run(); +} + +non-sealed abstract class UserPluginCommand extends Command { + void runAsUser(); +} diff --git a/test/markup/java/titles.txt b/test/markup/java/titles.txt index c43f696c92..a4d553fbb6 100644 --- a/test/markup/java/titles.txt +++ b/test/markup/java/titles.txt @@ -8,3 +8,11 @@ public class Greet { } } } + +sealed interface Command permits LoginCommand { + void run(); +} + +non-sealed abstract class UserPluginCommand extends Command { + void runAsUser(); +}