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

Merge from Features/constraints to dev15.7.x #25454

Merged
merged 21 commits into from
Mar 14, 2018
Merged

Conversation

VSadov
Copy link
Member

@VSadov VSadov commented Mar 13, 2018

As of #25397 , the feature branch meets requirements for the merge to the release branch.

The IDE manual pass has been completed (see below).

OmarTawfik and others added 21 commits January 23, 2018 17:58
* Support System.Enum as a valid generic type constraint

* More tests

* More feedback

* More tests

* More tests
…24443)

* Support Delegate and Multicast delegates as generic type constraints

* More tests
* Source changes for unmanaged (PROTOTYPE for metadata)

* Modreqs for unmanaged as well

* Finished roundtripping metadata

* Added more tests

* Fix CI

* More tests

* Clean up
Fixed IDE services touching `unmanaged` constraint
Merge features/compiler to features/constraints
merge form dev15.7.x to features/constraints
'unmanaged' constraint fixups for merge
Merge from dev15.7.x to features/constraints
@VSadov VSadov requested review from a team as code owners March 13, 2018 23:07
@VSadov
Copy link
Member Author

VSadov commented Mar 13, 2018

Testing tags

  • 🔍 = Scenarios that are regularly tested against internal builds
  • ⏩ = Scenarios that must work as expected before new language features are merged

When doing a test pass, copy this page and consider using these status indicators:

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

1 Feature updated by compiler team, with appropriate unit tests.

2 Feature requires more complete testing by IDE team.

Product Features

Core Scenarios in Editing, Navigating, and Viewing

