diff options
-rw-r--r-- | CHANGES | 2 | ||||
-rw-r--r-- | pygments/lexers/jvm.py | 8 | ||||
-rw-r--r-- | tests/test_java.py | 14 |
3 files changed, 14 insertions, 10 deletions
@@ -39,6 +39,8 @@ Version 2.5.0 - Add LICENSE file to wheel builds - Emacs Lisp: add more string functions - Java: support ``var`` contextual keyword +- Java: make structural punctuation (braces, parens, colon, comma) + ``Punctuation``, not ``Operator`` (#987) - Ruby: support squiggly heredocs - Dart: support ``@`` annotations - GAS: accept registers in directive arguments diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py index 604a6967..3d5cce48 100644 --- a/pygments/lexers/jvm.py +++ b/pygments/lexers/jvm.py @@ -50,7 +50,7 @@ class JavaLexer(RegexLexer): (r'((?:(?:[^\W\d]|\$)[\w.\[\]$<>]*\s+)+?)' # return arguments r'((?:[^\W\d]|\$)[\w$]*)' # method name r'(\s*)(\()', # signature start - bygroups(using(this), Name.Function, Text, Operator)), + bygroups(using(this), Name.Function, Text, Punctuation)), (r'@[^\W\d][\w.]*', Name.Decorator), (r'(abstract|const|enum|extends|final|implements|native|private|' r'protected|public|static|strictfp|super|synchronized|throws|' @@ -67,7 +67,8 @@ class JavaLexer(RegexLexer): 'import'), (r'"(\\\\|\\"|[^"])*"', String), (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char), - (r'(\.)((?:[^\W\d]|\$)[\w$]*)', bygroups(Operator, Name.Attribute)), + (r'(\.)((?:[^\W\d]|\$)[\w$]*)', bygroups(Punctuation, + Name.Attribute)), (r'^\s*([^\W\d]|\$)[\w$]*:', Name.Label), (r'([^\W\d]|\$)[\w$]*', Name), (r'([0-9][0-9_]*\.([0-9][0-9_]*)?|' @@ -82,7 +83,8 @@ class JavaLexer(RegexLexer): (r'0[bB][01][01_]*[lL]?', Number.Bin), (r'0[0-7_]+[lL]?', Number.Oct), (r'0|[1-9][0-9_]*[lL]?', Number.Integer), - (r'[~^*!%&\[\](){}<>|+=:;,./?-]', Operator), + (r'[~^*!%&\[\]<>|+=/?-]', Operator), + (r'[{}();:.,]', Punctuation), (r'\n', Text) ], 'class': [ diff --git a/tests/test_java.py b/tests/test_java.py index 40a1ec1b..94463246 100644 --- a/tests/test_java.py +++ b/tests/test_java.py @@ -9,7 +9,7 @@ import pytest -from pygments.token import Text, Name, Operator, Keyword, Number +from pygments.token import Text, Name, Punctuation, Keyword, Number from pygments.lexers import JavaLexer @@ -18,23 +18,23 @@ def lexer(): yield JavaLexer() -def testEnhancedFor(lexer): +def test_enhanced_for(lexer): fragment = u'label:\nfor(String var2: var1) {}\n' tokens = [ (Name.Label, u'label:'), (Text, u'\n'), (Keyword, u'for'), - (Operator, u'('), + (Punctuation, u'('), (Name, u'String'), (Text, u' '), (Name, u'var2'), - (Operator, u':'), + (Punctuation, u':'), (Text, u' '), (Name, u'var1'), - (Operator, u')'), + (Punctuation, u')'), (Text, u' '), - (Operator, u'{'), - (Operator, u'}'), + (Punctuation, u'{'), + (Punctuation, u'}'), (Text, u'\n'), ] assert list(lexer.get_tokens(fragment)) == tokens |