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

Test pattern matching against IDE features #9068

Closed
CyrusNajmabadi opened this issue Feb 23, 2016 · 2 comments
Closed

Test pattern matching against IDE features #9068

CyrusNajmabadi opened this issue Feb 23, 2016 · 2 comments
Assignees
Milestone

Comments

@CyrusNajmabadi
Copy link
Member

Testing tags

✅ = Tested & Approved (possibly with linked bugs)
❌ = Merge blocking
🚧 = Non-blocking bugs
🆗 = Issue has been fixed
🆓 = No expected impact
❓ = Open question
❔ = Answered question

1 Feature updated by compiler team, with appropriate unit tests.
2 Feature requires more complete testing by IDE team. (?)

Internal Dogfooding Requirements (Merge Signoff)

Critical IDE features in the areas of Typing, Navigating, and Viewing must function as expected. Any non-trivial issues in these areas blocking language feature merging.
All feature descriptions and testing suggestions are merely examples. Each language feature should be carefully considered independently against each IDE feature to find interesting intersections

Category Feature/Description C# Signoff/Notes VB Signoff/Notes
Enable/Disable Feature Flag
Completely enables/disables the feature in the compiler & IDE
Typing General Typing
- Type and paste new constructs
- Nothing interferes with verbatim typing
Pasting of complex patterns is poor: #9069
Typing of complex patterns is poor #9071
Completion
- Typing new keyword/construct names
- Dotting off of new constructs
Pattern variable not in catch block: #9074
No completion at start of pattern case block: #9076
Pattern variable in negated expression not in else clause: #9082
'let' not suggested: #9083
No completion for the type in a 'let' declaration: #9084
'let' declaration keywords not offered: #9085
'throw' not offered in expression contexts: #9099
Formatting
- Spacing in and around new constructs
- Spacing options
- Format Document command
Spacing around patterns in switches: #9075
Automatic Brace Completion (C# only)
- Auto-insert close brace
- Shift+Enter commit of pending brace completion
Indentation
- Typing Enter in an unfinished statement indents the next line
Indentation not working in complex patterns: #9078
Indentation not working with cases clauses with patterns in switch statements: #9097
Or match/case expressions: #9098
Navigating Go To Definition
- F12 from callsites to definition
Does not work on complex pattern members: #9072
Go To Implementation
- Jump from virtual members to their implementations
- Jump from inheritable types to their implementations
🆓 (i think)
Find All References
- Lists references to a symbol in "Find Symbol Results" window
- Shows results in hierarchy grouped by definition
FAR results missing in complex patterns: #9073
Not working for constructors and positional patterns: #9107
Viewing Colorization
- Keywords, literals, and identifiers colored appropriately in code
Error Squiggles
- Squiggles appear as expected on reasonable spans

IDE Features (Feature Signoff)

For the remaining set of IDE features, only crashes and asserts are considered blocking. However, all issues discovered must be filed and linked here.
All feature descriptions and testing suggestions are merely examples. Each language feature should be carefully considered independently against each IDE feature to find interesting intersections

Code Transformations

Category Feature/Description C# Signoff/Notes VB Signoff/Notes
Refactoring with UI Inline Rename (with UI)
- Dashboard shows correct information
- Highlighted spans are updated appropriately
- Rename operation updates the correct set of symbols
Rename does not update all references: #9079
Rename cannot be triggered from complex parameter: #9080
Rename cannot be triggered from 'let' declaration: #9086
Unresolvable conflicts when renaming a 'let' variable reference: #9088
Change Signature (with UI)
- Updates all direct & cascaded definitions/callsites
- Shows appropriate signature & parameter previews in UI
Changing constructor does not fix usage in pattern: #9100
Extract Interface (with UI)
- Generated Interface has expected shape
- UI shows appropriate method previews
🆓 This is a statement/expression level feature
Generate Type (with UI)
- Dialog gives all valid options
Not offered for complex pattern type: #9089
Refactorings Rename Tracking
- Tracking span tracks & dismisses as expected
Extract Method
- Extracted method has the expected signature
- All arguments/return values handled correctly
- Extracted code block is reasonable
Doesn't work properly in match/case expression: #9106 and #9105
Introduce Variable
- Introduced variable has the expected signature and initializer expression
- "Introduce for All" correctly finds dupes
Inline Temporary Variable
- Inlined values are appropriately expanded/reduced
Organize Usings
- Honors "Place 'System' namespace first" option
Convert "Get" Methods to Properties*
Add Description
Encapsulate Field
Add Description
Fixes Add Using
- Triggers on appropriate constructs
Generate Local
Add Description
Generate Field
Add Description
Not offered in complex pattern member: #9090
Generate Method/Constructor
- Generated method has the expected signature and accessibility
Not offered with positional pattern: #9108
Generate Constructor from members
- Select fields/properties to generate a constructor accepting corresponding arguments
- Generated constructor has the expected signature and accessibility
🆓 (i think)
Implement Interface
- Only missing methods added
- All added methods have the expected signature and accessibility
🆓 (i think)
Implement IDisposable
Add Description
🆓 (i think)
Implement Abstract Class
Add Description
🆓 (i think)
Code Gen Snippets
Add Description
Event Hookup on Tab (C# only)
- Type "+=" after an event name and QuickInfo shows
- Invoking should pick good name & launch Inline Rename
N/A
End Construct Generation (VB only)
Add Description
N/A
Automatic End Construct Update (VB only)
Add Description
N/A

IDE Features

Feature/Description C# Signoff/Notes VB Signoff/Notes
Signature Help
- Overloads shown with appropriate, colorized signature
Sig help not offered on positional patterns: #9101
Quick Info
- Hover on identifiers
- On completion list items
Not showing on 'let' declarations: #9091
Not showing on pattern variable: #9092
Outlining
Add Description
❓ Should we have outlining for complex expressions? They can be large (so yes?). But we don't for other constructs like large object initializers
Brace Matching (C# only)
Add Description
N/A
Highlight References
Add Description
Not working on pattern variables: #9110
Peek
Add Description
Not working on pattern variables: #9109
Navigation Bars
Add Description
🆓 This is a statement/expression level feature
Metadata As Source
Add Description
🆓 This is a statement/expression level feature
Navigate To
Add Description
Go to Next/Previous Method
Add Description
🆓 This is a statement/expression level feature
Solution Explorer Pivots
Add Description
Call Hierarchy
Add Description
Code Lens
Add Description
Project System
Add Description
🆓 This is a statement/expression level feature
Debugger IntelliSense
Add Description
Breakpoint spans
Add Description
Not implemented at all: #9095
Code Model / Class Designer
Add Description
🆓 This is a statement/expression level feature
Object Browser / Class View
Add Description
🆓 This is a statement/expression level feature
Lightbulb
Add Description
Line Separators
Add Description
🆓 This is a statement/expression level feature
Options
Add Description

Project System & External Integration

(Any changes to the runtime will require much more testing in this category)
All feature descriptions and testing suggestions are merely examples. Each language feature should be carefully considered independently against each IDE feature to find interesting intersections

Category Integration Signoff/Notes
Projection Buffers Razor
- Verify expression and block contexts
- Test on projection boundaries
- Emphasis on rename and formatting
Venus
- Verify expression and block contexts
- Test on projection boundaries
- Emphasis on rename and formatting
Designers WPF
- Event generation from designer to code
- Designer consumption of new types of members
- Cross language features (GTD, FAR)
WinForms
Add Description
Project System Interactions .NET Core "Console Application (Package)"
Add Description
Linked Files (all flavors)
Add Description

Interaction with other new language features

Verify IDE handling of the new language feature in conjunction with other new/unreleased language features

Feature C# Signoff/Notes VB Signoff/Notes
<New Language Feature 1>
<New Language Feature 2>

New Feature Suggestions

What refactorings, fixes, code transformations, or other in-editor experiences would enhance this language feature?

Feature Name Description
? ?
@gafter
Copy link
Member

gafter commented Feb 24, 2016

Not sure why @jaredpar assigned this to me; @CyrusNajmabadi is currently working on this.

@gafter gafter assigned CyrusNajmabadi and unassigned gafter Feb 24, 2016
@DustinCampbell DustinCampbell added this to the 1.2 milestone Feb 24, 2016
@DustinCampbell DustinCampbell added the Test Test failures in roslyn-CI label Feb 24, 2016
@DustinCampbell DustinCampbell modified the milestones: 1.2, 2.0 (Preview) Feb 24, 2016
@gafter gafter modified the milestones: 2.0 (Preview 1), 2.0 (RC) Jun 20, 2016
@Pilchie Pilchie modified the milestones: 2.0 (Preview 5), 2.0 (RC) Sep 26, 2016
@Pilchie
Copy link
Member

Pilchie commented Nov 2, 2016

@CyrusNajmabadi did you finish with this?

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

No branches or pull requests

5 participants