1019372-Handle chained conversions in the semantic model (changeset 1374815)
renaming the GetDiagnosticsAsync method to GetAnalyzerDiagnosticsAsync (changeset 1374927)
VB: MemberLookup – avoid an infinite loop due to a cycle in interface inheritance hierarchy. (changeset 1375146)
Changing a comment (changeset 1375152)
VB: Properly build root binder in TryGetSpeculativeSemanticModelForMethodBodyCore – start from the containing NamedTypeBinder rather than from the original method body binder. (changeset 1375163)
C# state machine hoisted local scopes are edge-inclusive.

Bonus: Change the representation from (start, length) to (start, end) because that is how it is produced and consumed.

CR: ngafter; jaredpar; vsadov

TODO: Extract constants in CustomDebugInfoWriter. (changeset 1375188)
Restoring lost comment. (changeset 1375221)
Add ISyntaxFactsService.IsEntirelyWithinStringOrCharLiteral to better handle signature help dismissal after quote characters. (changeset 1375282)
Share constants between CustomDebugInfoReader and CustomDebugInfoWriter.

They weren't out of sync - let's keep them that way.

CR: JaredPar; ChuckS; VSadov (changeset 1375293)
This adds a unit test for DEVDIV 1019366 and CodePlex 273. The bugs in question had already been fixed by the time I picked up this bug. Just adding the tests to verify it doesn't come back.

 Note: There is still a subtle difference in the code generation between VS 2013 and Roslyn for 'case2'. The 2013 compiler will follow the spec explicitly here and handle the conversion as double -> int -> int? instead of double -> int?. This results in the compiler reducing 5.5 to 5 as a constant conversion and hence 5 is emitted into the assembly. Roslyn will instead simply emit 5.5. DEVDIV 1084278 covers resolving this difference (changeset 1375374)
Fix for bug 1084086: Ensure that position within end block statement is considered part of method block by GetEnclosingBinder(position). This enables speculating within empty method bodies. (changeset 1375384)
Elvis Lives!
Use x?.Foo() instead of (object)x != null ? x.Foo() : null
Per code review feedback. (changeset 1375440)
Fix a crash that occurs when an argument to [AssemblyCulture] contains an embedded NUL.
***NO_CI***
 (changeset 1375447)
Add DiagnosticDescriptor support for compiler diagnostics.

Compiler diagnostics (DiagnosticWithInfo type) currently return null for Diagnostic.Descriptor property, as the descriptor is not required for creating these diagnostics. However, to make our compilers first class analyzers with supported descriptors, we need the descriptors, this change adds this support.
Given that the descriptor has lot of fields which are unncessary in command line compilation, descriptor is lazyily created on demand, and should never be created during command line compilation. Later this week, I will create a Roslyn diagnostic to ensure that Diagnostic.Descriptor property isn't directly accessed in the compiler layer. (changeset 1375459)
Fix up SymbolDisplay for extension methods

SymbolDisplay has a SymdolDisplayExtensionMethodStyle which is either Static or Instance and the default today is Static. However the implementation of symboldisplay is such that if you pass in a ReducedExtensionMethodSymbol an ask for Static style, it will still give you instance style. In other words, it doesn't force static style. Having the method kind determine the signature (and not forcing one way or another) is useful to where you want to get the string based on context like quickinfo at a callsite of an ext method versus at definition.

So I'm switching the StaticMethod style to call it Default which then retains existing behavior and is not a breaking change. I'm adding a new StaticMethod style which will force static style. This is needed because the expandreduce engine calls symboldisplay and compares strings to make sure that the symbol didn't change on expand\reduce and needs to force the style to static or instance. Today it forces it tries to static which doesnt really force it.
 (changeset 1375480)
Address CR feedback (changeset 1375523)
EE Tests: IL offset helper

Old: Find a local with a given name and use the start of its scope.
New: Find a non-hidden sequence point with a given start-line.  (Made robust using #line and #externalsource).

The new approach can handle cases where all (user-defined) locals have been hoisted (e.g. for state machine methods).

Bonus: Make the new mechanism because most tests accept the default offset.

CR: ChuckS (changeset 1375564)
Fix typo in doc comment... (changeset 1375674)
Extract constant for hidden sequence point line number (0xfeefee). (changeset 1375878)
Break the dependency between the Microsoft.CodeAnalysis.EditorFeatures.Text package and the Microsoft.CodeAnalysis.Features package.

We don't want to ship the Features package, because it has no public surface area, but we do need to ship the Text package.  Unfortunately, the implementation of the Text package currently depends on the internal PrimaryWorkspace type which lives in Features.  Move it to the Workspaces layer instead. (changeset 1375888)