blob: 3b6d0a25b154edbc2627460f82efdaa456f1db3e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/* __ *\
** ________ ___ / / ___ __ ____ Scala.js IR **
** / __/ __// _ | / / / _ | __ / // __/ (c) 2014, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
** /____/\___/_/ |_/____/_/ | |__/ /____/ **
** |/____/ **
\* */
package scala.scalajs.ir
final case class Position(
/** Source file. */
source: Position.SourceFile,
/** Zero-based line number. */
line: Int,
/** Zero-based column number. */
column: Int
) {
def show: String = s"$line:$column"
def isEmpty: Boolean = {
source.getScheme == null && source.getRawAuthority == null &&
source.getRawPath == "" && source.getRawQuery == null &&
source.getRawFragment == null
}
def isDefined: Boolean = !isEmpty
def orElse(that: => Position): Position = if (isDefined) this else that
}
object Position {
type SourceFile = java.net.URI
object SourceFile {
def apply(f: java.io.File): SourceFile = f.toURI
def apply(f: String): SourceFile = new java.net.URI(f)
}
val NoPosition = Position(SourceFile(""), 0, 0)
}
|