in ReSharper.FSharp/src/FSharp/FSharp.Psi/src/Metadata/FSharpMetadataReader.cs [771:824]
private FSharpMetadataType ReadType()
{
var tag = ReadByteTagValue(9);
if (tag == 0)
ReadArray(ReadTypeFunc);
else if (tag == 1)
{
var simpleTypeIndex = ReadPackedInt();
return simpleTypeIndex < Metadata.SimpleTypes.Length ? Metadata.SimpleTypes[simpleTypeIndex] : null;
}
else if (tag == 2)
{
ReadTypeRef();
ReadArray(ReadTypeFunc);
}
else if (tag == 3)
{
ReadType();
ReadType();
return FSharpMetadataType.Function;
}
else if (tag == 4)
ReadTypeParameterRef();
else if (tag == 5)
{
ReadArray(reader => reader.ReadTypeParameterSpec());
return ReadType();
}
else if (tag == 6)
ReadMeasureExpression();
else if (tag == 7)
{
var unionCase = ReadUnionCaseRef();
var substitution = ReadArray(ReadTypeFunc);
}
else if (tag == 8)
ReadArray(ReadTypeFunc);
else if (tag == 9)
{
var anonRecord = ReadAnonRecord();
var substitution = ReadTypes();
}
return null;
}