From 21cb3937acadca8d245b540aac301b130969ac0b Mon Sep 17 00:00:00 2001 From: Dima Date: Tue, 6 Jun 2023 23:40:26 +0300 Subject: [PATCH] fix(language-server): Go-to definition for path in `use` expression [LNG-187] (#733) add tokens for `use` and `use-from` expressions to language server --- .../src/main/scala/aqua/lsp/LspSemantics.scala | 4 +++- parser/src/main/scala/aqua/parser/head/UseExpr.scala | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/language-server/language-server-api/src/main/scala/aqua/lsp/LspSemantics.scala b/language-server/language-server-api/src/main/scala/aqua/lsp/LspSemantics.scala index 6403bf18..6239a1b9 100644 --- a/language-server/language-server-api/src/main/scala/aqua/lsp/LspSemantics.scala +++ b/language-server/language-server-api/src/main/scala/aqua/lsp/LspSemantics.scala @@ -1,7 +1,7 @@ package aqua.lsp import aqua.parser.Ast -import aqua.parser.head.{ImportExpr, ImportFromExpr} +import aqua.parser.head.{ImportExpr, ImportFromExpr, UseExpr, UseFromExpr} import aqua.parser.lexer.{LiteralToken, Token} import aqua.semantics.rules.ReportError import aqua.semantics.rules.locations.LocationsState @@ -24,6 +24,8 @@ class LspSemantics[S[_]] extends Semantics[S, LspContext[S]] { header match { case ImportExpr(fn) => l :+ fn case ImportFromExpr(_, fn) => l :+ fn + case UseExpr(fn, _) => l :+ fn + case UseFromExpr(_, fn, _) => l :+ fn case _ => l } } diff --git a/parser/src/main/scala/aqua/parser/head/UseExpr.scala b/parser/src/main/scala/aqua/parser/head/UseExpr.scala index 5e3c635a..613cd7dc 100644 --- a/parser/src/main/scala/aqua/parser/head/UseExpr.scala +++ b/parser/src/main/scala/aqua/parser/head/UseExpr.scala @@ -10,8 +10,8 @@ import aqua.parser.lift.Span import aqua.parser.lift.Span.{P0ToSpan, PToSpan} case class UseExpr[F[_]]( - filename: LiteralToken[F], - asModule: Option[Ability[F]] + filename: LiteralToken[F], + asModule: Option[Ability[F]] ) extends FilenameExpr[F] { override def mapK[K[_]: Comonad](fk: F ~> K): UseExpr[K] = @@ -24,7 +24,8 @@ case class UseExpr[F[_]]( object UseExpr extends HeaderExpr.Leaf { override val p: Parser[HeaderExpr[Span.S]] = - (`use` *> ` ` *> ValueToken.string ~ (` as ` *> Ability.ab).?).map { case (filename, asModule) => - UseExpr(filename, asModule) + (`use` *> ` ` *> ValueToken.string ~ (` as ` *> Ability.ab).?).map { + case (filename, asModule) => + UseExpr(filename, asModule) } }