Skip to content

CodeLens References not working if function is in another file #2421

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

Closed
mrboring opened this issue Jan 16, 2020 · 27 comments · Fixed by PowerShell/PowerShellEditorServices#1161

Comments

@mrboring
Copy link

System Details

System Details Output

### VSCode version: 1.41.1 26076a4de974ead31f97692a0d32f90d735645c0 x64

### VSCode extensions:
alefragnani.Bookmarks@10.6.0
eamodio.gitlens@10.2.0
Ionide.Ionide-FAKE@1.2.3
Ionide.Ionide-fsharp@4.4.4
Ionide.Ionide-Paket@1.12.0
ms-vscode.csharp@1.21.9
ms-vscode.powershell@2020.1.0        
ms-vscode.powershell-preview@2020.1.0
streetsidesoftware.code-spell-checker@1.7.20


### PSES version: 2.0.0.0

### PowerShell version:

Name                           Value
----                           -----
PSVersion                      7.0.0-rc.1
PSEdition                      Core
GitCommitId                    7.0.0-rc.1
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}       
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Issue Description

CodeLens References does not work if the function is in another file. Both files shown below are in the same folder.

image

Note the 1 reference above the Y function definition. This is in the same file as the reference.
Note the 0 reference above the X function definition. This is in a different file to the referenc.

I wonder if this is related to: CodeLens References link only jumps to definition #2374.

Expected Behaviour

In TestModule.psm1 I expected to see 1 references above the X function definition.

Actual Behaviour

In TestModule.psm1 I see 0 references above the X function definition

Also Find All References for function X shows:

image

Find All References for function Y shows:

image

Attached Logs

PowerShell Extension Logs.txt
PowerShell Editor Services Log.txt

@TylerLeonhardt
Copy link
Member

Nice find! I've fixed this and it will be available in the next version.

@TylerLeonhardt TylerLeonhardt added Area-Symbols & References Issue-Bug A bug to squash. and removed Needs: Triage Maintainer attention needed! labels Jan 16, 2020
@PrzemyslawKlys
Copy link
Contributor

Does this change cover the whole workspace? I have modules separated within multiple layers of folders and just got the same issue but with a bit diffferent thing.

It shows 0 references

image

Find References shows only 1 find in 1 file (the file the function is defined in) but clearly I have it in other files.

image

@ghost ghost added the Needs: Maintainer Attention Maintainer attention needed! label Jan 17, 2020
@mrboring
Copy link
Author

@TylerLeonhardt I'm also having problems with Go to Definition. I wonder if it could be related. If it's not, let me know and I'll create another issue.

Go to Definition not working.zip

In the attached zip there is a small test project.

Expected behaviour

Go to Definition should work for all functions.

Actual behaviour

PowerShell-Preview-2019.12.0.vsix

Go to Definition works for all functions.

PowerShell-Preview-2020.1.0.vsix

Go to Definition does work for:

  • Test-FunctionLocal
  • Test-FunctionAnotherDifferentFolder

Go to Definition does not work for:

  • Test-FunctionDifferentFolder

@TylerLeonhardt
Copy link
Member

Would you like to give it a try and see if it works for you?
PowerShell-insiders.vsix.zip

@PrzemyslawKlys, this also includes PowerShell/PowerShellEditorServices#1162 so I'm curious how the PSIC looks for you.

Let me know if you have trouble installing. This is an unsigned build and has 0 official support so keep that in mind.

@PrzemyslawKlys
Copy link
Contributor

Installing :-)

@PrzemyslawKlys
Copy link
Contributor

image

Won't run :)

@mrboring
Copy link
Author

@TylerLeonhardt I've installed the new VSIX and done a quick test. Both references and Go to Definition are working.

@PrzemyslawKlys
Copy link
Contributor

That's so weird that it works for you 👱‍♂️

@TylerLeonhardt
Copy link
Member

@PrzemyslawKlys you've had trouble with dev build vsix's in the past IIRC

@TylerLeonhardt
Copy link
Member

TylerLeonhardt commented Jan 21, 2020

oh wait - that's because I built on a mac and it has to be built on Windows. gah. give me a sec. Or just see if it works in PS Core - I don't have a Windows machine available right this second and Rob is on vacation.

@mrboring
Copy link
Author

@PrzemyslawKlys Don't know if it helps, but this is my current configuration:

### VSCode version: 1.41.1 26076a4de974ead31f97692a0d32f90d735645c0 x64

