Skip to content

Commit aba82ba

Browse files
committed
Complete doc of FunArgMods
1 parent aa53182 commit aba82ba

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

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

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -715,15 +715,13 @@ object Parsers {
715715
/** Type ::= [FunArgMods] FunArgTypes `=>' Type
716716
* | HkTypeParamClause `->' Type
717717
* | InfixType
718-
* FunArgMods ::= `implicit' FunArgMods
719-
* | `unused' FunArgMods
720718
* FunArgTypes ::= InfixType
721719
* | `(' [ FunArgType {`,' FunArgType } ] `)'
722720
* | '(' TypedFunParam {',' TypedFunParam } ')'
723721
*/
724722
def typ(): Tree = {
725723
val start = in.offset
726-
val imods = allFunctionMods(EmptyModifiers)
724+
val imods = funArgMods(EmptyModifiers)
727725
def functionRest(params: List[Tree]): Tree =
728726
atPos(start, accept(ARROW)) {
729727
val t = typ()
@@ -1066,7 +1064,7 @@ object Parsers {
10661064
def expr(location: Location.Value): Tree = {
10671065
val start = in.offset
10681066
if (in.token == IMPLICIT || in.token == UNUSED) {
1069-
val imods = allFunctionMods(EmptyModifiers)
1067+
val imods = funArgMods(EmptyModifiers)
10701068
implicitClosure(start, location, imods)
10711069
} else {
10721070
val saved = placeholderParams
@@ -1728,12 +1726,15 @@ object Parsers {
17281726
normalize(loop(start))
17291727
}
17301728

1731-
def allFunctionMods(imods: Modifiers, doIfImplicit: () => Unit = () => ()): Modifiers = {
1729+
/** FunArgMods ::= `implicit' FunArgMods
1730+
* | `unused' FunArgMods
1731+
*/
1732+
def funArgMods(imods: Modifiers, doIfImplicit: () => Unit = () => ()): Modifiers = {
17321733
if (in.token == IMPLICIT) {
17331734
doIfImplicit()
1734-
allFunctionMods(addMod(imods, atPos(accept(IMPLICIT)) { Mod.Implicit() }), doIfImplicit)
1735+
funArgMods(addMod(imods, atPos(accept(IMPLICIT)) { Mod.Implicit() }), doIfImplicit)
17351736
} else if (in.token == UNUSED)
1736-
allFunctionMods(addMod(imods, atPos(accept(UNUSED)) { Mod.Unused() }), doIfImplicit)
1737+
funArgMods(addMod(imods, atPos(accept(UNUSED)) { Mod.Unused() }), doIfImplicit)
17371738
else imods
17381739
}
17391740

@@ -1882,7 +1883,7 @@ object Parsers {
18821883
if (in.token == RPAREN) Nil
18831884
else {
18841885
if (in.token == IMPLICIT || in.token == UNUSED)
1885-
imods = allFunctionMods(imods, () => implicitOffset = in.offset)
1886+
imods = funArgMods(imods, () => implicitOffset = in.offset)
18861887
commaSeparated(() => param())
18871888
}
18881889
}
@@ -2478,7 +2479,7 @@ object Parsers {
24782479
else if (isDefIntro(localModifierTokens))
24792480
if (in.token == IMPLICIT || in.token == UNUSED) {
24802481
val start = in.offset
2481-
var imods = allFunctionMods(EmptyModifiers)
2482+
var imods = funArgMods(EmptyModifiers)
24822483
if (isBindingIntro) stats += implicitClosure(start, Location.InBlock, imods)
24832484
else stats +++= localDef(start, imods)
24842485
} else {

docs/docs/internals/syntax.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,11 @@ ClassQualifier ::= ‘[’ id ‘]’
117117

118118
### Types
119119
```ebnf
120-
Type ::= [‘implicit’] FunArgTypes ‘=>’ Type Function(ts, t)
120+
Type ::= [FunArgMods] FunArgTypes ‘=>’ Type Function(ts, t)
121121
| HkTypeParamClause ‘=>’ Type TypeLambda(ps, t)
122122
| InfixType
123+
FunArgMods ::= `implicit' FunArgMods
124+
| `unused' FunArgMods
123125
FunArgTypes ::= InfixType
124126
| ‘(’ [ FunArgType {‘,’ FunArgType } ] ‘)’
125127
| '(' TypedFunParam {',' TypedFunParam } ')'

0 commit comments

Comments
 (0)