view basic/Messages.d @ 89:a49bb982a7b0 new_gen

Using the new SourceLocation system to handle errors. Also, this is the first push for making the errors don't throw, but continue to check the source.
author Anders Johnsen <skabet@gmail.com>
date Sun, 04 May 2008 20:27:01 +0200
parents
children 771ac63898e2
line wrap: on
line source

module basic.Messages;

enum : uint
{
    InvalidType,
    InvalidSymbol,
    InvalidIlligaleType,
    UnexpectedEOFBlock,
    OnlyOneDotFloating,
    OnlyOneEFloating,
    UnexpectedTokMulti,
    UnexpectedTokSingle,
    UnexpectedTok,
    CaseValueMustBeInt,
    UnexpectedBeginStmt,
    UnexpectedTokType,
    ExpectedIdAfterDot,
    ExpectedExp,
    ExpectedCastType
}

enum MessageType
{
    Warning,
    Error,
}

MessageEntry[uint] Messages;

struct MessageEntry
{
    MessageType type;
    char[] message;
}

static this()
{
    Messages = [
        InvalidType         : MessageEntry(MessageType.Error, "InvalidType"),
        UnexpectedEOFBlock  : MessageEntry(MessageType.Error, "Unexpected end of file. Unclosed comment block"),
        InvalidSymbol       : MessageEntry(MessageType.Error, "Read invalid symbol: '%0'"),
        OnlyOneDotFloating  : MessageEntry(MessageType.Error, "Only one '.' is allowed in an floating number"),
        OnlyOneEFloating    : MessageEntry(MessageType.Error, "Only one E is allowed in an floating number"),
        UnexpectedTokMulti  : MessageEntry(MessageType.Error, "Unexpected token, got %0 expected one of %1"),
        UnexpectedTokSingle : MessageEntry(MessageType.Error, "Unexpected token, got %0 expected %1"),
        UnexpectedTok       : MessageEntry(MessageType.Error, "Unexpected token %0"),
        CaseValueMustBeInt  : MessageEntry(MessageType.Error, "Cases can only be integer literals"),
        UnexpectedBeginStmt : MessageEntry(MessageType.Error, "Unexpected begining of statement."),
        UnexpectedTokType   : MessageEntry(MessageType.Error, "Unexpected token in Type parsing. Got %0"),
        ExpectedIdAfterDot  : MessageEntry(MessageType.Error, "Expected identifier after '.'"),
        ExpectedExp         : MessageEntry(MessageType.Error, "Expected expression"),
        ExpectedCastType    : MessageEntry(MessageType.Error, "Expected cast type")
    ];
}