@@ -3811,6 +3811,10 @@ let ``Test Project26 parameter symbols`` () =
38113811let objSymbol = wholeProjectResults.GetAllUsesOfAllSymbols() |> Async.RunSynchronously|> Array.find( fun su -> su.Symbol.DisplayName= " Class" )
38123812let objEntity = objSymbol.Symbol:?> FSharpEntity
38133813
3814+ let rec isByRef ( ty : FSharpType ) =
3815+ if ty.IsAbbreviationthen isByRef ty.AbbreviatedType
3816+ else ty.IsNamedType&& ty.NamedEntity.IsByRef
3817+
38143818// check we can get the CurriedParameterGroups
38153819let objMethodsCurriedParameterGroups =
38163820[ for xin objEntity.MembersFunctionsAndValuesdo
@@ -3823,14 +3827,14 @@ let ``Test Project26 parameter symbols`` () =
38233827if p.IsOptionalArgthen yield " optional"
38243828}
38253829|> String.concat" ,"
3826- yield x.CompiledName, p.Name, p.Type.ToString(), attributeNames]
3830+ yield x.CompiledName, p.Name, p.Type.ToString(), isByRef p.Type , attributeNames]
38273831
38283832 objMethodsCurriedParameterGroups|> shouldEqual
3829- [( " M1" , Some" arg1" , " type 'c" , " " );
3830- ( " M1" , Some" arg2" , " type 'd Microsoft.FSharp.Core.option" , " optional" );
3831- ( " M2" , Some" arg1" , " type 'a" , " params" );
3832- ( " M2" , Some" arg2" , " type 'b" , " optional" );
3833- ( " M3" , Some" arg" , " type Microsoft.FSharp.Core.byref<Microsoft.FSharp.Core.int>" , " out" )]
3833+ [( " M1" , Some" arg1" , " type 'c" , false , " " );
3834+ ( " M1" , Some" arg2" , " type 'd Microsoft.FSharp.Core.option" , false , " optional" );
3835+ ( " M2" , Some" arg1" , " type 'a" , false , " params" );
3836+ ( " M2" , Some" arg2" , " type 'b" , false , " optional" );
3837+ ( " M3" , Some" arg" , " type Microsoft.FSharp.Core.byref<Microsoft.FSharp.Core.int>" , true , " out" )]
38343838
38353839// check we can get the ReturnParameter
38363840let objMethodsReturnParameter =