Repository: scalameta/scalameta (scala)

Issue:
False error when splicing a polymorphic function
### Describe the bug

Metals detects an error for this Scala 3 valid code

```scala
def foo(fn: Expr[[A] => A => Unit])(using Quotes) =
  '{${fn}[Int](0)}
//       ^
// Error: `;` expected but `[` found
```

### Expected behavior

No error

### Operating system

Windows

### Editor/Extension

VS Code

### Version of Metals

1.3.1+58-be9ad2e0-SNAPSHOT

### Extra context or search terms

Scala version: 3.4.1

Pull request description:
resolves: https://github.com/scalameta/metals/issues/6483

Patch:
diff --git a/scalameta/parsers/shared/src/main/scala/scala/meta/internal/parsers/ScalametaParser.scala b/scalameta/parsers/shared/src/main/scala/scala/meta/internal/parsers/ScalametaParser.scala
index 8e0b81d612..f3b080beab 100644
--- a/scalameta/parsers/shared/src/main/scala/scala/meta/internal/parsers/ScalametaParser.scala
+++ b/scalameta/parsers/shared/src/main/scala/scala/meta/internal/parsers/ScalametaParser.scala
@@ -2130,7 +2130,7 @@ class ScalametaParser(input: Input)(implicit dialect: Dialect) {
       case _: LeftBracket => t match {
           case _: Quasi | _: Term.Name | _: Term.Select | _: Term.Apply | _: Term.ApplyInfix |
               _: Term.ApplyUnary | _: Term.New | _: Term.Placeholder | _: Term.ApplyUsing |
-              _: Term.Interpolate =>
+              _: Term.Interpolate | _: Term.SplicedMacroExpr =>
             var app: Term = t
             while (token.is[LeftBracket]) app = addPos(Term.ApplyType(app, exprTypeArgs()))
 


Test patch:
diff --git a/tests/shared/src/test/scala/scala/meta/tests/parsers/dotty/MacroSuite.scala b/tests/shared/src/test/scala/scala/meta/tests/parsers/dotty/MacroSuite.scala
index 8e179240bd..c887c093d9 100644
--- a/tests/shared/src/test/scala/scala/meta/tests/parsers/dotty/MacroSuite.scala
+++ b/tests/shared/src/test/scala/scala/meta/tests/parsers/dotty/MacroSuite.scala
@@ -314,4 +314,13 @@ class MacroSuite extends BaseDottySuite {
     ))
     runTestAssert[Stat](code)(tree)
   }
+
+  test("#6483-metals") {
+    val code = "${ fn }[Int](0)"
+    val tree = Term.Apply(
+      Term.ApplyType(Term.SplicedMacroExpr(blk(tname("fn"))), List(Type.Name("Int"))),
+      List(lit(0))
+    )
+    runTestAssert[Stat](code)(tree)
+  }
 }