Skip to content

Commit 18eea6b

Browse files
committed
Rename ...Pos to ...Offset and add pointOffset
1 parent 40c1913 commit 18eea6b

File tree

1 file changed

+37
-36
lines changed

1 file changed

+37
-36
lines changed

compiler/src/dotty/tools/dotc/parsing/Parsers.scala

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,13 @@ object Parsers {
8383
def atPos[T <: Positioned](start: Offset)(t: T): T =
8484
atPos(start, start)(t)
8585

86-
/** Defensive version of Position#start */
87-
def startPos(t: Positioned): Int =
86+
def startOffset(t: Positioned): Int =
8887
if (t.pos.exists) t.pos.start else in.offset
8988

90-
/** Defensive version of Position#end */
91-
def endPos(t: Positioned): Int =
89+
def pointOffset(t: Positioned): Int =
90+
if (t.pos.exists) t.pos.point else in.offset
91+
92+
def endOffset(t: Positioned): Int =
9293
if (t.pos.exists) t.pos.end else in.lastOffset
9394

9495
def nameStart: Offset =
@@ -456,7 +457,7 @@ object Parsers {
456457
val topInfo = opStack.head
457458
opStack = opStack.tail
458459
val od = reduceStack(base, topInfo.operand, 0, true)
459-
return atPos(startPos(od), topInfo.offset) {
460+
return atPos(startOffset(od), topInfo.offset) {
460461
PostfixOp(od, topInfo.operator)
461462
}
462463
}
@@ -500,7 +501,7 @@ object Parsers {
500501

501502
/** Accept identifier acting as a selector on given tree `t`. */
502503
def selector(t: Tree): Tree =
503-
atPos(startPos(t), in.offset) { Select(t, ident()) }
504+
atPos(startOffset(t), in.offset) { Select(t, ident()) }
504505

505506
/** Selectors ::= ident { `.' ident()
506507
*
@@ -736,7 +737,7 @@ object Parsers {
736737

737738
def refinedTypeRest(t: Tree): Tree = {
738739
newLineOptWhenFollowedBy(LBRACE)
739-
if (in.token == LBRACE) refinedTypeRest(atPos(startPos(t)) { RefinedTypeTree(t, refinement()) })
740+
if (in.token == LBRACE) refinedTypeRest(atPos(startOffset(t)) { RefinedTypeTree(t, refinement()) })
740741
else t
741742
}
742743

@@ -757,7 +758,7 @@ object Parsers {
757758
def annotType(): Tree = annotTypeRest(simpleType())
758759

759760
def annotTypeRest(t: Tree): Tree =
760-
if (in.token == AT) annotTypeRest(atPos(startPos(t)) { Annotated(t, annot()) })
761+
if (in.token == AT) annotTypeRest(atPos(startOffset(t)) { Annotated(t, annot()) })
761762
else t
762763

763764
/** SimpleType ::= SimpleType TypeArgs
@@ -788,19 +789,19 @@ object Parsers {
788789
val handleSingletonType: Tree => Tree = t =>
789790
if (in.token == TYPE) {
790791
in.nextToken()
791-
atPos(startPos(t)) { SingletonTypeTree(t) }
792+
atPos(startOffset(t)) { SingletonTypeTree(t) }
792793
} else t
793794

794795
private def simpleTypeRest(t: Tree): Tree = in.token match {
795796
case HASH => simpleTypeRest(typeProjection(t))
796-
case LBRACKET => simpleTypeRest(atPos(startPos(t)) { AppliedTypeTree(t, typeArgs(namedOK = true)) })
797+
case LBRACKET => simpleTypeRest(atPos(startOffset(t)) { AppliedTypeTree(t, typeArgs(namedOK = true)) })
797798
case _ => t
798799
}
799800

800801
private def typeProjection(t: Tree): Tree = {
801802
accept(HASH)
802803
val id = typeIdent()
803-
atPos(startPos(t), startPos(id)) { Select(t, id.name) }
804+
atPos(startOffset(t), startOffset(id)) { Select(t, id.name) }
804805
}
805806

806807
/** NamedTypeArg ::= id `=' Type
@@ -854,7 +855,7 @@ object Parsers {
854855
val t = toplevelTyp()
855856
if (isIdent(nme.raw.STAR)) {
856857
in.nextToken()
857-
atPos(startPos(t)) { PostfixOp(t, nme.raw.STAR) }
858+
atPos(startOffset(t)) { PostfixOp(t, nme.raw.STAR) }
858859
} else t
859860
}
860861

@@ -979,7 +980,7 @@ object Parsers {
979980
val t = expr1(location)
980981
if (in.token == ARROW) {
981982
placeholderParams = saved
982-
closureRest(startPos(t), location, convertToParams(t))
983+
closureRest(startOffset(t), location, convertToParams(t))
983984
}
984985
else if (isWildcard(t)) {
985986
placeholderParams = placeholderParams ::: saved
@@ -1033,7 +1034,7 @@ object Parsers {
10331034
assert(handlerStart != -1)
10341035
syntaxError(
10351036
new EmptyCatchBlock(body),
1036-
Position(handlerStart, endPos(handler))
1037+
Position(handlerStart, endOffset(handler))
10371038
)
10381039
case _ =>
10391040
}
@@ -1043,7 +1044,7 @@ object Parsers {
10431044
else {
10441045
if (handler.isEmpty) warning(
10451046
EmptyCatchAndFinallyBlock(body),
1046-
source atPos Position(tryOffset, endPos(body))
1047+
source atPos Position(tryOffset, endOffset(body))
10471048
)
10481049
EmptyTree
10491050
}
@@ -1065,21 +1066,21 @@ object Parsers {
10651066
case EQUALS =>
10661067
t match {
10671068
case Ident(_) | Select(_, _) | Apply(_, _) =>
1068-
atPos(startPos(t), in.skipToken()) { Assign(t, expr()) }
1069+
atPos(startOffset(t), in.skipToken()) { Assign(t, expr()) }
10691070
case _ =>
10701071
t
10711072
}
10721073
case COLON =>
10731074
ascription(t, location)
10741075
case MATCH =>
1075-
atPos(startPos(t), in.skipToken()) {
1076+
atPos(startOffset(t), in.skipToken()) {
10761077
inBraces(Match(t, caseClauses()))
10771078
}
10781079
case _ =>
10791080
t
10801081
}
10811082

1082-
def ascription(t: Tree, location: Location.Value) = atPos(startPos(t), in.skipToken()) {
1083+
def ascription(t: Tree, location: Location.Value) = atPos(startOffset(t), in.skipToken()) {
10831084
in.token match {
10841085
case USCORE =>
10851086
val uscoreStart = in.skipToken()
@@ -1113,7 +1114,7 @@ object Parsers {
11131114
val id = termIdent()
11141115
val paramExpr =
11151116
if (location == Location.InBlock && in.token == COLON)
1116-
atPos(startPos(id), in.skipToken()) { Typed(id, infixType()) }
1117+
atPos(startOffset(id), in.skipToken()) { Typed(id, infixType()) }
11171118
else
11181119
id
11191120
closureRest(start, location, convertToParam(paramExpr, mods) :: Nil)
@@ -1202,13 +1203,13 @@ object Parsers {
12021203
in.nextToken()
12031204
simpleExprRest(selector(t), canApply = true)
12041205
case LBRACKET =>
1205-
val tapp = atPos(startPos(t), in.offset) { TypeApply(t, typeArgs(namedOK = true)) }
1206+
val tapp = atPos(startOffset(t), in.offset) { TypeApply(t, typeArgs(namedOK = true)) }
12061207
simpleExprRest(tapp, canApply = true)
12071208
case LPAREN | LBRACE if canApply =>
1208-
val app = atPos(startPos(t), in.offset) { Apply(t, argumentExprs()) }
1209+
val app = atPos(startOffset(t), in.offset) { Apply(t, argumentExprs()) }
12091210
simpleExprRest(app, canApply = true)
12101211
case USCORE =>
1211-
atPos(startPos(t), in.skipToken()) { PostfixOp(t, nme.WILDCARD) }
1212+
atPos(startOffset(t), in.skipToken()) { PostfixOp(t, nme.WILDCARD) }
12121213
case _ =>
12131214
t
12141215
}
@@ -1292,7 +1293,7 @@ object Parsers {
12921293
if (in.token == IF) guard()
12931294
else {
12941295
val pat = pattern1()
1295-
if (in.token == EQUALS) atPos(startPos(pat), in.skipToken()) { GenAlias(pat, expr()) }
1296+
if (in.token == EQUALS) atPos(startOffset(pat), in.skipToken()) { GenAlias(pat, expr()) }
12961297
else generatorRest(pat)
12971298
}
12981299

@@ -1301,7 +1302,7 @@ object Parsers {
13011302
def generator(): Tree = generatorRest(pattern1())
13021303

13031304
def generatorRest(pat: Tree) =
1304-
atPos(startPos(pat), accept(LARROW)) { GenFrom(pat, expr()) }
1305+
atPos(startOffset(pat), accept(LARROW)) { GenFrom(pat, expr()) }
13051306

13061307
/** ForExpr ::= `for' (`(' Enumerators `)' | `{' Enumerators `}')
13071308
* {nl} [`yield'] Expr
@@ -1365,7 +1366,7 @@ object Parsers {
13651366
val pattern = () => {
13661367
val pat = pattern1()
13671368
if (isIdent(nme.raw.BAR))
1368-
atPos(startPos(pat)) { Alternative(pat :: patternAlts()) }
1369+
atPos(startOffset(pat)) { Alternative(pat :: patternAlts()) }
13691370
else pat
13701371
}
13711372

@@ -1391,15 +1392,15 @@ object Parsers {
13911392
// compatibility for Scala2 `x @ _*` syntax
13921393
infixPattern() match {
13931394
case pt @ Ident(tpnme.WILDCARD_STAR) =>
1394-
migrationWarningOrError("The syntax `x @ _*' is no longer supported; use `x : _*' instead", startPos(p))
1395-
atPos(startPos(p), offset) { Typed(p, pt) }
1395+
migrationWarningOrError("The syntax `x @ _*' is no longer supported; use `x : _*' instead", startOffset(p))
1396+
atPos(startOffset(p), offset) { Typed(p, pt) }
13961397
case p =>
1397-
atPos(startPos(p), offset) { Bind(name, p) }
1398+
atPos(startOffset(p), offset) { Bind(name, p) }
13981399
}
13991400
case p @ Ident(tpnme.WILDCARD_STAR) =>
14001401
// compatibility for Scala2 `_*` syntax
1401-
migrationWarningOrError("The syntax `_*' is no longer supported; use `x : _*' instead", startPos(p))
1402-
atPos(startPos(p)) { Typed(Ident(nme.WILDCARD), p) }
1402+
migrationWarningOrError("The syntax `_*' is no longer supported; use `x : _*' instead", startOffset(p))
1403+
atPos(startOffset(p)) { Typed(Ident(nme.WILDCARD), p) }
14031404
case p =>
14041405
p
14051406
}
@@ -1423,7 +1424,7 @@ object Parsers {
14231424
val simplePattern = () => in.token match {
14241425
case IDENTIFIER | BACKQUOTED_IDENT | THIS =>
14251426
path(thisOK = true) match {
1426-
case id @ Ident(nme.raw.MINUS) if isNumericLit => literal(startPos(id))
1427+
case id @ Ident(nme.raw.MINUS) if isNumericLit => literal(startOffset(id))
14271428
case t => simplePatternRest(t)
14281429
}
14291430
case USCORE =>
@@ -1453,9 +1454,9 @@ object Parsers {
14531454
def simplePatternRest(t: Tree): Tree = {
14541455
var p = t
14551456
if (in.token == LBRACKET)
1456-
p = atPos(startPos(t), in.offset) { TypeApply(p, typeArgs()) }
1457+
p = atPos(startOffset(t), in.offset) { TypeApply(p, typeArgs()) }
14571458
if (in.token == LPAREN)
1458-
p = atPos(startPos(t), in.offset) { Apply(p, argumentPatterns()) }
1459+
p = atPos(startOffset(t), in.offset) { Apply(p, argumentPatterns()) }
14591460
p
14601461
}
14611462

@@ -1780,7 +1781,7 @@ object Parsers {
17801781
case imp: Import =>
17811782
imp
17821783
case sel @ Select(qual, name) =>
1783-
val selector = atPos(sel.pos.point) { Ident(name) }
1784+
val selector = atPos(pointOffset(sel)) { Ident(name) }
17841785
cpy.Import(sel)(qual, selector :: Nil)
17851786
case t =>
17861787
accept(DOT)
@@ -1813,7 +1814,7 @@ object Parsers {
18131814
def importSelector(): Tree = {
18141815
val from = termIdentOrWildcard()
18151816
if (from.name != nme.WILDCARD && in.token == ARROW)
1816-
atPos(startPos(from), in.skipToken()) {
1817+
atPos(startOffset(from), in.skipToken()) {
18171818
Thicket(from, termIdentOrWildcard())
18181819
}
18191820
else from
@@ -2094,7 +2095,7 @@ object Parsers {
20942095

20952096
/** Create a tree representing a packaging */
20962097
def makePackaging(start: Int, pkg: Tree, stats: List[Tree]): PackageDef = pkg match {
2097-
case x: RefTree => atPos(start, pkg.pos.point)(PackageDef(x, stats))
2098+
case x: RefTree => atPos(start, pointOffset(pkg))(PackageDef(x, stats))
20982099
}
20992100

21002101
/** Packaging ::= package QualId [nl] `{' TopStatSeq `}'

0 commit comments

Comments
 (0)