Skip to content

Commit

Permalink
bugfix: No signature help for local methods
Browse files Browse the repository at this point in the history
  • Loading branch information
jkciesluk committed Sep 25, 2023
1 parent b1fc943 commit c96b561
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
4 changes: 3 additions & 1 deletion compiler/src/dotty/tools/dotc/util/Signatures.scala
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import core.NameKinds
import core.Types._
import core.Symbols.NoSymbol
import interactive.Interactive
import transform.SymUtils.isLocal
import util.Spans.Span
import reporting._

Expand Down Expand Up @@ -178,7 +179,8 @@ object Signatures {
(alternativeIndex, alternatives)
case _ =>
val funSymbol = fun.symbol
val alternatives = funSymbol.owner.info.member(funSymbol.name).alternatives
val alternatives = if funSymbol.isLocal then List(funSymbol.denot) else
funSymbol.owner.info.member(funSymbol.name).alternatives
val alternativeIndex = alternatives.map(_.symbol).indexOf(funSymbol) max 0
(alternativeIndex, alternatives)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -702,3 +702,39 @@ class SignatureHelpSuite extends BaseSignatureHelpSuite:
| ^^^^^^^^^^^
|""".stripMargin
)

@Test def `local-method` =
check(
"""
|object Main {
| def foo() = {
| def deployment(
| fst: String,
| snd: Int = 1,
| ): Option[Int] = ???
| val abc = deployment(@@)
| }
|}
|""".stripMargin,
"""|deployment(fst: String, snd: Int): Option[Int]
| ^^^^^^^^^^^
|""".stripMargin,
)

@Test def `local-method2` =
check(
"""
|object Main {
| val foo = {
| def deployment(
| fst: String,
| snd: Int = 1,
| ): Option[Int] = ???
| deployment(@@)
| }
|}
|""".stripMargin,
"""|deployment(fst: String, snd: Int): Option[Int]
| ^^^^^^^^^^^
|""".stripMargin,
)

0 comments on commit c96b561

Please sign in to comment.