in ReSharper.FSharp/src/FSharp/FSharp.Psi/src/Metadata/FSharpMetadataReader.cs [623:672]
private Func<bool, FSharpCompiledTypeRepresentation> ReadTypeRepresentation()
{
var tag1 = ReadByteTagValue("tag1", 1);
if (tag1 == 0)
return _ => FSharpCompiledTypeRepresentation.Other;
if (tag1 == 1)
{
var tag2 = ReadByteTagValue("tag2", 4);
if (tag2 == 0)
{
ReadFieldsTable();
return _ => FSharpCompiledTypeRepresentation.Other;
}
if (tag2 == 1)
{
var caseNames = ReadArray(reader => reader.ReadUnionCaseSpec());
return _ => FSharpCompiledTypeRepresentation.NewUnion(caseNames);
}
if (tag2 == 2)
{
ReadIlType();
return flag =>
{
if (!flag)
return null;
return null;
};
}
if (tag2 == 3)
{
ReadTypeObjectModelData();
return _ => FSharpCompiledTypeRepresentation.Other;
}
if (tag2 == 4)
{
ReadType();
return _ => FSharpCompiledTypeRepresentation.Other;
}
throw new InvalidOperationException();
}
throw new InvalidOperationException();
}