diff --git a/src/languages/javascript.js b/src/languages/javascript.js index 7ff30465b6..9636f508da 100644 --- a/src/languages/javascript.js +++ b/src/languages/javascript.js @@ -93,6 +93,13 @@ export default function(hljs) { hljs.C_BLOCK_COMMENT_MODE, hljs.C_LINE_COMMENT_MODE ]); + var PARAMS = { + className: 'params', + begin: /\(/, end: /\)/, + excludeBegin: true, + excludeEnd: true, + contains: PARAMS_CONTAINS + }; return { name: 'JavaScript', @@ -220,13 +227,7 @@ export default function(hljs) { beginKeywords: 'function', end: /\{/, excludeEnd: true, contains: [ hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}), - { - className: 'params', - begin: /\(/, end: /\)/, - excludeBegin: true, - excludeEnd: true, - contains: PARAMS_CONTAINS - } + PARAMS ], illegal: /\[|%/ }, @@ -245,7 +246,18 @@ export default function(hljs) { ] }, { - beginKeywords: 'constructor get set', end: /\{/, excludeEnd: true + beginKeywords: 'constructor', end: /\{/, excludeEnd: true + }, + { + begin:'(get|set)\\s*(?=' + IDENT_RE+ '\\()', + end: /{/, + keywords: "get set", + contains: [ + hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}), + { begin: /\(\)/ }, // eat to avoid empty params + PARAMS + ] + } ], illegal: /#(?!!)/ diff --git a/test/markup/javascript/keyword_as_identifier.expect.txt b/test/markup/javascript/keyword_as_identifier.expect.txt new file mode 100644 index 0000000000..0a06941a82 --- /dev/null +++ b/test/markup/javascript/keyword_as_identifier.expect.txt @@ -0,0 +1,12 @@ +const set = new Set([1, 2]); +for (const e of set) +console.log(e); + +class A { + set value(x) { + + } + get valid() { + + } +} diff --git a/test/markup/javascript/keyword_as_identifier.txt b/test/markup/javascript/keyword_as_identifier.txt new file mode 100644 index 0000000000..ae933b9d55 --- /dev/null +++ b/test/markup/javascript/keyword_as_identifier.txt @@ -0,0 +1,12 @@ +const set = new Set([1, 2]); +for (const e of set) +console.log(e); + +class A { + set value(x) { + + } + get valid() { + + } +}