+ private var text_cache: nullable String = null
+
+ init with_file(f: SourceFile) do init(f,0,0,0,0)
+
+ redef fun ==(other: nullable Object): Bool do
+ if other == null then return false
+ if not other isa Location then return false
+
+ if other.file != file then return false
+ if other.line_start != line_start then return false
+ if other.line_end != line_end then return false
+ if other.column_start != column_start then return false
+ if other.column_end != column_end then return false
+
+ return true
+ end
+
+ # Is `self` included (or equals) to `loc`?
+ fun located_in(loc: nullable Location): Bool do
+ if loc == null then return false
+
+ if line_start < loc.line_start then return false
+ if line_start > loc.line_end then return false
+
+ if line_end > loc.line_end then return false
+
+ if line_start == loc.line_start then
+ if column_start < loc.column_start then return false
+ if column_start > loc.column_end then return false
+ end
+
+ if line_end == loc.line_end and column_end > loc.column_end then return false
+
+ return true
+ end