[add] no version check
This commit is contained in:
parent
c4f92f0402
commit
1a6be470ee
7 changed files with 75 additions and 45 deletions
|
|
@ -10,10 +10,15 @@ renderMessage?: fn(view: EditorView) → Node An optional custom rendering fu
|
|||
actions?: readonly Action[] An optional array of actions that can be taken on this diagnostic.
|
||||
:)
|
||||
import module namespace lspt = 'lsp-typedefs' at "../lsp-typedefs.xqm";
|
||||
import module namespace hnd="lsp/handlers" at "../handlers.xqm";
|
||||
import module namespace pos="lsp/position" at "../position.xqm";
|
||||
|
||||
declare type lsp-diags:ParseResult as element(Module|ERROR);
|
||||
|
||||
declare variable $lsp-diags:actions as hnd:actionMap :={
|
||||
"Module": lsp-diags:Module#2
|
||||
};
|
||||
|
||||
declare function lsp-diags:list(
|
||||
$uri as xs:string,
|
||||
$text as xs:string,
|
||||
|
|
@ -29,46 +34,59 @@ as map(*)*{
|
|||
'XQLT0001', 'previous parse error'
|
||||
:)
|
||||
declare function lsp-diags:parse-error($text as xs:string, $xml as element(ERROR))
|
||||
as map(*)*{
|
||||
as lspt:Diagnostic*
|
||||
{
|
||||
if(string-length($text) eq 0)
|
||||
then ()
|
||||
else let $last:= string-length($text)-1
|
||||
let $dmesg:=$xml/string()=>trace("parse-error")
|
||||
let $dmesg:=translate($dmesg," ",";")
|
||||
let $b:=number($xml/@b)-1
|
||||
let $e:= number($xml/@e)-1
|
||||
return (
|
||||
(: mark error :)
|
||||
lspt:Diagnostic(lspt:Range(pos:toPosition($text, $b),
|
||||
pos:toPosition($text, $e)
|
||||
),
|
||||
1,
|
||||
$dmesg,'XPST0003'),
|
||||
|
||||
if(string-length($text) gt 0)
|
||||
then let $last:= string-length($text)-1
|
||||
let $dmesg:=$xml/string()=>trace("parse-error")
|
||||
let $dmesg:=translate($dmesg," ",";")
|
||||
let $b:=number($xml/@b)-1
|
||||
let $e:= number($xml/@e)-1
|
||||
return (
|
||||
(: mark error :)
|
||||
lspt:Diagnostic(lspt:Range(pos:toPosition($text, $b),
|
||||
pos:toPosition($text, $e)),
|
||||
1,
|
||||
$dmesg,'XPST0003'),
|
||||
|
||||
(:mark after error:)
|
||||
if($e ge string-length($text))
|
||||
then ()
|
||||
else lspt:Diagnostic(lspt:Range(pos:toPosition($text, $e +1 ),
|
||||
pos:toPosition($text, $last)),
|
||||
2,
|
||||
"Unparsed due to previous parser error.",
|
||||
"XQLT0001")
|
||||
)
|
||||
else ()
|
||||
(:mark after error:)
|
||||
if($e ge string-length($text))
|
||||
then ()
|
||||
else lspt:Diagnostic(lspt:Range(pos:toPosition($text, $e +1 ),
|
||||
pos:toPosition($text, $last)
|
||||
),
|
||||
2,
|
||||
"Unparsed due to previous parser error.",
|
||||
"XQLT0001")
|
||||
)
|
||||
};
|
||||
|
||||
(: test data :)
|
||||
declare function lsp-diags:parse-xquery($text as xs:string, $xml as element(Module))
|
||||
declare function lsp-diags:parse-xquery($text as xs:string, $parse as element(Module))
|
||||
as map(*)*{
|
||||
(: lsp-diags:nostic(pos:Range(pos:Position(0,0), pos:Position(0, 5)),
|
||||
$lsp-diags:severities('error'),"error"),
|
||||
|
||||
lsp-diags:nostic(pos:Range(pos:Position(1,0), pos:Position(1,5)),
|
||||
$lsp-diags:severities('warning'),"warning"),
|
||||
|
||||
lsp-diags:nostic(pos:Range(pos:Position(2,0), pos:Position(2, 5)),
|
||||
$lsp-diags:severities('info'),"info"),
|
||||
|
||||
lsp-diags:nostic(pos:Range(pos:Position(3,0), pos:Position(3, 6)),
|
||||
$lsp-diags:severities('hint'), "hint") :)
|
||||
|
||||
let $state:= hnd:Result(())
|
||||
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{
|
||||
let $new:=if(exists($parse/VersionDecl)=>trace("has ver: "))
|
||||
then ()
|
||||
else let $text:="dddjjjjjjjjjjjjjjjj"
|
||||
let $e:=1
|
||||
let $last:=8
|
||||
return lspt:Diagnostic(lspt:Range(
|
||||
pos:toPosition($text, 1 ),
|
||||
pos:toPosition($text, 1)
|
||||
),
|
||||
$lspt:SeverityKind?info,
|
||||
"No XQuery version declaration present",
|
||||
"XQLT???")
|
||||
return (
|
||||
hnd:Result(($state?result,$new=>trace(" VER ")),true())
|
||||
,message(name($parse),"Module: ")
|
||||
)
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue