Typescript: 'declare method' quick fix for adding a private method

Created on 3 Apr 2020  路  12Comments  路  Source: microsoft/TypeScript

From https://github.com/microsoft/vscode/issues/94118


TypeScript Version: 3.9.0-dev.20200330

Search terms

  • quick fix
  • declare method
  • private


Repro
For ts file:

index.ts

class Bar {
    bar() {
         this._baz(123)
    }
}
  1. Trigger quick fixes on _baz

Feature request:
https://github.com/microsoft/TypeScript/issues/36249 added a quick fix for adding private properties. However there is no quick fix for adding a private method

Playground Link:

Related Issues:

Suggestion good first issue help wanted

Most helpful comment

Yeah, #37806 partially fixes this but doesn't address the full issue. I'll re-open that so we can unify the two fixes when post-codefix rename locations are available.

All 12 comments

I am the original one complaining about this: what I expect is NOT having 1 code action per visibility, but rather ONE code action (as today) with a tab-stop at the visibility that I can flip the various visibilities. I realise this may need support from VSCode too. Here is how it would work:

  • you trigger the code action
  • you get into a mode like snippets where certain places are stops you can cycle through with Tab key
  • each method or property has a tab stop where you can navigate to and once you are there, be able to select a modifier private, protected, public etc.

@DanielRosenwasser Is there a way to have a sub action to handle _tab-stop_? Or need to generate all possible actions for various methods/properties and VSCode should resolve _tab-stop_? Do I need to close https://github.com/microsoft/TypeScript/pull/37806, and revert https://github.com/microsoft/TypeScript/issues/36249?

Could you explain what you mean by tab-stop? I feel like I have an idea, but I might be out of the loop on something.

@bpasero

Could you explain what you mean by tab-stop?

Tabstops are from VS Code's snippets: https://code.visualstudio.com/docs/editor/userdefinedsnippets#_tabstops

There is no concept of tabstops in the TS Server api today since it only talks about text. I've opened #25207 which proposes adding the idea of snippets to typescript

Right now I see two ways for this issue

  1. Resolve this issue based on the original requirements
  2. Close #37806 revert #36249 and add _tab-stop_ for modifiers after #25207 will be implemented

I feel like I have an idea

@DanielRosenwasser Maybe you have a better idea :)

Hah, I meant like "I might have an idea of what you mean by tab stops". I think the weird thing is that the rename location already allows you to make something #-private, but it's not clear whether we could make a conditional tabstop location for when the declaration isn't #-private

To demonstrate what I expect to happen, here is what Eclipse does:

recording

Notice how some tab-stops are linked, so renaming the method actually also renames the call!

And what VSCode does:

kap

Paper cuts:

  • method is added above constructor???
  • no way to change anything after the method was inserted

Can we reopen this or reconsider this?

Yeah, #37806 partially fixes this but doesn't address the full issue. I'll re-open that so we can unify the two fixes when post-codefix rename locations are available.

From microsoft/vscode#94118

TypeScript Version: 3.9.0-dev.20200330

Search terms

  • quick fix
  • declare method
  • private

Repro
For ts file:

index.ts

class Bar {
    bar() {
         this._baz(123)
    }
}
  1. Trigger quick fixes on _baz

Feature request:

36249 added a quick fix for adding private properties. However there is no quick fix for adding a private method

Playground Link:

Related Issues:

  • #36249
    echo off@$

Screenshot_2020-05-29-01-13-45-89_68e74cc0265513bba3f4cf8e2c9891fe

192.168.1.1

Was this page helpful?
0 / 5 - 0 ratings

Related issues

MartynasZilinskas picture MartynasZilinskas  路  3Comments

CyrusNajmabadi picture CyrusNajmabadi  路  3Comments

blendsdk picture blendsdk  路  3Comments

weswigham picture weswigham  路  3Comments

siddjain picture siddjain  路  3Comments