@ -35,8 +35,9 @@ namespace ICSharpCode.Decompiler.Semantics
public TupleResolveResult ( ICompilation compilation ,
public TupleResolveResult ( ICompilation compilation ,
ImmutableArray < ResolveResult > elements ,
ImmutableArray < ResolveResult > elements ,
ImmutableArray < string > elementNames = default ( ImmutableArray < string > ) )
ImmutableArray < string > elementNames = default ( ImmutableArray < string > ) ,
: base ( GetTupleType ( compilation , elements , elementNames ) )
IModule valueTupleAssembly = null )
: base ( GetTupleType ( compilation , elements , elementNames , valueTupleAssembly ) )
{
{
this . Elements = elements ;
this . Elements = elements ;
}
}
@ -46,12 +47,12 @@ namespace ICSharpCode.Decompiler.Semantics
return Elements ;
return Elements ;
}
}
static IType GetTupleType ( ICompilation compilation , ImmutableArray < ResolveResult > elements , ImmutableArray < string > elementNames )
static IType GetTupleType ( ICompilation compilation , ImmutableArray < ResolveResult > elements , ImmutableArray < string > elementNames , IModule valueTupleAssembly )
{
{
if ( elements . Any ( e = > e . Type . Kind = = TypeKind . None | | e . Type . Kind = = TypeKind . Null ) )
if ( elements . Any ( e = > e . Type . Kind = = TypeKind . None | | e . Type . Kind = = TypeKind . Null ) )
return SpecialType . NoType ;
return SpecialType . NoType ;
else
else
return new TupleType ( compilation , elements . Select ( e = > e . Type ) . ToImmutableArray ( ) , elementNames ) ;
return new TupleType ( compilation , elements . Select ( e = > e . Type ) . ToImmutableArray ( ) , elementNames , valueTupleAssembly ) ;
}
}
}
}
}
}