MagicStack/MagicPython

Add support for PEP 585

sprt opened this issue · 2 comments

sprt commented

Since PEP 585 implemented in Python 3.9, one can use the generics syntax even with built-in collections, not just those included in typing (e.g. list vs. typing.List).

As such, in the screenshot below, the type hint for argument c isn't highlighted properly. In list[int], both list and int should be highlighted, whereas only int is highlighted currently. The type hint for argument b is highlighted correctly (and same for a).

  • Editor name and version: VS Code 1.51.1
  • Platform: Ubuntu 16.04
  • Color scheme: Tomorrow Night (also tested with other ones but none exhibit the desired behavior)
  • MagicPython version: From the VS Code extension = 1.1.0
  • A screenshot:
    Screenshot from 2020-11-16 15-29-09
  • 5-10 lines of surrounding code: None

Unfortunately there is no scope for inline type hints at all - as far as I could find.

The yellow highlighting in your screenshot is because int and list have the scope support.type.python. This scope also applies for the int in this snippet: print(int(1.2)).

There are scopes for type hint comments though:

meta.typehint.comment.python
comment.typehint.directive.notation.python
comment.typehint.ignore.notation.python
comment.typehint.punctuation.notation.python
comment.typehint.type.notation.python
comment.typehint.variable.notation.python

I would love to see one or multiple scope(s) for inline type hints (variables, parameters, returns) like PyCharm has.

EDIT: with the new Pylance language server you can get semantic highlighting including type hints: https://github.com/microsoft/pylance-release#semantic-highlighting