blob: e71fe51d380480312a11f02367263866f3595668 [file] [log] [blame]
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +00001//
2// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
Geoff Lang17732822013-08-29 13:46:49 -04007#include "compiler/translator/InfoSink.h"
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +00008
Jamie Madill45bcc782016-11-07 13:58:48 -05009namespace sh
10{
11
Jamie Madill075edd82013-07-08 13:30:19 -040012void TInfoSinkBase::prefix(TPrefixType p) {
13 switch(p) {
alokp@chromium.org4e4facd2010-06-02 15:21:22 +000014 case EPrefixNone:
15 break;
16 case EPrefixWarning:
17 sink.append("WARNING: ");
18 break;
19 case EPrefixError:
20 sink.append("ERROR: ");
21 break;
22 case EPrefixInternalError:
23 sink.append("INTERNAL ERROR: ");
24 break;
25 case EPrefixUnimplemented:
26 sink.append("UNIMPLEMENTED: ");
27 break;
28 case EPrefixNote:
29 sink.append("NOTE: ");
30 break;
31 default:
32 sink.append("UNKOWN ERROR: ");
33 break;
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000034 }
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000035}
36
Jamie Madill075edd82013-07-08 13:30:19 -040037void TInfoSinkBase::location(int file, int line) {
alokp@chromium.org4e4facd2010-06-02 15:21:22 +000038 TPersistStringStream stream;
39 if (line)
Jamie Madill075edd82013-07-08 13:30:19 -040040 stream << file << ":" << line;
alokp@chromium.org4e4facd2010-06-02 15:21:22 +000041 else
Jamie Madill075edd82013-07-08 13:30:19 -040042 stream << file << ":? ";
alokp@chromium.org4e4facd2010-06-02 15:21:22 +000043 stream << ": ";
44
45 sink.append(stream.str());
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000046}
47
Jamie Madill075edd82013-07-08 13:30:19 -040048void TInfoSinkBase::location(const TSourceLoc& loc) {
49 location(loc.first_file, loc.first_line);
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000050}
51
Jamie Madill075edd82013-07-08 13:30:19 -040052void TInfoSinkBase::message(TPrefixType p, const TSourceLoc& loc, const char* m) {
53 prefix(p);
alokp@chromium.org4e4facd2010-06-02 15:21:22 +000054 location(loc);
Jamie Madill075edd82013-07-08 13:30:19 -040055 sink.append(m);
alokp@chromium.org4e4facd2010-06-02 15:21:22 +000056 sink.append("\n");
daniel@transgaming.com4f39fd92010-03-08 20:26:45 +000057}
Jamie Madill45bcc782016-11-07 13:58:48 -050058
59} // namespace sh