From de90bcb98b6b635208251cc78a318cf36bc7a48c Mon Sep 17 00:00:00 2001 From: Tomasz Godzik Date: Tue, 11 Mar 2025 12:16:21 +0100 Subject: [PATCH 1/2] Add test cases project for presentation compiler [Cherry-picked 75f1ec78e68739bb9064081f8651840b2fce9b74][modified] From 1e62523384755943fadcaf238853f05713ef0075 Mon Sep 17 00:00:00 2001 From: kasiaMarek Date: Wed, 4 Dec 2024 13:49:27 +0100 Subject: [PATCH 2/2] fix match error in keyword completions [Cherry-picked 115de9d85e83ef0e0f0622db21dbe399c3e7d191] --- .../pc/completions/KeywordsCompletions.scala | 1 + .../pc/tests/completion/CompletionSuite.scala | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/presentation-compiler/src/main/dotty/tools/pc/completions/KeywordsCompletions.scala b/presentation-compiler/src/main/dotty/tools/pc/completions/KeywordsCompletions.scala index abbf43174bc7..5dd3c8dead4d 100644 --- a/presentation-compiler/src/main/dotty/tools/pc/completions/KeywordsCompletions.scala +++ b/presentation-compiler/src/main/dotty/tools/pc/completions/KeywordsCompletions.scala @@ -216,6 +216,7 @@ object KeywordsCompletions: case untpd.TypeDef(_, template: Template) => checkForPossibleKeywords(template) case untpd.ModuleDef(_, template: Template) => checkForPossibleKeywords(template) case template: Template => checkForPossibleKeywords(template) + case _ => TemplateKeywordAvailability.default }.getOrElse(TemplateKeywordAvailability.default) diff --git a/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionSuite.scala b/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionSuite.scala index c2ee94a4e0bd..9f76f149874c 100644 --- a/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionSuite.scala +++ b/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionSuite.scala @@ -2116,3 +2116,21 @@ class CompletionSuite extends BaseCompletionSuite: |""".stripMargin, assertSingleItem = false ) + + @Test def `metals-i6861` = + check( + """|trait Builder[Alg]: + | def withTraces: String + | + |trait BuilderFactory: + | def transformRouter(f: [Alg] => Builder[Alg] => String): BuilderFactory + | def build: Unit + | + |def demo = + | (??? : BuilderFactory) + | .transformRouter([Alg] => _.withTraces) + | .build@@ + |""".stripMargin, + """|build: Unit + |""".stripMargin, + )