public override IType Type()

in ReSharper.FSharp/src/FSharp/FSharp.Psi/src/Impl/Tree/LiteralExpr.cs [37:94]


    public override IType Type()
    {
      var psiModule = GetPsiModule();

      var tokenType = Literal?.GetTokenType();
      if (tokenType == null)
        return TypeFactory.CreateUnknownType(psiModule);

      var predefinedType = psiModule.GetPredefinedType();

      if (tokenType == FSharpTokenType.TRUE || tokenType == FSharpTokenType.FALSE)
        return predefinedType.Bool;

      if (tokenType == FSharpTokenType.STRING || tokenType == FSharpTokenType.VERBATIM_STRING ||
          tokenType == FSharpTokenType.TRIPLE_QUOTED_STRING)
        return predefinedType.String;

      if (tokenType == FSharpTokenType.CHARACTER_LITERAL)
        return predefinedType.Char;

      if (tokenType == FSharpTokenType.INT32)
        return predefinedType.Int;

      if (tokenType == FSharpTokenType.UINT32)
        return predefinedType.Uint;

      if (tokenType == FSharpTokenType.IEEE64)
        return predefinedType.Double;

      if (tokenType == FSharpTokenType.IEEE32)
        return predefinedType.Float;

      if (tokenType == FSharpTokenType.UINT64)
        return predefinedType.Ulong;

      if (tokenType == FSharpTokenType.INT16)
        return predefinedType.Short;

      if (tokenType == FSharpTokenType.UINT16)
        return predefinedType.Ushort;

      if (tokenType == FSharpTokenType.INT64)
        return predefinedType.Long;

      if (tokenType == FSharpTokenType.UINT64)
        return predefinedType.Ulong;

      if (tokenType == FSharpTokenType.BYTE)
        return predefinedType.Byte;

      if (tokenType == FSharpTokenType.SBYTE)
        return predefinedType.Sbyte;

      if (tokenType == FSharpTokenType.DECIMAL)
        return predefinedType.Decimal;

      return TypeFactory.CreateUnknownType(psiModule);
    }