in ReSharper.FSharp/src/FSharp/FSharp.Psi/src/Metadata/FSharpMetadataReader.cs [1115:1219]
private object ReadExpression()
{
var tag = ReadByteTagValue(13);
if (tag == 0)
{
ReadConst();
ReadType();
}
else if (tag == 1)
{
ReadValueRef();
ReadValueRefFlags();
}
else if (tag == 2)
{
ReadOperation();
ReadTypes();
ReadArray(ReadExpressionFunc);
}
else if (tag == 3)
{
ReadExpression();
ReadExpression();
ReadPackedInt();
}
else if (tag == 4)
{
ReadOption(reader => reader.ReadValue());
ReadOption(reader => reader.ReadValue());
ReadArray(reader => reader.ReadValue());
ReadExpression();
ReadType();
}
else if (tag == 5)
{
ReadArray(reader => reader.ReadTypeParameterSpec());
ReadExpression();
ReadType();
}
else if (tag == 6)
{
ReadExpression();
ReadType();
ReadTypes();
ReadArray(ReadExpressionFunc);
}
else if (tag == 7)
{
ReadArray(reader => reader.ReadBinding());
ReadExpression();
}
else if (tag == 8)
{
ReadBinding();
ReadExpression();
}
else if (tag == 9)
{
ReadDecisionTree();
ReadArray(reader => reader.ReadTuple2(reader => reader.ReadValue(), ReadExpressionFunc));
ReadType();
}
else if (tag == 10)
{
ReadType();
ReadOption(reader => reader.ReadValue());
ReadExpression();
ReadArray(reader => reader.ReadObjectExpressionMethod());
ReadArray(reader =>
reader.ReadTuple2(
ReadTypeFunc,
reader => reader.ReadArray(reader => reader.ReadObjectExpressionMethod())));
}
else if (tag == 11)
{
ReadArray(reader => reader.ReadStaticOptimizationConstraint());
ReadExpression();
ReadExpression();
}
else if (tag == 12)
{
ReadArray(reader => reader.ReadTypeParameterSpec());
ReadExpression();
}
else if (tag == 13)
{
ReadExpression();
ReadType();
}
return null;
}