diff --git a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala index aff7218e662b..63b6e9f8ac51 100644 --- a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala @@ -3472,7 +3472,11 @@ object Parsers { givenDef(start, mods, atSpan(in.skipToken()) { Mod.Given() }) case _ => syntaxErrorOrIncomplete(ExpectedStartOfTopLevelDefinition()) - EmptyTree + mods.annotations match { + case head :: Nil => head + case Nil => EmptyTree + case all => Block(all, errorTermTree) + } } /** ClassDef ::= id ClassConstr TemplateOpt diff --git a/language-server/test/dotty/tools/languageserver/CompletionTest.scala b/language-server/test/dotty/tools/languageserver/CompletionTest.scala index 1dd9516de7d1..6ef219187475 100644 --- a/language-server/test/dotty/tools/languageserver/CompletionTest.scala +++ b/language-server/test/dotty/tools/languageserver/CompletionTest.scala @@ -946,4 +946,21 @@ class CompletionTest { ("MyAnnotation", Module, "Foo.MyAnnotation") ) ) + + @Test def i13624_annotation : Unit = + code"""@annotation.implicitNot${m1} + |@annotation.implicitNotFound @mai${m2}""" + .withSource + .completion(m1, + Set( + ("implicitNotFound", Class, "scala.annotation.implicitNotFound"), + ("implicitNotFound", Module, "scala.annotation.implicitNotFound") + ) + ) + .completion(m2, + Set( + ("main", Class, "scala.main"), + ("main", Module, "main") + ) + ) }