-class Location
- readable var _file: String
- readable var _line_start: Int
- readable var _line_end: Int
- readable var _column_start: Int
- readable var _column_end: Int
-
- redef meth to_s: String do
- if line_start == line_end then
- if column_start == column_end then
- return "{file}:{line_start},{column_start}"
- else
- return "{file}:{line_start},{column_start}--{column_end}"
- end
- else
- return "{file}:{line_start},{column_start}--{line_end}:{column_end}"
- end
- end
-end
-
-# Global context for tools
-class ToolContext
-special MMContext
- # Number of errors
- readable var _error_count: Int = 0
-
- # Number of warnings
- readable var _warning_count: Int = 0
-
- fun check_errors
- do
- if error_count > 0 then exit(1)
- end
-
- # Display an error
- fun error(s: String)
- do
- stderr.write("{s}\n")
- _error_count = _error_count + 1
- end
-
- # Display a warning
- fun warning(s: String)
- do
- if _opt_warn.value == 0 then return
- stderr.write("{s}\n")
- if _opt_warn.value == 1 then
- _warning_count = _warning_count + 1
- else
- _error_count = _error_count + 1
- end
- end
-
- # Display an info
- meth info(s: String, level: Int)
- do
- if level <= verbose_level then
- print "{s}"
- end
- end