src/Tools/VSCode/src/protocol.scala
changeset 64649 d67c3094a0c2
parent 64648 5d7f741aaccb
child 64651 ea5620f7b0d8
--- a/src/Tools/VSCode/src/protocol.scala	Wed Dec 21 21:18:37 2016 +0100
+++ b/src/Tools/VSCode/src/protocol.scala	Wed Dec 21 22:27:38 2016 +0100
@@ -82,10 +82,10 @@
 
   class RequestTextDocumentPosition(name: String)
   {
-    def unapply(json: JSON.T): Option[(Id, String, Line.Position)] =
+    def unapply(json: JSON.T): Option[(Id, Line.Position_Node)] =
       json match {
-        case RequestMessage(id, method, Some(TextDocumentPosition(uri, pos))) if method == name =>
-          Some((id, uri, pos))
+        case RequestMessage(id, method, Some(TextDocumentPosition(pos_node))) if method == name =>
+          Some((id, pos_node))
         case _ => None
       }
   }
@@ -178,26 +178,26 @@
 
   object Location
   {
-    def apply(uri: String, range: Line.Range): JSON.T =
-      Map("uri" -> uri, "range" -> Range(range))
+    def apply(loc: Line.Range_Node): JSON.T =
+      Map("uri" -> loc.name, "range" -> Range(loc.range))
 
-    def unapply(json: JSON.T): Option[(String, Line.Range)] =
+    def unapply(json: JSON.T): Option[Line.Range_Node] =
       for {
         uri <- JSON.string(json, "uri")
         range_json <- JSON.value(json, "range")
         range <- Range.unapply(range_json)
-      } yield (uri, range)
+      } yield Line.Range_Node(range, uri)
   }
 
   object TextDocumentPosition
   {
-    def unapply(json: JSON.T): Option[(String, Line.Position)] =
+    def unapply(json: JSON.T): Option[Line.Position_Node] =
       for {
         doc <- JSON.value(json, "textDocument")
         uri <- JSON.string(doc, "uri")
         pos_json <- JSON.value(json, "position")
         pos <- Position.unapply(pos_json)
-      } yield (uri, pos)
+      } yield Line.Position_Node(pos, uri)
   }
 
 
@@ -308,7 +308,7 @@
 
   object GotoDefinition extends RequestTextDocumentPosition("textDocument/definition")
   {
-    def reply(id: Id, result: List[(String, Line.Range)]): JSON.T =
-      ResponseMessage(id, Some(result.map({ case (uri, range) => Location.apply(uri, range) })))
+    def reply(id: Id, result: List[Line.Range_Node]): JSON.T =
+      ResponseMessage(id, Some(result.map(Location.apply(_))))
   }
 }