blob: 797b5e91e496ad0aaddb13aa1c949f527988fcba [file] [log] [blame]
/*
* Copyright 2021 Google LLC.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "include/sksl/SkSLErrorReporter.h"
#include "src/sksl/SkSLCompiler.h"
#include "src/sksl/dsl/priv/DSLWriter.h"
namespace SkSL {
void ErrorReporter::error(skstd::string_view msg, PositionInfo position) {
if (msg.contains(Compiler::POISON_TAG)) {
// don't report errors on poison values
return;
}
++fErrorCount;
this->handleError(msg, position);
}
void ErrorReporter::error(int offset, skstd::string_view msg) {
if (msg.contains(Compiler::POISON_TAG)) {
// don't report errors on poison values
return;
}
if (offset == -1) {
++fErrorCount;
fPendingErrors.push_back(String(msg));
} else {
this->error(msg, this->position(offset));
}
}
PositionInfo ErrorReporter::position(int offset) const {
if (fSource && offset >= 0) {
int line = 1;
for (int i = 0; i < offset; i++) {
if (fSource[i] == '\n') {
++line;
}
}
return PositionInfo(/*file=*/nullptr, line);
} else {
return PositionInfo();
}
}
} // namespace SkSL