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