### VSCode extensions:       
alefragnani.Bookmarks@10.6.0 
eamodio.gitlens@10.2.0       
Ionide.Ionide-FAKE@1.2.3     
Ionide.Ionide-fsharp@4.5.0   
Ionide.Ionide-Paket@1.12.0   
mohsen1.prettify-json@0.0.3  
ms-vscode.csharp@1.21.9      
ms-vscode.powershell@2020.1.0
ms-vscode.powershell-preview@2020.1.0       
streetsidesoftware.code-spell-checker@1.7.21


### PSES version: 2.0.0.0

### PowerShell version:

Name                           Value
----                           -----
PSVersion                      7.0.0-rc.2
PSEdition                      Core
GitCommitId                    7.0.0-rc.2
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}       
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

@mrboring
Copy link
Author

@TylerLeonhardt I'm on Windows 10 and it's working for me!

@PrzemyslawKlys
Copy link
Contributor

PowerShell 7, i tried on 5.1.

@PrzemyslawKlys
Copy link
Contributor

You also have both extensions enabled.... disable the primary one.

@TylerLeonhardt
Copy link
Member

I can't build the part that's needed to get the extension working on 5.1 cause I use a mac. Only the part for PS6+. - for context.

@PrzemyslawKlys
Copy link
Contributor

On PowerShell 7 seems to work. Thanx

@mrboring
Copy link
Author

You also have both extensions enabled.... disable the primary one.

@PrzemyslawKlys It was disabled. I've now removed it and it still works. As you've summised it works because I'm using PowerShell 7.

@PrzemyslawKlys
Copy link
Contributor

Yes, but I mean it only shows enabled extensions so it must have been "within the session".

@mrboring
Copy link
Author

@PrzemyslawKlys OK. I see. Thanks for the info.

@TylerLeonhardt
Copy link
Member

Glad to here this issue is fixed :)

@TylerLeonhardt TylerLeonhardt removed the Needs: Maintainer Attention Maintainer attention needed! label Jan 21, 2020
@mrboring
Copy link
Author

@TylerLeonhardt I've done a bit more testing of the new VSIX and found a little issue.

image

The above is a screenshot of the project I attached above (#2421 (comment)). Note that for the file: Test-FunctionDifferentFolder.ps1 that two entries appear. This file contains the definition of the function only. So, I would expect to only see one reference.

I also have a question. Would you expect Go to Definition to work across workspaces?

@ghost ghost added the Needs: Maintainer Attention Maintainer attention needed! label Jan 23, 2020
@TylerLeonhardt
Copy link
Member

TylerLeonhardt commented Jan 23, 2020

I've done a bit more testing of the new VSIX and found a little issue.

I'll look into this but please open a new issue so we don't lose this thread. And also attach the logs please :)

Would you expect Go to Definition to work across workspaces?

I believe there is some expectation that this should work. Right now, we are focused on closing gaps between the PowerShell Preview extension and PowerShell Stable extension. Can you try the Go to definition in the Stable extension to compare?

@PrzemyslawKlys
Copy link
Contributor

Well I've opened this issue a while ago: #2112

It wasn't supported for multiple workspaces in the "old version'. But that would be cool if it would be possible. During development, I am often separating some code into different modules and it makes it much harder to debug things if only 1 workspace shows references.

@TylerLeonhardt
Copy link
Member

I hear ya. There are a ton of opportunities for rich feature experiences for PowerShell in VS Code.

Unfortunately/fortunately, we had to focus on stability and performance for the past 2 years, peppering in small features as we go.

Plus there's really only 1 dev working on this at any given time so the resources are slim.

We're trying though. I hope that's visible.

@PrzemyslawKlys
Copy link
Contributor

You don't have to tell me that :-) While I code only in PowerShell over my modules I get how hard some things are and that resources are slim. I have 40 PS modules that I manage mostly alone with some help from the community. I appreciate all the work you and your team do. I'll keep opening bugs/feature requests to make sure everything runs great. Even my F5 debug issue is no big deal now after you taught me how to "workaround" it - since I see what is happening now.

So take your time :-) I just wish there was a much faster process for preview between fix and release date so those small bugs like this one would go away faster than once per month. But as you explained, it's not an automated process so until that is done I'm fine :-) I automated my PowerShell modules building just so I don't have to spend time doing manual releases because I release modules daily, even multiple times per day.

@mrboring
Copy link
Author

@TylerLeonhardt As requested:

[2020.1.0 Preview] Find All References shows two entries for the function definition #2433

@mrboring
Copy link
Author

@TylerLeonhardt With regard to Go to Definition and workspaces, I've tried the latest stable and test versions of the extension. Both give the following message: No definition found for '<function name>'.

Looking at the comments on the issue created by @PrzemyslawKlys, it looks like this functionality has not yet been added.

@SydneyhSmith SydneyhSmith removed the Needs: Maintainer Attention Maintainer attention needed! label Jan 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants