From e3d91dcef2bae94463ecca14a0600e662063d130 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Wed, 5 Feb 2020 10:29:54 +0100 Subject: [PATCH] Fix #8181: Fix isExprIntro predicate to exclude `extension on` --- compiler/src/dotty/tools/dotc/parsing/Parsers.scala | 4 +++- tests/pos/i8181.scala | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tests/pos/i8181.scala diff --git a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala index 166d44ecb4ff..ef68c570f3f0 100644 --- a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala @@ -213,7 +213,9 @@ object Parsers { } && !in.isSoftModifierInModifierPosition def isExprIntro: Boolean = - in.canStartExprTokens.contains(in.token) && !in.isSoftModifierInModifierPosition + in.canStartExprTokens.contains(in.token) + && !in.isSoftModifierInModifierPosition + && !(isIdent(nme.extension) && followingIsExtension()) def isDefIntro(allowedMods: BitSet, excludedSoftModifiers: Set[TermName] = Set.empty): Boolean = in.token == AT diff --git a/tests/pos/i8181.scala b/tests/pos/i8181.scala new file mode 100644 index 000000000000..6dbf2b74660f --- /dev/null +++ b/tests/pos/i8181.scala @@ -0,0 +1,6 @@ +object Main: + def main(args: Array[String]): Unit = + extension on (a: AnyRef): + def putout(): Unit = println(a) + + "blub".putout()