Visual Studio Developer Center > Visual Studio vNext Forums > Microsoft "Roslyn" CTP > Known Limitations and Unimplemented Language Features

Sticky Known Limitations and Unimplemented Language Features

Sticky

  • Tuesday, October 18, 2011 12:07 AM
    Owner
     
     

    Welcome!

    The primary goal of the Roslyn CTP is to gather feedback on the public APIs and give you an early look at the Interactive window feature. The CTP is intended for preview-use only. Please use it to build rich code tools and extensions so that you can learn about the APIs and provide feedback. This is only a technology preview, and there are known issues and bugs. While the shape of the public API surface is complete for the compilers, we are in the process of implementing the full C# and Visual Basic languages.

    Known Issues

    1. No Visual Basic Interactive Support

      The Interactive window is only available in C# at this time. Visual Basic support will be added in a future release.

    2. Unimplemented Language Features

      The Roslyn CTP is intended as a preview of the public APIs that will be exposed by the compilers and language services. The full C# 4 and Visual Basic 10 languages are supported by the Syntax API, but there are several language features that are not yet completely implemented in the current Roslyn compilers. The following language features are not yet implemented in the October CTP.

      Not yet implemented in C#

      • Anonymous types
      • Async
      • Attributes (full support)
      • Base call support
      • Checked and unchecked expressions and blocks
      • Collection initializers
      • Dynamic
      • Embedded Interop Types (no-PIA)
      • Events
      • Expression trees
      • Extern aliases
      • Finalizers
      • Generic constraints
      • Indexers
      • Iterators
      • Lock statements
      • Multi-dimensional arrays
      • Multi-targeting
      • Named and optional parameters
      • Nullable types
      • Object initializers
      • Operator overloading
      • Param array parameters
      • Partial methods
      • Query expressions
      • Switch statements
      • Type forwarders
      • Unsafe code
      • User-defined conversions
      • Using statement
      • WinRT support
      • XML documentation file generation

      Not yet implemented in Visual Basic

      • Anonymous types
      • Async
      • Attributes (full support)
      • Collection initializers
      • Conditional expressions (ternary If operator)
      • Embedded Interop Types (no-PIA)
      • Events
      • Explicit conversions (CType, DirectCast)
      • Expression trees
      • Extension methods
      • For statements
      • For Each statements
      • Generic constraints
      • Goto statements
      • Implicitly-typed local variables (Option Infer)
      • Instance expressions (Me, MyBase, MyClass)
      • Late-binding
      • Multi-dimensional arrays
      • Multi-targeting
      • Named and optional parameters
      • Null-coalescing expressions (binary If operator)
      • Nullable types
      • Object initializers
      • Operator overloading
      • ParamArray parameters
      • Partial methods
      • Query expressions
      • Select Case statements
      • Shared constructors
      • Structures
      • SyncLock statements
      • Try/Catch/Finally statements
      • Type forwarders
      • TypeOf ... Is ... expressions
      • User-defined conversions
      • WinRT support
      • XML documentation file generation
      • XML literals
    3. C# Constructor Initializer Issues Constructor initializers for structures are 1) sometimes dropped from the emitted code, and 2) not fully supported in flow analysis. The flow analysis APIs do not account for "this" being definitely assigned after a constructor initializer.

    Uninstalling

    You can uninstall the Roslyn CTP by clicking the Windows start menu and choosing Control Panel -> Programs -> Uninstall a program. In the list of installed programs, click on Microsoft Codename Roslyn CTP and choose Uninstall.


All Replies

  • Wednesday, October 19, 2011 9:50 PM
    Owner
     
     

    Problem: The Syntax Debugger Visualizer sample has a known bug in that it sometimes displays the following error dialog even in cases where there is really no error.

    Fix: You can fix this bug by updating the source code of the Syntax Debugger Visualizer sample.

    To fix this,

    1. Open the SyntaxDebuggerVisualizer project by clicking on the link titled “Syntax Debugger Visualizer” in the ‘Getting Started’ guide.
    2. Under the SyntaxVisualizerControl project, right click on the SyntaxVisualizerControl.xaml file and click on ‘View Code’.
    3. Go to line 254 in this file (Press Ctrl + G and type in 254).
    4. The line should contain the definition of a function named “NavigateToBestMatch”

    1. Replace the existing definition of this function with the following code

           // Select the SyntaxNode / SyntaxToken / SyntaxTrivia whose span best matches the supplied span.
            private TreeViewItem NavigateToBestMatch(TreeViewItem current, TextSpan span, string kind = null)
            {
                TreeViewItem match = null;

                if (current != null)
                {
                    SyntaxTag currentTag = (SyntaxTag)current.Tag;

                    if (currentTag.FullSpan.Contains(span))
                    {
                        if ((currentTag.Span == span || currentTag.FullSpan == span) && (kind == null || currentTag.Kind == kind))
                        {
                            CollapseEverythingBut(current);
                            match = current;
                        }
                        else
                        {
                            CollapseEverythingBut(current);
     

                            foreach (TreeViewItem item in current.Items)
                            {
                                match = NavigateToBestMatch(item, span, kind);
                                if (match != null)
                                {
                                    break;
                                }
                            }

                            if (match == null)
                            {
                                if (kind == null)
                                {
                                    match = current;
                                }
                                else if (currentTag.Kind == kind)
                                {
                                    match = current;
                                }
                            }
                        }
                    }
                }

                return match;
            }

     

    1. Rebuild the solution (Click on Build->Build Solution).
    2. If you had installed the Syntax Debugger Visualizer on your machine already, then update the installation by copying the binaries from the bin directory of the SyntaxDebuggerVisualizer project to the ...\Documents\Visual Studio 2010\Visualizers directory. (Detailed steps for installing the Syntax Debugger Visualizer are described in the Readme.html file present in the SyntaxDebuggerVisualizer project).

     


    Anthony D. Green | Program Manager | Visual Basic & C# Languages Team