private FSharpMetadataType ReadType()

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;
    }