From 63233cd685c77a2b3e4037ed73c624096a388185 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Mon, 8 Jun 2020 14:24:38 +0200 Subject: [PATCH] Fix #9046: Allow inline as parameter name --- compiler/src/dotty/tools/dotc/parsing/Parsers.scala | 9 +++++---- tests/pos/i9046.scala | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 tests/pos/i9046.scala diff --git a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala index 6c5eaf315ffa..383905c9a5d2 100644 --- a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala @@ -2813,13 +2813,14 @@ object Parsers { def modifiers(allowed: BitSet = modifierTokens, start: Modifiers = Modifiers()): Modifiers = { @tailrec def loop(mods: Modifiers): Modifiers = - if (allowed.contains(in.token) || - in.isSoftModifier && - localModifierTokens.subsetOf(allowed)) { // soft modifiers are admissible everywhere local modifiers are + if allowed.contains(in.token) + || in.isSoftModifier + && localModifierTokens.subsetOf(allowed) // soft modifiers are admissible everywhere local modifiers are + && in.lookahead.token != COLON + then val isAccessMod = accessModifierTokens contains in.token val mods1 = addModifier(mods) loop(if (isAccessMod) accessQualifierOpt(mods1) else mods1) - } else if (in.token == NEWLINE && (mods.hasFlags || mods.hasAnnotations)) { in.nextToken() loop(mods) diff --git a/tests/pos/i9046.scala b/tests/pos/i9046.scala new file mode 100644 index 000000000000..c2c937f875cf --- /dev/null +++ b/tests/pos/i9046.scala @@ -0,0 +1 @@ +class C(inline: String) \ No newline at end of file