Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version v2021.5.1 Semantic Textmate Scope is incorrect for negative numeric literals, when used as a parameter #207

Open
ninmonkey opened this issue Jun 5, 2021 · 4 comments

Comments

@ninmonkey
Copy link

"editor.semanticHighlighting.enabled": true is on

System Details

System Details (Click to Expand)

System Details Output

### VSCode version: 1.56.2 054a9295330880ed74ceaedda236253b4f39a335 x64

### VSCode extensions:
adrieankhisbe.vscode-ndjson@0.100.0
ahebrank.yaml2json@0.0.3
alefragnani.Bookmarks@13.0.4
arcticicestudio.nord-visual-studio-code@0.15.1
bierner.docs-view@0.0.9
bungcip.better-toml@0.3.2
christian-kohler.path-intellisense@2.3.0
CoenraadS.bracket-pair-colorizer@1.0.61
CoenraadS.bracket-pair-colorizer-2@0.2.0
darkriszty.markdown-table-prettify@3.4.0
DavidAnson.vscode-markdownlint@0.41.1
donjayamanne.githistory@0.6.16
DotJoshJohnson.xml@2.5.1
eamodio.gitlens@11.4.1
eamodio.tsl-problem-matcher@0.4.0
Equinusocio.vsc-community-material-theme@1.4.2
Equinusocio.vsc-material-theme@33.2.0
equinusocio.vsc-material-theme-icons@1.2.2
esbenp.prettier-vscode@6.4.0
evan-buss.font-switcher@4.0.1
firefox-devtools.vscode-firefox-debug@2.9.4
formulahendry.code-runner@0.11.4
GitHub.github-vscode-theme@4.1.1
GitHub.vscode-pull-request-github@0.26.0
hbenl.vscode-test-explorer@2.20.2
icsharpcode.ilspy-vscode@0.10.0
juanmnl.vscode-theme-hydra@3.2.0
littlefoxteam.vscode-python-test-adapter@0.6.8
LouisWT.regexp-preview@0.1.5
matangover.mypy@0.2.0
mechatroner.rainbow-csv@1.8.1
medo64.code-point@1.7.5
ms-azure-devops.azure-pipelines@1.183.0
ms-dotnettools.csharp@1.23.12
ms-dotnettools.dotnet-interactive-vscode@1.0.2256020
ms-dotnettools.vscode-dotnet-runtime@1.1.0
ms-dotnettools.vscode-dotnet-sdk@0.5.0
ms-mssql.mssql@1.10.1
ms-python.python@2021.6.908196464-dev
ms-python.vscode-pylance@2021.6.1-pre.1
ms-toolsai.jupyter@2021.6.832593372
ms-vscode-remote.remote-wsl@0.56.4
ms-vscode.azure-account@0.9.8
ms-vscode.cpptools@1.4.0
ms-vscode.powershell@2021.5.1
ms-vscode.powershell-preview@2020.7.0
ms-vscode.test-adapter-converter@0.0.9
ms-vscode.vscode-typescript-tslint-plugin@1.3.3
msjsdiag.debugger-for-chrome@4.12.12
octref.vscode-json-transform@0.1.2
PKief.material-icon-theme@4.7.0
PowerQuery.vscode-powerquery@0.1.19
RandomFractalsInc.snippets-viewer@1.9.0
RandomFractalsInc.vscode-data-preview@2.3.0
redhat.vscode-commons@0.0.6
redhat.vscode-xml@0.16.1
redhat.vscode-yaml@0.19.2
RobbOwen.synthwave-vscode@0.1.8
rogalmic.bash-debug@0.3.9
rust-lang.rust@0.7.8
sallar.vscode-duotone-dark@0.3.3
samuelcolvin.jinjahtml@0.16.0
shakram02.bash-beautify@0.1.1
shd101wyy.markdown-preview-enhanced@0.5.18
stansw.vscode-odata@0.1.0
stuart.unique-window-colors@1.0.51
svipas.control-snippets@1.9.1
TylerLeonhardt.vscode-inline-values-powershell@0.0.5
TylerLeonhardt.vscode-pester-test-adapter@0.0.23
vadimcn.vscode-lldb@1.6.4
VisualStudioExptTeam.vscodeintellicode@1.2.14
vscode-icons-team.vscode-icons@11.4.0
webfreak.debug@0.25.0
wwm.better-align@1.1.6
yzhang.markdown-all-in-one@3.4.0
zhuangtongfa.material-theme@3.10.14


### PSES version: 2.3.0.0

### PowerShell version:

Name                           Value
----                           -----
PSVersion                      7.1.2
PSEdition                      Core
GitCommitId                    7.1.2
OS                             Microsoft Windows 10.0.19041
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Issue Description

The Textmate scopes or token is wrong on negative numeric literals

image

Working behavior

Non-parameters, and positive numbers are okay

textmate_scopes-example1

Expected Behaviour

To share similar tokens/scopes

To reproduce

It seems to occur when:

  1. it's a negative numeric literal (int, or decimal)
  2. it's a parameter
  3. the parameter type doesn't matter

Code used:

function DoNothing {
    param(
        [Parameter(Mandatory, Position = 0)]
        [int]$Number
    )
}
function DoMoreNothing {
    param(
        [Parameter(Mandatory, Position = 0)]
        [string]$Text
    )
}

$x = 6                                               ; $x
$x = -6
DoNothing -6
DoNothing 6
DoNothing -Number 6
DoNothing -Number -6
DoMoreNothing -Text 6
DoMoreNothing -Text -6

Actual Behavior

textmate_scopes-example2-as-parameter

@ninmonkey ninmonkey changed the title Version v2021.5.1 Textmate Scope is incorrect for negative numeric literals, when used as a parameter Version v2021.5.1 SemanticTextmate Scope is incorrect for negative numeric literals, when used as a parameter Jun 5, 2021
@ninmonkey ninmonkey changed the title Version v2021.5.1 SemanticTextmate Scope is incorrect for negative numeric literals, when used as a parameter Version v2021.5.1 Semantic Textmate Scope is incorrect for negative numeric literals, when used as a parameter Jun 5, 2021
@rjmholt rjmholt transferred this issue from PowerShell/vscode-powershell Jun 9, 2021
@andyleejordan
Copy link
Member

@rjmholt I'm unclear, is this a semantic highlighting issue, or an editor syntax grammar issue?

@ninmonkey
Copy link
Author

@andschwa It looks like

  • the textmate scope is right
  • the semantic scope is overriding it as a function
  • If I wrap it as (-6), it gets the expected semantic scope

I created a new image that's more clear.
image

@msftrncs
Copy link
Contributor

Technically negative numeric constants as an argument are considered unquoted text by the PS tokenizer (as indicated by PSReadLine highlighting). So the TextMate scope is wrong. But the sematic highlighter is no better, as 'function' is definitely not the right scope. Neither of these things are what the OP wants to hear.

This is a very important demonstration.

Echo -0006

outputs

-0006

but

echo (-0006)

outputs

-6

@msftrncs
Copy link
Contributor

Actually, I give a bad example with 'echo' (Write-Output) because the output processor (formatter) just provides the original text behind the argument, so:

echo 0006

results in

0006

This provides a more meaningful demonstration:

(echo 0006).GetType().Name
(echo -0006).GetType().Name
(echo (-0006)).GetType().Name

which results in

Int32
String
Int32

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants