tricu

An interpreted language for exploring Tree Calculus
Log | Files | Refs | README | LICENSE

consumer_link_diagnostics.tri (918B)


      1 -- Source-link parse failures retain alias and verified source position.
      2 !import "consumers.module" M
      3 !import "consumers.link" CL
      4 !import "parser" P
      5 !import "lexer" Position
      6 !import "prelude" !Local
      7 !import "io" !Local
      8 root = "__ROOT__"
      9 stage = do onOk_
     10   hash <- M.cmPutSource root "consumer broken\n  $"
     11   M.cmPutImports root [(pair "broken" (pair hash "broken"))]
     12 main = io (onResult_ stage
     13   (_ : putStrLn "link-diagnostics-STAGE-ERROR")
     14   (descriptor : onResult_ (CL.clPrepare root descriptor [(pair "broken" t)])
     15     (failure : putStrLn (matchBool "link-diagnostics-ok" "link-diagnostics-DIFFER"
     16       (and? (equal? (fst failure) "broken")
     17         (and? (equal? (Position.lexerPositionLine
     18           (P.parserDiagnosticLocation (snd failure))) 2)
     19           (equal? (Position.lexerPositionColumn
     20             (P.parserDiagnosticLocation (snd failure))) 3)))))
     21     (_ : putStrLn "link-diagnostics-ACCEPTED")))
     22 main