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

Unexpected value 'UnsetConversionKind' #34957

Closed
jnyrup opened this issue Apr 12, 2019 · 1 comment
Closed

Unexpected value 'UnsetConversionKind' #34957

jnyrup opened this issue Apr 12, 2019 · 1 comment
Labels
Resolution-Duplicate The described behavior is tracked in another issue

Comments

@jnyrup
Copy link

jnyrup commented Apr 12, 2019

Version Used:
Visual Studio 16.1.0 Preview 1.0

Steps to Reproduce:
I don't have an exact case as the crash happened during rewriting some code and I haven't been able to reproduce it yet.
The code was somewhat similar to:

var a = new List<int>();
var b = new List<int>();

foreach ((int x, int y, int z) in
    a.Zip(
    b.Join(b,
            e => e,
            e => e,
            (s, t) => (s, t)),
    (f, g) => (f, g.s, g.t)))
{
}

Expected Behavior:
No exception.

Actual Behavior:

System.InvalidOperationException : Unexpected value 'UnsetConversionKind' of type 'Microsoft.CodeAnalysis.CSharp.ConversionKind'
   at Microsoft.CodeAnalysis.CSharp.ConversionKindExtensions.IsImplicitConversion(ConversionKind conversionKind)
   at Microsoft.CodeAnalysis.CSharp.Conversion.get_IsExplicit()
   at Microsoft.CodeAnalysis.CSharp.Utilities.SpeculationAnalyzer.ConversionsAreCompatible(Conversion originalConversion,Conversion newConversion)
   at Microsoft.CodeAnalysis.CSharp.Utilities.SpeculationAnalyzer.ForEachConversionsAreCompatible(SemanticModel originalModel,CommonForEachStatementSyntax originalForEach,SemanticModel newModel,CommonForEachStatementSyntax newForEach)
   at Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`7.ReplacementBreaksForEachStatement(TForEachStatementSyntax forEachStatement,TForEachStatementSyntax newForEachStatement)
   at Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`7.ReplacementChangesSemanticsForNode(SyntaxNode currentOriginalNode,SyntaxNode currentReplacedNode,SyntaxNode previousOriginalNode,SyntaxNode previousReplacedNode)
   at Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`7.ReplacementChangesSemantics(SyntaxNode currentOriginalNode,SyntaxNode currentReplacedNode,SyntaxNode originalRoot,Boolean skipVerificationForCurrentNode)
   at Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`7.ReplacementChangesSemantics()
   at Microsoft.CodeAnalysis.CSharp.Extensions.ExpressionSyntaxExtensions.CanReplaceWithReducedName(NameSyntax name,TypeSyntax reducedName,SemanticModel semanticModel,CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Extensions.ExpressionSyntaxExtensions.TryReduce(NameSyntax name,SemanticModel semanticModel,TypeSyntax& replacementNode,TextSpan& issueSpan,OptionSet optionSet,CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Extensions.ExpressionSyntaxExtensions.TryReduceExplicitName(ExpressionSyntax expression,SemanticModel semanticModel,TypeSyntax& replacementNode,TextSpan& issueSpan,OptionSet optionSet,CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Extensions.ExpressionSyntaxExtensions.TryReduceOrSimplifyExplicitName(ExpressionSyntax expression,SemanticModel semanticModel,ExpressionSyntax& replacementNode,TextSpan& issueSpan,OptionSet optionSet,CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Simplification.CSharpNameReducer.SimplifyName(SyntaxNode node,SemanticModel semanticModel,OptionSet optionSet,CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Simplification.AbstractCSharpReducer.AbstractReductionRewriter.SimplifyNode[TNode](TNode node,SyntaxNode newNode,SyntaxNode parentNode,Func`5 simplifier)
   at Microsoft.CodeAnalysis.CSharp.Simplification.AbstractCSharpReducer.AbstractReductionRewriter.SimplifyExpression[TExpression](TExpression expression,SyntaxNode newNode,Func`5 simplifier)
   at Microsoft.CodeAnalysis.CSharp.Simplification.CSharpNameReducer.Rewriter.VisitAliasQualifiedName(AliasQualifiedNameSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.AliasQualifiedNameSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.Visit(SyntaxNode node)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.VisitMemberAccessExpression(MemberAccessExpressionSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Simplification.CSharpNameReducer.Rewriter.VisitMemberAccessExpression(MemberAccessExpressionSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.MemberAccessExpressionSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.Visit(SyntaxNode node)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.VisitMemberAccessExpression(MemberAccessExpressionSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Simplification.CSharpNameReducer.Rewriter.VisitMemberAccessExpression(MemberAccessExpressionSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.MemberAccessExpressionSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.Visit(SyntaxNode node)
   at Microsoft.CodeAnalysis.CSharp.Simplification.AbstractCSharpReducer.AbstractReductionRewriter.VisitInvocationExpression(InvocationExpressionSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.Visit(SyntaxNode node)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.VisitArgument(ArgumentSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.Visit(SyntaxNode node)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.VisitListElement[TNode](TNode node)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.VisitList[TNode](SeparatedSyntaxList`1 list)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.VisitArgumentList(ArgumentListSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentListSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.Visit(SyntaxNode node)
   at Microsoft.CodeAnalysis.CSharp.Simplification.AbstractCSharpReducer.AbstractReductionRewriter.VisitInvocationExpression(InvocationExpressionSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.Visit(SyntaxNode node)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.VisitForEachVariableStatement(ForEachVariableStatementSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.ForEachVariableStatementSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter.Visit(SyntaxNode node)
   at Microsoft.CodeAnalysis.CSharp.Simplification.AbstractCSharpReducer.AbstractReductionRewriter.VisitNodeOrToken(SyntaxNodeOrToken nodeOrToken,SemanticModel semanticModel,Boolean simplifyAllDescendants)
   at async Microsoft.CodeAnalysis.Simplification.AbstractSimplificationService`3.<>c__DisplayClass10_1.<ReduceAsync>b__0[TExpressionSyntax,TStatementSyntax,TCrefSyntax](<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.Simplification.AbstractSimplificationService`3.ReduceAsyncInternal[TExpressionSyntax,TStatementSyntax,TCrefSyntax](<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.Simplification.AbstractSimplificationService`3.ReduceAsync[TExpressionSyntax,TStatementSyntax,TCrefSyntax](<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.Simplification.Simplifier.ReduceAsync(<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.ExtractMethod.MethodExtractor.CodeGenerator`3.GenerateAsync[TStatement,TExpression,TNodeUnderContainer](<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.ExtractMethod.MethodExtractor.ExtractMethodAsync(<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.ExtractMethod.AbstractExtractMethodService`3.ExtractMethodAsync[TValidator,TExtractor,TResult](<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.CodeRefactorings.ExtractMethod.ExtractMethodCodeRefactoringProvider.GetCodeActionAsync(<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.CodeRefactorings.ExtractMethod.ExtractMethodCodeRefactoringProvider.ComputeRefactoringsAsync(<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.CodeRefactorings.CodeRefactoringService.GetRefactoringFromProviderAsync(<Unknown Parameters>)
   at Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)

It looks like https://github.com/dotnet/roslyn/blob/master/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/ConversionKindExtensions.cs is missing a case for UnsetConversionKind after that enum was added in #33648.

@jinujoseph
Copy link
Contributor

Duplicate of #34984

@jinujoseph jinujoseph marked this as a duplicate of #34984 Apr 16, 2019
@sharwell sharwell added the Resolution-Duplicate The described behavior is tracked in another issue label Apr 16, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Resolution-Duplicate The described behavior is tracked in another issue
Projects
None yet
Development

No branches or pull requests

3 participants