yql_issue.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include <yql/essentials/core/issue/protos/issue_id.pb.h>
  3. #include <yql/essentials/public/issue/yql_issue.h>
  4. #include <yql/essentials/public/issue/yql_issue_id.h>
  5. #ifdef _win_
  6. #ifdef GetMessage
  7. #undef GetMessage
  8. #endif
  9. #endif
  10. namespace NYql {
  11. extern const char IssueMapResource[14];
  12. using EYqlIssueCode = TIssuesIds::EIssueCode;
  13. inline ESeverity GetSeverity(EYqlIssueCode id) {
  14. return GetSeverity<TIssuesIds, IssueMapResource>(id);
  15. }
  16. inline TString GetMessage(EYqlIssueCode id) {
  17. return GetMessage<TIssuesIds, IssueMapResource>(id);
  18. }
  19. inline TIssue& SetIssueCode(EYqlIssueCode id, TIssue& issue) {
  20. issue.SetCode(id, GetSeverity(id));
  21. return issue;
  22. }
  23. inline TString IssueCodeToString(EYqlIssueCode id) {
  24. const TString& message = GetMessage(id);
  25. if (message) {
  26. return message;
  27. } else {
  28. return IssueCodeToString<TIssuesIds>(id);
  29. }
  30. }
  31. inline TIssue YqlIssue(const TPosition& position, EYqlIssueCode id, const TString& message) {
  32. TIssue issue(position, message);
  33. SetIssueCode(id, issue);
  34. return issue;
  35. }
  36. inline TIssue YqlIssue(const TPosition& position, EYqlIssueCode id) {
  37. return YqlIssue(position, id, IssueCodeToString(id));
  38. }
  39. void CheckFatalIssues(TIssues& issues);
  40. }