Skip to content

Internal compiler error: string interpolation + dynamic + expression trees #308

@controlflow

Description

@controlflow

Continue of #306 story:

using System;
using System.Linq.Expressions;

class Foo {
    Expression<Func<string>> M(dynamic d) {
        return () => $"Dynamic: {d}";
    }
}

Unexpected value 'Sequence' of type 'Microsoft.CodeAnalysis.CSharp.BoundKind'

at Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter.VisitInternal(BoundExpression node)
at Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter.Visit(BoundExpression node)
at Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter.TranslateLambdaBody(BoundBlock block)
at Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter.VisitLambdaInternal(BoundLambda node)
at Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter.RewriteLambda(BoundLambda node, TypeCompilationState compilationState, TypeMap typeMap, DiagnosticBag diagnostics)
at Microsoft.CodeAnalysis.CSharp.LambdaRewriter.RewriteLambdaConversion(BoundLambda node)
at Microsoft.CodeAnalysis.CSharp.LambdaRewriter.VisitConversion(BoundConversion conversion)
at Microsoft.CodeAnalysis.CSharp.BoundConversion.Accept(BoundTreeVisitor visitor)
at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.Visit(BoundNode node)
at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitReturnStatement(BoundReturnStatement node)
at Microsoft.CodeAnalysis.CSharp.BoundReturnStatement.Accept(BoundTreeVisitor visitor)
at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.Visit(BoundNode node)
at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePoint(BoundSequencePoint node)
at Microsoft.CodeAnalysis.CSharp.BoundSequencePoint.Accept(BoundTreeVisitor visitor)
at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.Visit(BoundNode node)
at Microsoft.CodeAnalysis.CSharp.LambdaRewriter.RewriteBlock(BoundBlock node, ArrayBuilder1 prologue, ArrayBuilder1 newLocals)
at Microsoft.CodeAnalysis.CSharp.LambdaRewriter.<>c__DisplayClass45_0.b__0(ArrayBuilder1 prologue, ArrayBuilder1 newLocals)
at Microsoft.CodeAnalysis.CSharp.LambdaRewriter.IntroduceFrame[T](BoundNode node, LambdaFrame frame, Func3 F) at Microsoft.CodeAnalysis.CSharp.LambdaRewriter.VisitBlock(BoundBlock node) at Microsoft.CodeAnalysis.CSharp.BoundBlock.Accept(BoundTreeVisitor visitor) at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.Visit(BoundNode node) at Microsoft.CodeAnalysis.CSharp.LambdaRewriter.Rewrite(BoundStatement loweredBody, NamedTypeSymbol thisType, ParameterSymbol thisParameter, MethodSymbol method, Int32 methodOrdinal, ArrayBuilder1 lambdaDebugInfoBuilder, ArrayBuilder1 closureDebugInfoBuilder, VariableSlotAllocator slotAllocatorOpt, TypeCompilationState compilationState, DiagnosticBag diagnostics, Boolean assignLocals) at Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(MethodSymbol method, Int32 methodOrdinal, BoundStatement body, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState, DiagnosticBag diagnostics, VariableSlotAllocator& lazyVariableSlotAllocator, ArrayBuilder1 lambdaDebugInfoBuilder, ArrayBuilder`1 closureDebugInfoBuilder, StateMachineTypeSymbol& stateMachineTypeOpt)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol symbol)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass21_0.b__0()
at Roslyn.Utilities.UICultureUtilities.<>c__DisplayClass5_0.b__0()

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions