Reflector 9.3 has been released

Russell DRussell D Posts: 388 Gold 3
edited February 13, 2018 11:11AM in .NET Reflector
This contains support for the following C# 7.0 features:
  • Tuples
  • Out variables
  • Pattern Matching
  • Deconstruction
  • Discards
  • Literals
  • Throw Expressions

These are considered beta functionality at present - please let us know if you have any issues.

Fixes
  • RP-4058 - (VsPackage): on F12 Jump, find proper declaration based on metadata line

You can download this through Check for Updates or from here: http://download.red-gate.com//checkforupdates/ReflectorInstaller/ReflectorInstaller_9.3.0.217.exe.

Visual Studio 2017 users will need to install (or update) through the Visual Studio gallery.
Tagged:

Comments

  • RichardDRichardD Posts: 50 Bronze 3
    The new installer is much better. :)

    However, the "Welcome to" popup when launching the new version now displays a "mixed content" warning:

    zgqnmwlcu6gp.png
  • Thanks for the feedback @RichardD - and I'll look into the welcome page to see if we can do anything about it.
  • This should be fixed in the next release.
  • Since upgrading to version 9.3, the tooltips for all attributes in the disassembly view report the type as `Reflector.Application.Languages.CSharpLanguage+LanguageWriter+Context` instead of the actual selected attribute. Here's a screenshot:

    wlh22pd8dbr3.png
  • Thanks, I've raised a bug and will investigate..
  • Ok this has been fixed and will go out in the new release, which will be early in the new year.
  • DJ DoenaDJ Doena Posts: 17 Bronze 2
    I've tried out the new named tuple feature in C#7 and when I reflect on it, I get the following error:

    version
    System.ComponentModel.InvalidEnumArgumentException
    at Reflector.Disassembler.Helper.HiddenAttributesCollection.ParseVersion(String version)
    at Reflector.Disassembler.Helper.HiddenAttributesCollection.<>c.<CreateInstance>b__0_1(Dictionary`2 dict, ICustomAttributeCollection attributes, String version)
    at Reflector.Disassembler.Helper.HiddenAttributesCollection.HelpC`2.Filter(ICustomAttributeCollection attributes, String version)
    at Reflector.Disassembler.Helper.FilterIrrelevant(ICustomAttributeCollection attributes, String version)
    at Reflector.Application.Languages.CSharpLanguage.LanguageWriter.WriteCustomAttributeList(ICustomAttributeProvider value, IFormatter formatter, String target, HashSet`1 hide)
    at Reflector.Application.Languages.CSharpLanguage.LanguageWriter.WriteMethodDeclaration(IMethodDeclaration value)
    at Reflector.Application.UserInterface.DisassemblerWindow.Render(Boolean expandTypes, Boolean expandMethods)
  • @DJ Doena I'm struggling to reproduce this, can you share your reproduction?
  • DJ DoenaDJ Doena Posts: 17 Bronze 2
    Hi, (un)fortunately no more repro. I've cleared my entire assembly list on the left and then only loaded my new assembly. Now the error is gone. It could have been an assembly that was in the list but didn't exist on the harddrive anymore? Not sure because there were about a dozen assemblies in the list, sorry.
  • No apology necessary, if you do ever see it again just let us know and we'll investigate.
  • DJ DoenaDJ Doena Posts: 17 Bronze 2
    edited January 4, 2018 11:43AM
    I have another one

    Invalid expression stack size during null coalescing expression translation.
    System.InvalidOperationException
    at Reflector.Disassembler.Translator.DecodeNullCoalescingExpressionOrStatement()
    at Reflector.Disassembler.Translator.DecodeDuplicateStatement(Int32 offset)
    at Reflector.Disassembler.Translator.DecodeStatement(Int32 end)
    at Reflector.Disassembler.Translator.DecodeBlockStatement(Int32 offset, Int32 end)
    at Reflector.Disassembler.Translator.TranslateMethodDeclaration(IMethodDeclaration mD, IMethodBody mB, Boolean handleExpressionStack)
    at Reflector.Disassembler.Translator.TranslateMethodDeclaration(IMethodDeclaration mD, IMethodBody mB)
    at Reflector.Disassembler.Disassembler.TransformMethodDeclaration(IMethodDeclaration value)
    at Reflector.Application.Translator.TranslateMethodDeclaration(IMethodDeclaration value)
    at Reflector.Application.UserInterface.DisassemblerWindow.Render(Boolean expandTypes, Boolean expandMethods)

    The actual code of that method is

    DoenaSoft.TVJunkie.MainForm

    bool UserIsCorrectAndContainsDate(User user) => user?.UserName == "DJ Doena" && user?.Watches?.Any(WatchesContainsDate) == true;

    PS: this throws the same error
    bool EntryContainsUserWithWatchedDate(FileEntry entry) => entry?.Users?.Any(UserIsCorrectAndContainsDate) == true;
  • sabrahamsabraham Posts: 1 New member
    I get same error as well.
    System.InvalidOperationException: Invalid expression stack size during null coalescing expression translation.
    at Reflector.Disassembler.Translator.DecodeNullCoalescingExpressionOrStatement()
    at Reflector.Disassembler.Translator.DecodeDuplicateStatement(Int32 offset)
    at Reflector.Disassembler.Translator.DecodeStatement(Int32 end)
    at Reflector.Disassembler.Translator.DecodeBlockStatement(Int32 offset, Int32 end)
    at Reflector.Disassembler.Translator.DecodeTryCatchFinallyStatement(IExceptionHandler current)
    at Reflector.Disassembler.Translator.DecodeBlockStatement(Int32 offset, Int32 end)
    at Reflector.Disassembler.Translator.TranslateMethodDeclaration(IMethodDeclaration mD, IMethodBody mB, Boolean handleExpressionStack)
    at Reflector.Disassembler.Translator.TranslateMethodDeclaration(IMethodDeclaration mD, IMethodBody mB)
    at Reflector.Disassembler.Disassembler.TransformMethodDeclaration(IMethodDeclaration value)
    at Reflector.CodeModel.Visitor.Transformer.TransformMethodDeclarationCollection(IMethodDeclarationCollection methods)
    at Reflector.Disassembler.Disassembler.TransformTypeDeclaration(ITypeDeclaration value)
    at Reflector.Application.Translator.TranslateTypeDeclaration(ITypeDeclaration value, Boolean memberDeclarationList, Boolean methodDeclarationBody)
    at Reflector.Application.FileDisassembler.WriteTypeDeclaration(ITypeDeclaration typeDeclaration, String sourceFile, ILanguageWriterConfiguration languageWriterConfiguration)
  • Thanks - we're investigating.
  • DJ DoenaDJ Doena Posts: 17 Bronze 2
    edited February 17, 2018 3:11PM
    Found another one. Actual code of method is:

    void RaiseEvent(string attribute)
    {
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(attribute));
    }

    Error is:

    Block statement count of zero during condition expression translation.
    Reflector.Disassembler.Translator+ExpressionHandlingException
    at Reflector.Disassembler.Translator.DecodeConditionExpression(Int32 offset, Boolean& failureCase)
    at Reflector.Disassembler.Translator.DecodeStatement(Int32 end)
    at Reflector.Disassembler.Translator.DecodeBlockStatement(Int32 offset, Int32 end)
    at Reflector.Disassembler.Translator.DecodeNullCoalescingExpressionOrStatement()
    at Reflector.Disassembler.Translator.DecodeDuplicateStatement(Int32 offset)
    at Reflector.Disassembler.Translator.DecodeStatement(Int32 end)
    at Reflector.Disassembler.Translator.DecodeBlockStatement(Int32 offset, Int32 end)
    at Reflector.Disassembler.Translator.TranslateMethodDeclaration(IMethodDeclaration mD, IMethodBody mB, Boolean handleExpressionStack)
    at Reflector.Disassembler.Translator.TranslateMethodDeclaration(IMethodDeclaration mD, IMethodBody mB)
    at Reflector.Disassembler.Disassembler.TransformMethodDeclaration(IMethodDeclaration value)
    at Reflector.Application.Translator.TranslateMethodDeclaration(IMethodDeclaration value)
    at Reflector.Application.UserInterface.DisassemblerWindow.Render(Boolean expandTypes, Boolean expandMethods)

    Code can be found here: http://doena-soft.de/tmp/SubControls.zip in SubControls.MainWindowViewModel.RaiseEvent(string attribute)
  • Added this to the open case, thanks.
  • DJ DoenaDJ Doena Posts: 17 Bronze 2
    edited March 17, 2018 4:58PM
    @Russell D I was able to repro and record the version issue described above:


  • Hmm I can't actually reproduce this in v10 - if you use a v10 trial do you still get the error?

    Your previous reported problems are going to form part of a large piece of work I'm afraid, and its unlikely to be a quick fix. I will also just point out that any fixes are unlikely to go into v9 as well, unfortunately.
Sign In or Register to comment.