Category Feature/Description C# Signoff/Notes VB Signoff/Notes
Enable/Disable Feature Flags
To completely enables/disable new compiler features in the compiler & IDE
N/A
Typing General Typing
- Type and paste new constructs
- Nothing interferes with verbatim typing
N/A
🔍 ⏩ Completion
- Typing new keyword/construct names
- Dotting off of new constructs
- Matching part of the identifier is highlighted (including word prefix matches) [Visual Studio 2015 Update 1]
- Target type preselection [Visual Studio 2017]
IntelliSense filtering [Visual Studio 2017]
N/A
Formatting
- Spacing in and around new constructs
- Spacing options
- Format Document command
Tools > Options settings should be respected
N/A
Automatic Brace Completion (C# only)
- Auto-insert close brace
- Shift+Enter commit of IntelliSense and any pending brace completion sessions (Known issue: #18065)
N/A
Indentation
- Typing Enter in an unfinished statement indents the next line
N/A
Navigating 🔍 ⏩ Go To Definition
- F12 from callsites to definition
- Ctrl+click [Visual Studio 2017 version 15.4]
N/A
Go To Implementation
- Ctrl+F12 to jump from virtual members to their implementations
- Jump from inheritable types to their implementations
N/A
🔍 ⏩ Find All References
- Lists references to a symbol in "Find Symbol Results" window
- Shows results in hierarchy grouped by definition [Visual Studio 2015]
- Results should be groupable/filterable/classified appropriately [Visual Studio 2017]
- Find All References on literals [Visual Studio 2017 version 15.3]
N/A
Viewing 🔍 ⏩ Colorization
- Keywords, literals, and identifiers colored appropriately in code
- Colors should theme appropriately
- The "Blue Theme (Additional Contrast)" should have sufficiently dark colors
N/A
Error Squiggles
- Squiggles appear as expected on reasonable spans
N/A

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
N/A
🔍 Change Signature (with UI)
- Updates all direct & cascaded definitions/callsites
- Shows appropriate signature & parameter previews in UI
- Reorder and Remove in the same session [Visual Studio 2015]
N/A
🔍 Extract Interface (with UI)
- Generated Interface has expected shape
- UI shows appropriate method previews
N/A
Generate Type (with UI)
- Dialog gives all valid options
N/A
Generate Overrides [Visual Studio 2017 version 15.3] N/A
Refactorings Rename Tracking
- Tracking span tracks & dismisses as expected
- Invokable from references [Visual Studio 2015]
N/A
🔍 Extract Method
- Extracted method has the expected signature
- All arguments/return values handled correctly
- Extracted code block is reasonable
- Automatically starts Inline Rename
N/A
Introduce Variable
- Introduced variable has the expected signature and initializer expression
- "Introduce for All" correctly finds dupes
N/A N/A
Inline Temporary Variable
- Inlined values are appropriately expanded/reduced
N/A N/A
Organize Usings
- Honors "Place 'System' namespace first" option
N/A N/A
Convert Get* Methods to Properties
Add Description
N/A
🔍 Encapsulate Field
- Select a field and convert it to a property backed by the field
- Try selecting multiple fields at once
N/A
Modifier Ordering [Visual Studio 2017 version 15.5] N/A N/A
Convert ReferenceEquals to is null [Visual Studio 2017 version 15.5] :N/A N/A
Add Missing Modifiers [Visual Studio 2017 version 15.5] N/A N/A
Convert Lambda to Local Function [Visual Studio 2017 version 15.5] N/A N/A
Move Declaration Near Reference [Visual Studio 2017 version 15.5] N/A N/A
Introduce Pattern Matching [Visual Studio 2017 version 15.5] N/A N/A
Simplify Inferred Tuple Names [Visual Studio 2017 version 15.5] Requires C# 7.1 or greater N/A N/A
Convert keyword and symbol references to doc comment tags [Visual Studio 2017 version 15.5] N/A N/A
Fixes Add Using
- Triggers on appropriate constructs
- Including NuGet references
- Including Referenced Assemblies
- Includes spelling fixes
N/A N/A
Generate Local
- Select an expression and introduce a local variable to represent it
- This should start an Inline Rename session
N/A
Generate Field
- Select an expression and introduce a field to represent it
- This should start an Inline Rename session
N/A
Generate Method/Constructor
- Call a nonexistent method or constructor to generate it from its usage
- Generated method has the expected signature and accessibility
- Add parameter to existing constructor from callsite [Visual Studio 2017 version 15.3]
N/A N/A
Generate Constructor from members
- Select fields/properties to generate a constructor accepting corresponding arguments
- Generated constructor has the expected signature and accessibility
N/A N/A
Implement Interface
- Only missing methods added
- All added methods have the expected signature and accessibility
N/A
Implement IDisposable
- Implement IDisposable and you should see a large block of code properly implementing that particular interface
N/A N/A
Implement Abstract Class
- Inherit from an abstract class, and you should be able to auto-generate all of the missing members
N/A
Remove Unused Variables [Visual Studio 2017 version 15.3] N/A N/A
Remove Unused Usings N/A N/A
Sort Usings N/A N/A
Convert Get Methods to Properties
- Name a method GetStuff and convert it to a property called Stuff
N/A
Make Method Async/Sync
- Add an await to a synchronous method, you should be offered to add the async keyword
- Remove all await keywords from an async method, you should be offered to remove the async keyword
N/A N/A
Use Object Initializer Over Property Assignment
- Create a new instance of a type and then assign each of its properties on subsequent lines
- You should be offered to convert that to an object initializer
N/A N/A
Insert Digit Separators [Visual Studio 2017 version 15.3] N/A N/A
Code Gen 🔍 Snippets
- Tab completion, presence in completion list
- Insertion via Snippet Picker UI (Ctrl + K, Ctrl + X) or (Ctrl + K, Ctrl + S)
- (VB) Snippet Picker UI via ?<Tab>
- (VB) Special snippet completion list (p?<esc><tab>)
Event Hookup on Tab (C# only)
- Type "+=" after an event name and QuickInfo shows
- Invoking should pick good name & launch Inline Rename
N/A N/A
End Construct Generation (VB only)
- Type Sub Test() and hit enter, the End Sub should be generated automatically
N/A N/A
Automatic End Construct Update (VB only)
- Type Sub Test() and End Sub, changing Sub to Function in either one should update the other
N/A N/A
Spell checking
- Type a name that's close to a variable name but off by a character or two
- Lightbulb should have option to fix up the spelling
- Includes type names that will require a using
N/A N/A
Move type to file
- Lightbulb to move type to another file when the type name doesn't match the filename
- Option to change the file name if the type doesn't match the file name
N/A N/A
Convert between properties and Get methods
- Offers to change a method named GetStuff to a property named Stuff
N/A
Convert auto property to full property [Visual Studio 2017 version 15.5] N/A
Add missing cases
Use a switch on a strict subset of an Enum's members
- It should offer to generate the rest of the cases
N/A N/A
Add null checks for parameters [Visual Studio 2017 version 15.3] N/A N/A
Change base for numeric literals [Visual Studio 2017 version 15.3] N/A N/A
Convert if to switch [Visual Studio 2017 version 15.3] N/A N/A
Resolve git merge conflicts [Visual Studio 2017 version 15.3] N/A N/A
Add argument name [Visual Studio 2017 version 15.3 N/A N/A
Fade and remove unreachable code [Visual Studio 2017 version 15.5] N/A N/A
Add missing file banner [Visual Studio 2017 version 15.5] N/A N/A
Deconstruct tuple declaration [Visual Studio 2017 version 15.4] N/A N/A

@VSadov
Copy link
Member Author

VSadov commented Mar 13, 2018

CC @jaredpar - for the dev15.7.x merge approval.

@VSadov
Copy link
Member Author

VSadov commented Mar 13, 2018

FYI: @dotnet/roslyn-compiler @dotnet/roslyn-ide

@VSadov VSadov closed this Mar 14, 2018
@VSadov VSadov reopened this Mar 14, 2018
@VSadov
Copy link
Member Author

VSadov commented Mar 14, 2018

Some test runs looked like stuck in "Waiting for status to be reported"

@VSadov
Copy link
Member Author

VSadov commented Mar 14, 2018

@dotnet-bot test windows_coreclr_test_prtest please

@VSadov
Copy link
Member Author

VSadov commented Mar 14, 2018

@dotnet-bot test windows_coreclr_test_prtest please

@VSadov VSadov closed this Mar 14, 2018
@VSadov VSadov reopened this Mar 14, 2018
@VSadov
Copy link
Member Author

VSadov commented Mar 14, 2018

@dotnet/roslyn-compiler - PING. Please take a look.

@jaredpar
Copy link
Member

Approved.

@VSadov
Copy link
Member Author

VSadov commented Mar 14, 2018

Thanks!!

Copy link
Member

@agocke agocke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@VSadov VSadov merged commit f53d6d7 into dev15.7.x Mar 14, 2018
@davkean davkean deleted the features/constraints branch June 21, 2018 06:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants