[mod] symbol ranges
This commit is contained in:
parent
2d0ae19026
commit
fc56a3d505
5 changed files with 52 additions and 39 deletions
|
|
@ -66,13 +66,13 @@ as lspt:Diagnostic*
|
|||
(: test data :)
|
||||
declare function lsp-diags:parse-xquery($text as xs:string, $parse as element(Module))
|
||||
as map(*)*{
|
||||
let $state:= hnd:Result(())
|
||||
let $state:= hnd:State(())
|
||||
let $result:= hnd:walk($parse,$lsp-diags:actions,$state)
|
||||
return $result?result
|
||||
};
|
||||
|
||||
declare function lsp-diags:Module($parse as element(Module),$state as hnd:Result )
|
||||
as hnd:Result{
|
||||
declare function lsp-diags:Module($parse as element(Module),$state as hnd:State )
|
||||
as hnd:State{
|
||||
let $new:=if(exists($parse/VersionDecl)=>trace("has ver: "))
|
||||
then ()
|
||||
else let $text:="dddjjjjjjjjjjjjjjjj"
|
||||
|
|
@ -86,7 +86,10 @@ as hnd:Result{
|
|||
"No XQuery version declaration present",
|
||||
"XQLT???")
|
||||
return (
|
||||
hnd:Result(($state?result,$new=>trace(" VER ")),true())
|
||||
$state
|
||||
=>map:put("result",($state?result,$new=>trace(" VER ")))
|
||||
=>map:put("skipchildren",true())
|
||||
|
||||
,message(name($parse),"Module: ")
|
||||
)
|
||||
};
|
||||
|
|
@ -15,9 +15,9 @@ declare variable $syms:actions as hnd:actionMap :={
|
|||
|
||||
declare function syms:list($parse as element(),$text as xs:string)
|
||||
as lspt:DocumentSymbol*{
|
||||
let $state:= hnd:Result(())
|
||||
let $result:= hnd:walk($parse,$syms:actions,$state)
|
||||
return $result?result
|
||||
let $state:= hnd:State((),false(),{"text":$text})
|
||||
let $state:= hnd:walk($parse,$syms:actions,$state)
|
||||
return $state?result
|
||||
};
|
||||
|
||||
(: for testing only:)
|
||||
|
|
@ -33,37 +33,46 @@ as lspt:DocumentSymbol*{
|
|||
};
|
||||
|
||||
(:~ just trace :)
|
||||
declare function syms:action($parse as element(),$state as hnd:Result )
|
||||
as hnd:Result{
|
||||
hnd:Result($state?result,true()) ,message(name($parse),"ACTION: ")
|
||||
declare function syms:action($parse as element(),$state as hnd:State )
|
||||
as hnd:State{
|
||||
$state ,message(name($parse),"ACTION: ")
|
||||
};
|
||||
|
||||
declare function syms:VarDecl($parse as element(VarDecl),$state as hnd:Result )
|
||||
as hnd:Result{
|
||||
declare function syms:VarDecl($parse as element(VarDecl),$state as hnd:State )
|
||||
as hnd:State{
|
||||
let $name:=syms:localName($parse/VarNameAndType/EQName)
|
||||
let $length:=string($parse)=>string-length()
|
||||
let $range:=lspt:Range(lspt:Position(0,0),lspt:Position(0,3))
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('Variable'),$range,$range,"VAR")
|
||||
return ($state?result,$sym)=>hnd:Result(true())
|
||||
let $range:=pos:range-from-ast($parse,$state?extras?text)=>trace("POSSSS")
|
||||
let $full-range:=$range
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('Variable'),$range,$full-range,"VAR")
|
||||
return $state
|
||||
=>map:put("result",($state?result,$sym))
|
||||
=>map:put("skipchildren",true())
|
||||
|
||||
};
|
||||
|
||||
declare function syms:FunctionDecl($parse as element(FunctionDecl),$state as hnd:Result )
|
||||
as hnd:Result{
|
||||
declare function syms:FunctionDecl($parse as element(FunctionDecl),$state as hnd:State )
|
||||
as hnd:State{
|
||||
let $name:=syms:localName($parse/UnreservedFunctionEQName)
|
||||
let $prev:=$state?result[$name eq ?name]
|
||||
let $range:=pos:range-from-ast($parse,$state?context?text)=>trace("POSSSS")
|
||||
let $range:=pos:range-from-ast($parse,$state?extras?text)=>trace("POSSSS")
|
||||
let $full-range:=$range
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('Method'),$range,$full-range,"FUN")
|
||||
return ($state?result,$sym)=>hnd:Result(true())
|
||||
return $state
|
||||
=>map:put("result",($state?result,$sym))
|
||||
=>map:put("skipchildren",true())
|
||||
};
|
||||
|
||||
declare function syms:NamedRecordTypeDecl($parse as element(NamedRecordTypeDecl), $state as hnd:Result )
|
||||
as hnd:Result{
|
||||
declare function syms:NamedRecordTypeDecl($parse as element(NamedRecordTypeDecl), $state as hnd:State )
|
||||
as hnd:State{
|
||||
let $name:=syms:localName($parse/EQName)
|
||||
let $range:=lspt:Range(lspt:Position(0,0),lspt:Position(0,3))
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('TypeParameter'),$range,$range,"--RECORD")
|
||||
let $range:=pos:range-from-ast($parse,$state?extras?text)=>trace("POSSSS")
|
||||
let $full-range:=$range
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('TypeParameter'),$range,$full-range,"--RECORD")
|
||||
=>trace("RECORD")
|
||||
return ($state?result,$sym)=>hnd:Result(true())
|
||||
return $state
|
||||
=>map:put("result",($state?result,$sym))
|
||||
=>map:put("skipchildren",true())
|
||||
};
|
||||
|
||||
declare function syms:localName($name as xs:string )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue