Edit

kc3-lang/angle/src/compiler/InfoSink.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2013-07-08 13:30:19
    Hash : 075edd84
    Message : Refactor location tracking. R=kbr@chromium.org Review URL: https://codereview.appspot.com/9078046 git-svn-id: https://angleproject.googlecode.com/svn/trunk@2202 736b8ea6-26fd-11df-bfd4-992fa37f6226 TRAC #23333 Authored-by: alokp@chromium.org Signed-off-by: Shannon Woods Signed-off-by Nicolas Capens Merged-by: Jamie Madill

  • src/compiler/InfoSink.cpp
  • //
    // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    #include "compiler/InfoSink.h"
    
    void TInfoSinkBase::prefix(TPrefixType p) {
        switch(p) {
            case EPrefixNone:
                break;
            case EPrefixWarning:
                sink.append("WARNING: ");
                break;
            case EPrefixError:
                sink.append("ERROR: ");
                break;
            case EPrefixInternalError:
                sink.append("INTERNAL ERROR: ");
                break;
            case EPrefixUnimplemented:
                sink.append("UNIMPLEMENTED: ");
                break;
            case EPrefixNote:
                sink.append("NOTE: ");
                break;
            default:
                sink.append("UNKOWN ERROR: ");
                break;
        }
    }
    
    void TInfoSinkBase::location(int file, int line) {
        TPersistStringStream stream;
        if (line)
            stream << file << ":" << line;
        else
            stream << file << ":? ";
        stream << ": ";
    
        sink.append(stream.str());
    }
    
    void TInfoSinkBase::location(const TSourceLoc& loc) {
        location(loc.first_file, loc.first_line);
    }
    
    void TInfoSinkBase::message(TPrefixType p, const TSourceLoc& loc, const char* m) {
        prefix(p);
        location(loc);
        sink.append(m);
        sink.append("\n");
    }