Git Product home page Git Product logo

usethesource / rascal-language-servers Goto Github PK

View Code? Open in Web Editor NEW
10.0 18.0 7.0 22.31 MB

An LSP server for Rascal which includes an easy-to-use LSP generator for languages implemented in Rascal, and an interactive terminal REPL.

License: BSD 2-Clause "Simplified" License

Java 74.74% TypeScript 21.39% Shell 0.08% Rascal 1.27% JavaScript 0.37% RouterOS Script 2.15%
lsp-server generator rascal-mpl dsl vscode-language vscode-extension domain-specific-language language-server-protocol

rascal-language-servers's Introduction

Rascal - Language Servers

This project encapsulates both the Language Server Protocol (LSP) implementation of Rascal itself, and the LSP "generator" that can instantiate fresh LSPs for languages defined in or implemented in Rascal.

Currently we provide installers and client-specific features for VScode and no others.

This project is in beta stage; under development but used regularly by a group of early adopters. The VScode extension can be found here.

Origin story

  • 2022 many contributions come from http://SWAT.engineering next to CWI SWAT.
  • 2021--... You can consider this project an evolution of the https://github.com/usethesource/rascal-eclipse project, but it offers more and better features. On the other hand the rascal-eclipse project is still much more mature.
      • Includes "first level" generation of IDEs from language descriptions, just-like before
  • 2009--... Rascal-eclipse merged from the Eclipse IMP project and the Rascal project, as an evolution of the earlier ASF+SDF Meta-Environment 2.x
    • Rascal merges the functionality of ASF, SDF and RScript into a comprehensive and cohesive single language
    • Scannerless top-down parsing
    • Vallang extends to concepts of the ATerm library to include (immutable) sets and indexed relations
    • Includes "first level" generation of IDEs from language descriptions
  • 1998-2008 The ASF+SDF Meta-Environment 2.x was a language workbench based on:
    • SDF - declarative syntax definition, scannerless GLR parsing
    • ASF - conditional rewrite rules over concrete syntax
    • RScript - relational calculus DSL for fact analysis
    • ToolBus - strict separation of computation from coordination based on ACP
    • ATerm library - maximal sharing of terms and automatic garbage collection
    • A rewrite of its pre-decessor (see below) in C, Java, T-Script and ASF+SDF
    • It offers the generation of interactive programming environments (IDEs)
  • 1984-1998 That environment was an evolution of the earlier ASF+SDF system built in Centaur Lisp
    • Generating Interactive Programming Environments from language definitions
    • Incremental context-free general parser generation
    • Incremental term rewriting engines

CI

rascal-language-servers's People

Contributors

davylandman avatar dependabot[bot] avatar jurgenvinju avatar mahills avatar maveme avatar rodinaarssen avatar yami2200 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rascal-language-servers's Issues

support util::IDE::registerLanguage and friends

Using vscode's ability to register new file extensions to an existing language we can reuse the design of the TermLanguageRegistry from the rascal-eclipse project to support generating vscode plugins for DLSs

Implement Rascal and DSL syntax highlighting all via the semantic highlighting feature of the vscode lsp

This is to skip the (lossy and semi-manual) mapping of Rascal grammars to tm grammars completely. we can use UPTR parse trees to generate tagged token streams. Code examples can be found in the vi, emacs and eclipse bindings of the Meta-Environment.

Proposal: use tmGrammar standard tags as the @category names in Rascal grammars and Rascal parse tree annotators from now on. And back-port this behavior to the Eclipse plugin as well.

vsix file does not work

see build.sh; the vsix file that is produced is not functional. somehow the server is not connected.

implement auto-complete for Rascal

perhaps this must be added as a language contribution to util::IDE. util::REPL already has the interface for this, so I propose to synchronize these two.

missing IClassLoaderResolver implementation for project (and lib?) URI in VScode

...with the following effect:

INFO: detected |lib://rascal-lsp| at |jar+file:///Users/jurgenv/.vscode/extensions/usethesource.rascalmpl-0.0.1-SNAPSHOT/assets/jars/rascal-lsp.jar!/|
INFO: detected |lib://rascal| at |jar+file:///Users/jurgenv/.vscode/extensions/usethesource.rascalmpl-0.0.1-SNAPSHOT/assets/jars/rascal.jar!/|
INFO: detected |lib://rascal-core| at |jar+file:///Users/jurgenv/.vscode/extensions/usethesource.rascalmpl-0.0.1-SNAPSHOT/assets/jars/rascal-core.jar!/|
INFO: detected |lib://typepal| at |jar+file:///Users/jurgenv/.vscode/extensions/usethesource.rascalmpl-0.0.1-SNAPSHOT/assets/jars/typepal.jar!/|
WARNING: could not resolve required library: |lib://python-air|
WARNING: could not resolve required library: |lib://js-air|
Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Can not resolve classloader for |lib://python-air|
        at org.rascalmpl.uri.classloaders.SourceLocationClassLoader.initialize(SourceLocationClassLoader.java:60)
        at org.rascalmpl.uri.classloaders.SourceLocationClassLoader.<init>(SourceLocationClassLoader.java:40)
        at org.rascalmpl.vscode.lsp.terminal.LSPTerminalREPL$1.constructEvaluator(LSPTerminalREPL.java:114)
        at org.rascalmpl.repl.RascalInterpreterREPL.initialize(RascalInterpreterREPL.java:74)
        at org.rascalmpl.repl.BaseREPL.initialize(BaseREPL.java:159)
        at org.rascalmpl.repl.BaseREPL.<init>(BaseREPL.java:113)

This is a project that has a Require-Libraries definition in RASCAL.MF with |lib://python-air| on it.

NPE in RascalTextDocumentService

Caused by: java.lang.NullPointerException
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.lambda$hover$5(RascalTextDocumentService.java:220)

I don't know the trigger.

semantic tokenizer + unicode

have to check and probably fix the semantic tokenizer in case higher unicode characters are used. problems with offsets.

Removing all declarations and uses of annotations from the standard library

  • We've tested and released Rascal versions which simulate the behavior of annotation declarations and uses via the keyword field feature.
  • This works well. The standard library being the biggest user of this feature (like ParseTree.rsc)
  • We can now start removing all the declarations and uses of annotation syntax and replacing it by keyword field syntax with the same semantics
  • There is already a refactoring script which can do this automatically (lang::rascal::refactoring::upgrade) on one of the annotation branches. This could be revived.
  • After this refactoring the standard library will be rid of all the deprecation warnings by the type-checker and be a better model of how to write typical Rascal code again.

Add run/debug on top of main functions

Add a code-lens (or whatever is the right LSP feature) so that you can run a rascal module automatically from the vs code ide.

Similarly on a module, to do an import.

NPE in hover on filesystemprovider branch

Actually it looks like summaries can not be provided on that branch anymore.

[Error - 4:56:22 PM] Request textDocument/hover failed.
Message: Internal error.
Code: -32603
java.util.concurrent.CompletionException: java.lang.NullPointerException
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:618)
at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:628)
at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1996)
at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.hover(RascalTextDocumentService.java:220)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65)
at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120)
at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261)
at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190)
at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194)
at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94)
at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.lambda$7(RascalTextDocumentService.java:220)
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:616)
... 19 more

terminal does not start anymore

The terminal process "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java '-cp', 
'/Users/jurgenv/git/rascal-vscode/rascal-vscode-extension/dist/rascal-lsp.jar', '-Drascal.useSystemBrowser=false', 
'org.rascalmpl.shell.RascalShell'" terminated with exit code: 1.

this happens both in deploy mode and in !deploy mode

Can't create/edit Rascal file in VSCode

As soon as I try to edit a new empty file with the Rascal type (created via File -> New file, and via "Select a language" set to Rascal) I get a lengthy traceback in the output window. This is with:

VSCode Version: 1.58.0
Commit: 2d23c42a936db1c7b3b06f918cde29561cc47cd6
Date: 2021-07-08T06:54:17.694Z
Electron: 12.0.13
Chrome: 89.0.4389.128
Node.js: 14.16.0
V8: 8.9.255.25-electron.0
OS: Darwin x64 20.5.0

2021-07-12 13:11:14,566 main DEBUG null 1.0.0-SNAPSHOT initializing configuration org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration@4e7dc304
2021-07-12 13:11:14,579 main DEBUG Installed 1 script engine
2021-07-12 13:11:14,652 main DEBUG Attempting to use org.apache.logging.log4j.jul.CoreLoggerAdapter
2021-07-12 13:11:14,654 main INFO Registered Log4j as the java.util.logging.LogManager.
2021-07-12 13:11:15,089 main DEBUG Oracle Nashorn version: 1.8.0_292, language: ECMAScript, threading: Not Thread Safe, compile: true, names: [nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript], factory class: jdk.nashorn.api.scripting.NashornScriptEngineFactory
2021-07-12 13:11:15,089 main DEBUG PluginManager 'Core' found 122 plugins
2021-07-12 13:11:15,090 main DEBUG PluginManager 'Level' found 0 plugins
2021-07-12 13:11:15,097 main DEBUG PluginManager 'Lookup' found 16 plugins
2021-07-12 13:11:15,099 main DEBUG Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef].
2021-07-12 13:11:15,125 main DEBUG PluginManager 'TypeConverter' found 26 plugins
2021-07-12 13:11:15,137 main DEBUG createAppenderRef(ref="Console", level="null", Filter=null)
2021-07-12 13:11:15,138 main DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger].
2021-07-12 13:11:15,145 main DEBUG createLogger(additivity="null", level="DEBUG", includeLocation="null", ={Console}, ={}, Configuration(DefaultLogger), Filter=null)
2021-07-12 13:11:15,148 main DEBUG Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin].
2021-07-12 13:11:15,151 main DEBUG createLoggers(={root})
2021-07-12 13:11:15,151 main DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
2021-07-12 13:11:15,189 main DEBUG PatternLayout$Builder(pattern="%d [%t] %p - %c %m%n", PatternSelector=null, Configuration(DefaultLogger), Replace=null, charset="null", alwaysWriteExceptions="null", disableAnsi="null", noConsoleNoAnsi="null", header="null", footer="null")
2021-07-12 13:11:15,189 main DEBUG PluginManager 'Converter' found 44 plugins
2021-07-12 13:11:15,249 main DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.ConsoleAppender].
2021-07-12 13:11:15,262 main DEBUG ConsoleAppender$Builder(target="SYSTEM_ERR", follow="null", direct="null", bufferedIo="null", bufferSize="null", immediateFlush="null", ignoreExceptions="null", PatternLayout(%d [%t] %p - %c %m%n), name="Console", Configuration(DefaultLogger), Filter=null, ={})
2021-07-12 13:11:15,270 main DEBUG Starting OutputStreamManager SYSTEM_ERR.false.false
2021-07-12 13:11:15,270 main DEBUG Building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin].
2021-07-12 13:11:15,271 main DEBUG createAppenders(={Console})
2021-07-12 13:11:15,271 main DEBUG Configuration org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration@4e7dc304 initialized
2021-07-12 13:11:15,283 main DEBUG Starting configuration org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration@4e7dc304
2021-07-12 13:11:15,284 main DEBUG Started configuration org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration@4e7dc304 OK.
2021-07-12 13:11:15,286 main DEBUG Shutting down OutputStreamManager SYSTEM_OUT.false.false-1
2021-07-12 13:11:15,287 main DEBUG OutputStream closed
2021-07-12 13:11:15,289 main DEBUG Shut down OutputStreamManager SYSTEM_OUT.false.false-1, all resources released: true
2021-07-12 13:11:15,290 main DEBUG Appender DefaultConsole-1 stopped with status true
2021-07-12 13:11:15,290 main DEBUG Stopped org.apache.logging.log4j.core.config.DefaultConfiguration@1055e4af OK
2021-07-12 13:11:15,369 main DEBUG Registering MBean org.apache.logging.log4j2:type=7852e922
2021-07-12 13:11:15,376 main DEBUG Registering MBean org.apache.logging.log4j2:type=7852e922,component=StatusLogger
2021-07-12 13:11:15,378 main DEBUG Registering MBean org.apache.logging.log4j2:type=7852e922,component=ContextSelector
2021-07-12 13:11:15,379 main DEBUG Registering MBean org.apache.logging.log4j2:type=7852e922,component=Loggers,name=
2021-07-12 13:11:15,379 main DEBUG Registering MBean org.apache.logging.log4j2:type=7852e922,component=Appenders,name=Console
2021-07-12 13:11:15,380 main DEBUG org.apache.logging.log4j.core.util.SystemClock does not support precise timestamps.
2021-07-12 13:11:15,381 main DEBUG Reconfiguration complete for context[name=7852e922] at URI NULL_SOURCE (org.apache.logging.log4j.core.LoggerContext@43738a82) with optional ClassLoader: null
2021-07-12 13:11:15,381 main DEBUG Shutdown hook enabled. Registering a new one.
2021-07-12 13:11:15,382 main DEBUG LoggerContext[name=7852e922, org.apache.logging.log4j.core.LoggerContext@43738a82] started OK.
2021-07-12 13:11:15,395 [main] INFO - org.rascalmpl.vscode.lsp.BaseLanguageServer Starting Rascal Language Server: 1.0.0-SNAPSHOT at ${maven.build.timestamp}
INFO: detected |lib://rascal-lsp| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/rascal-lsp.jar!/|
INFO: detected |lib://rascal| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/rascal.jar!/|
INFO: detected |lib://rascal-core| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/rascal-core.jar!/|
INFO: detected |lib://typepal| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/typepal.jar!/|
INFO: resolved |lib://typepal| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/typepal.jar!/|
INFO: resolved |lib://typepal| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/typepal.jar!/|
INFO: resolved |lib://typepal| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/typepal.jar!/|
INFO: resolved |lib://rascal-core| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/rascal-core.jar!/|
INFO: resolved |lib://rascal-core| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/rascal-core.jar!/|
INFO: resolved |lib://rascal-lsp| at |jar+file:///Users/fniessink/.vscode/extensions/usethesource.rascalmpl-0.0.3/assets/jars/rascal-lsp.jar!/|
2021-07-12 13:11:16,052 [pool-3-thread-1] INFO - org.rascalmpl.vscode.lsp.BaseLanguageServer.ActualLanguageServer LSP connection started
2021-07-12 13:11:16,090 [pool-3-thread-1] DEBUG - org.rascalmpl.vscode.lsp.BaseLanguageServer.ActualLanguageServer Initialized LSP connection with capabilities: InitializeResult [
  capabilities = ServerCapabilities [
    textDocumentSync = Either [
      left = Full
      right = null
    ]
    hoverProvider = Either [
      left = true
      right = null
    ]
    completionProvider = null
    signatureHelpProvider = null
    definitionProvider = Either [
      left = true
      right = null
    ]
    typeDefinitionProvider = null
    implementationProvider = null
    referencesProvider = null
    documentHighlightProvider = null
    documentSymbolProvider = Either [
      left = true
      right = null
    ]
    workspaceSymbolProvider = null
    codeActionProvider = null
    codeLensProvider = CodeLensOptions [
      resolveProvider = false
      workDoneProgress = null
    ]
    documentFormattingProvider = null
    documentRangeFormattingProvider = null
    documentOnTypeFormattingProvider = null
    renameProvider = null
    documentLinkProvider = null
    colorProvider = null
    foldingRangeProvider = null
    declarationProvider = null
    executeCommandProvider = null
    workspace = null
    typeHierarchyProvider = null
    callHierarchyProvider = null
    selectionRangeProvider = null
    linkedEditingRangeProvider = null
    semanticTokensProvider = SemanticTokensWithRegistrationOptions [
      legend = SemanticTokensLegend [
        tokenTypes = ArrayList (
          "entity.name",
          "entity.other.inherited-class",
          "entity.name.section",
          "entity.name.tag",
          "entity.other.attribute-name",
          "variable",
          "variable.language",
          "variable.parameter",
          "variable.function",
          "constant",
          "constant.numeric",
          "constant.language",
          "constant.character.escape",
          "storage.type",
          "storage.modifier",
          "support",
          "keyword",
          "keyword.control",
          "keyword.operator",
          "keyword.declaration",
          "string",
          "comment",
          "invalid",
          "invalid.deprecated",
          "comment.block.documentation",
          "comment.block",
          "comment.single",
          "comment",
          "constant.character.escape",
          "constant.language",
          "constant.numeric.complex.imaginary",
          "constant.numeric.complex.real",
          "constant.numeric.complex",
          "constant.numeric.float.binary",
          "constant.numeric.float.decimal",
          "constant.numeric.float.hexadecimal",
          "constant.numeric.float.octal",
          "constant.numeric.float.other",
          "constant.numeric.float",
          "constant.numeric.integer.binary",
          "constant.numeric.integer.decimal",
          "constant.numeric.integer.hexadecimal",
          "constant.numeric.integer.octal",
          "constant.numeric.integer.other",
          "constant.numeric.integer",
          "constant.numeric",
          "constant.other.placeholder",
          "constant.other",
          "constant",
          "entity.name.class.forward-decl",
          "entity.name.class",
          "entity.name.constant",
          "entity.name.enum",
          "entity.name.function.constructor",
          "entity.name.function.destructor",
          "entity.name.function",
          "entity.name.impl",
          "entity.name.interface",
          "entity.name.label",
          "entity.name.namespace",
          "entity.name.section",
          "entity.name.struct",
          "entity.name.tag",
          "entity.name.trait",
          "entity.name.type",
          "entity.name.union",
          "entity.name",
          "entity.other.attribute-name",
          "entity.other.inherited-class",
          "entity",
          "invalid.deprecated",
          "invalid.illegal",
          "invalid",
          "keyword.control.conditional",
          "keyword.control.import",
          "keyword.control",
          "keyword.declaration.class",
          "keyword.declaration.enum",
          "keyword.declaration.function",
          "keyword.declaration.impl",
          "keyword.declaration.interface",
          "keyword.declaration.struct",
          "keyword.declaration.trait",
          "keyword.declaration.type",
          "keyword.declaration.union",
          "keyword.declaration",
          "keyword.operator.arithmetic",
          "keyword.operator.assignment",
          "keyword.operator.bitwise",
          "keyword.operator.logical",
          "keyword.operator.word",
          "keyword.operator",
          "keyword.other",
          "keyword",
          "markup.bold",
          "markup.deleted",
          "markup.heading",
          "markup.inserted",
          "markup.italic",
          "markup.list.numbered",
          "markup.list.unnumbered",
          "markup.other",
          "markup.quote",
          "markup.raw.block",
          "markup.raw.inline",
          "markup.underline.link",
          "markup.underline",
          "markup",
          "meta.annotation.identifier",
          "meta.annotation.parameters",
          "meta.annotation",
          "meta.block",
          "meta.braces",
          "meta.brackets",
          "meta.class",
          "meta.enum",
          "meta.function-call",
          "meta.function.parameters",
          "meta.function.return-type",
          "meta.function",
          "meta.group",
          "meta.impl",
          "meta.interface",
          "meta.interpolation",
          "meta.namespace",
          "meta.paragraph",
          "meta.parens",
          "meta.path",
          "meta.preprocessor",
          "meta.string",
          "meta.struct",
          "meta.tag",
          "meta.toc-list",
          "meta.trait",
          "meta.type",
          "meta.union",
          "meta",
          "punctuation.accessor",
          "punctuation.definition.annotation",
          "punctuation.definition.comment",
          "punctuation.definition.keyword",
          "punctuation.definition.string.begin",
          "punctuation.definition.string.end",
          "punctuation.definition.variable",
          "punctuation.section.block.begin",
          "punctuation.section.block.end",
          "punctuation.section.braces.begin",
          "punctuation.section.braces.end",
          "punctuation.section.brackets.begin",
          "punctuation.section.brackets.end",
          "punctuation.section.group.begin",
          "punctuation.section.group.end",
          "punctuation.section.interpolation.begin",
          "punctuation.section.interpolation.end",
          "punctuation.section.parens.begin",
          "punctuation.section.parens.end",
          "punctuation.separator.continuation",
          "punctuation.separator",
          "punctuation.terminator",
          "source",
          "storage.modifier",
          "storage.type.class",
          "storage.type.enum",
          "storage.type.function",
          "storage.type.impl",
          "storage.type.interface",
          "storage.type.struct",
          "storage.type.trait",
          "storage.type.union",
          "storage.type",
          "storage.type",
          "string.quoted.double",
          "string.quoted.other",
          "string.quoted.single",
          "string.quoted.triple",
          "string.regexp",
          "string.unquoted",
          "string",
          "support.class",
          "support.constant",
          "support.function",
          "support.module",
          "support.type",
          "text.html",
          "text.xml",
          "text",
          "variable.annotation",
          "variable.function",
          "variable.language",
          "variable.other.constant",
          "variable.other.member",
          "variable.other.readwrite",
          "variable.other",
          "variable.parameter"
        )
        tokenModifiers = EmptyList ()
      ]
      range = null
      full = Either [
        left = true
        right = null
      ]
      documentSelector = null
      id = null
      workDoneProgress = null
    ]
    monikerProvider = null
    experimental = null
  ]
  serverInfo = null
]
2021-07-12 13:11:16,181 [pool-3-thread-1] DEBUG - org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService Open file: TextDocumentItem [
  uri = "untitled:Untitled-1"
  languageId = "rascalmpl"
  version = 1
  text = ""
]
2021-07-12 13:11:16,204 [pool-3-thread-1] WARN - org.eclipse.lsp4j.jsonrpc.RemoteEndpoint Notification threw an exception: {
  "jsonrpc": "2.0",
  "method": "textDocument/didOpen",
  "params": {
    "textDocument": {
      "uri": "untitled:Untitled-1",
      "languageId": "rascalmpl",
      "version": 1,
      "text": ""
    }
  }
}
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:67) ~[rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.notify(GenericEndpoint.java:152) ~[rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleNotification(RemoteEndpoint.java:220) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:187) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113) [rascal-lsp.jar:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_292]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_292]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_292]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_292]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_292]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_292]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_292]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_292]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65) ~[rascal-lsp.jar:?]
	... 11 more
Caused by: java.lang.UnsupportedOperationException: Opaque URI schemes are not supported; the scheme-specific part must start with a / character.
	at io.usethesource.vallang.impl.primitive.SourceLocationValues.newSourceLocation(SourceLocationValues.java:111) ~[rascal.jar:?]
	at io.usethesource.vallang.impl.primitive.AbstractPrimitiveValueFactory.sourceLocation(AbstractPrimitiveValueFactory.java:222) ~[rascal.jar:?]
	at io.usethesource.vallang.impl.fields.AbstractValueFactoryAdapter.sourceLocation(AbstractValueFactoryAdapter.java:166) ~[rascal.jar:?]
	at org.rascalmpl.uri.URIUtil.createFromURI(URIUtil.java:416) ~[rascal.jar:?]
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:51) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:42) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.open(RascalTextDocumentService.java:253) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.didOpen(RascalTextDocumentService.java:152) ~[rascal-lsp.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_292]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_292]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_292]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_292]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65) ~[rascal-lsp.jar:?]
	... 11 more
2021-07-12 13:11:16,429 [pool-3-thread-1] ERROR - org.eclipse.lsp4j.jsonrpc.RemoteEndpoint Internal error: java.lang.reflect.InvocationTargetException
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:67) ~[rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120) ~[rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113) [rascal-lsp.jar:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_292]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_292]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_292]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_292]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_292]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_292]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_292]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_292]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65) ~[rascal-lsp.jar:?]
	... 11 more
Caused by: java.lang.UnsupportedOperationException: Opaque URI schemes are not supported; the scheme-specific part must start with a / character.
	at io.usethesource.vallang.impl.primitive.SourceLocationValues.newSourceLocation(SourceLocationValues.java:111) ~[rascal.jar:?]
	at io.usethesource.vallang.impl.primitive.AbstractPrimitiveValueFactory.sourceLocation(AbstractPrimitiveValueFactory.java:222) ~[rascal.jar:?]
	at io.usethesource.vallang.impl.fields.AbstractValueFactoryAdapter.sourceLocation(AbstractValueFactoryAdapter.java:166) ~[rascal.jar:?]
	at org.rascalmpl.uri.URIUtil.createFromURI(URIUtil.java:416) ~[rascal.jar:?]
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:51) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:46) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.getFile(RascalTextDocumentService.java:258) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.codeLens(RascalTextDocumentService.java:311) ~[rascal-lsp.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_292]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_292]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_292]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_292]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65) ~[rascal-lsp.jar:?]
	... 11 more
[Error - 1:11:16 PM] Request textDocument/codeLens failed.
  Message: Internal error.
  Code: -32603 
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:67)
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94)
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65)
	... 11 more
Caused by: java.lang.UnsupportedOperationException: Opaque URI schemes are not supported; the scheme-specific part must start with a / character.
	at io.usethesource.vallang.impl.primitive.SourceLocationValues.newSourceLocation(SourceLocationValues.java:111)
	at io.usethesource.vallang.impl.primitive.AbstractPrimitiveValueFactory.sourceLocation(AbstractPrimitiveValueFactory.java:222)
	at io.usethesource.vallang.impl.fields.AbstractValueFactoryAdapter.sourceLocation(AbstractValueFactoryAdapter.java:166)
	at org.rascalmpl.uri.URIUtil.createFromURI(URIUtil.java:416)
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:51)
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:46)
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.getFile(RascalTextDocumentService.java:258)
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.codeLens(RascalTextDocumentService.java:311)
	... 16 more

2021-07-12 13:11:16,517 [pool-3-thread-1] DEBUG - org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService semanticTokensFull: TextDocumentIdentifier [
  uri = "untitled:Untitled-1"
]
2021-07-12 13:11:16,518 [pool-3-thread-1] ERROR - org.eclipse.lsp4j.jsonrpc.RemoteEndpoint Internal error: java.lang.reflect.InvocationTargetException
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:67) ~[rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120) ~[rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113) [rascal-lsp.jar:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_292]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_292]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_292]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_292]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_292]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_292]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_292]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_292]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65) ~[rascal-lsp.jar:?]
	... 11 more
Caused by: java.lang.UnsupportedOperationException: Opaque URI schemes are not supported; the scheme-specific part must start with a / character.
	at io.usethesource.vallang.impl.primitive.SourceLocationValues.newSourceLocation(SourceLocationValues.java:111) ~[rascal.jar:?]
	at io.usethesource.vallang.impl.primitive.AbstractPrimitiveValueFactory.sourceLocation(AbstractPrimitiveValueFactory.java:222) ~[rascal.jar:?]
	at io.usethesource.vallang.impl.fields.AbstractValueFactoryAdapter.sourceLocation(AbstractValueFactoryAdapter.java:166) ~[rascal.jar:?]
	at org.rascalmpl.uri.URIUtil.createFromURI(URIUtil.java:416) ~[rascal.jar:?]
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:51) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:46) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.getFile(RascalTextDocumentService.java:258) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.getSemanticTokens(RascalTextDocumentService.java:274) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.semanticTokensFull(RascalTextDocumentService.java:288) ~[rascal-lsp.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_292]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_292]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_292]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_292]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65) ~[rascal-lsp.jar:?]
	... 11 more
[Error - 1:11:16 PM] Request textDocument/semanticTokens/full failed.
  Message: Internal error.
  Code: -32603 
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:67)
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94)
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65)
	... 11 more
Caused by: java.lang.UnsupportedOperationException: Opaque URI schemes are not supported; the scheme-specific part must start with a / character.
	at io.usethesource.vallang.impl.primitive.SourceLocationValues.newSourceLocation(SourceLocationValues.java:111)
	at io.usethesource.vallang.impl.primitive.AbstractPrimitiveValueFactory.sourceLocation(AbstractPrimitiveValueFactory.java:222)
	at io.usethesource.vallang.impl.fields.AbstractValueFactoryAdapter.sourceLocation(AbstractValueFactoryAdapter.java:166)
	at org.rascalmpl.uri.URIUtil.createFromURI(URIUtil.java:416)
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:51)
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:46)
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.getFile(RascalTextDocumentService.java:258)
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.getSemanticTokens(RascalTextDocumentService.java:274)
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.semanticTokensFull(RascalTextDocumentService.java:288)
	... 16 more

2021-07-12 13:11:22,526 [pool-3-thread-1] ERROR - org.eclipse.lsp4j.jsonrpc.RemoteEndpoint Internal error: java.lang.reflect.InvocationTargetException
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:67) ~[rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120) ~[rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94) [rascal-lsp.jar:?]
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113) [rascal-lsp.jar:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_292]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_292]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_292]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_292]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_292]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_292]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_292]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_292]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65) ~[rascal-lsp.jar:?]
	... 11 more
Caused by: java.lang.UnsupportedOperationException: Opaque URI schemes are not supported; the scheme-specific part must start with a / character.
	at io.usethesource.vallang.impl.primitive.SourceLocationValues.newSourceLocation(SourceLocationValues.java:111) ~[rascal.jar:?]
	at io.usethesource.vallang.impl.primitive.AbstractPrimitiveValueFactory.sourceLocation(AbstractPrimitiveValueFactory.java:222) ~[rascal.jar:?]
	at io.usethesource.vallang.impl.fields.AbstractValueFactoryAdapter.sourceLocation(AbstractValueFactoryAdapter.java:166) ~[rascal.jar:?]
	at org.rascalmpl.uri.URIUtil.createFromURI(URIUtil.java:416) ~[rascal.jar:?]
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:51) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:46) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.getFile(RascalTextDocumentService.java:258) ~[rascal-lsp.jar:?]
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.codeLens(RascalTextDocumentService.java:311) ~[rascal-lsp.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_292]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_292]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_292]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_292]
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65) ~[rascal-lsp.jar:?]
	... 11 more
[Error - 1:11:22 PM] Request textDocument/codeLens failed.
  Message: Internal error.
  Code: -32603 
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:67)
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94)
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65)
	... 11 more
Caused by: java.lang.UnsupportedOperationException: Opaque URI schemes are not supported; the scheme-specific part must start with a / character.
	at io.usethesource.vallang.impl.primitive.SourceLocationValues.newSourceLocation(SourceLocationValues.java:111)
	at io.usethesource.vallang.impl.primitive.AbstractPrimitiveValueFactory.sourceLocation(AbstractPrimitiveValueFactory.java:222)
	at io.usethesource.vallang.impl.fields.AbstractValueFactoryAdapter.sourceLocation(AbstractValueFactoryAdapter.java:166)
	at org.rascalmpl.uri.URIUtil.createFromURI(URIUtil.java:416)
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:51)
	at org.rascalmpl.vscode.lsp.util.locations.Locations.toLoc(Locations.java:46)
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.getFile(RascalTextDocumentService.java:258)
	at org.rascalmpl.vscode.lsp.rascal.RascalTextDocumentService.codeLens(RascalTextDocumentService.java:311)
	... 16 more

definition throws NPE's

[Error - 10:14:52 AM] Request textDocument/definition failed.
  Message: Internal error.
  Code: -32603 
java.util.concurrent.CompletionException: java.lang.NullPointerException
	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.

NPE in registerLanguage

rascal>testPicoLanguageContribution()
|lib://rascal-lsp/util/LanguageServer.rsc|(4722,106,<133,0>,<134,42>): Java("NullPointerException","")
        at org.rascalmpl.vscode.lsp.parametric.RascalInterface.registerLanguage(|unknown:///RascalInterface.java|(0,0,<46,0>,<46,0>))
        at sun.reflect.NativeMethodAccessorImpl.invoke0(|unknown:///NativeMethodAccessorImpl.java|(0,0,<0,0>,<0,0>))
        at registerLanguage(|lib://rascal-lsp/util/TestIDE.rsc|(2536,25,<66,12>,<66,37>))
        at $shell$(|prompt:///|(0,21,<1,0>,<1,21>)ok

NPEs while typing

java.util.concurrent.CompletionException: java.lang.NullPointerException
	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
	at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:604)
	at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:614)
	at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1983)
	at org.rascalmpl.vscode.lsp.RascalTextDocumentService.definition(RascalTextDocumentService.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65)
	at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94)
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
	at org.rascalmpl.vscode.lsp.RascalTextDocumentService.lambda$definition$1(RascalTextDocumentService.java:179)
	at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602)

progress visual while computing summaries

both the Rascal and parametric LSP lack visual confirmation that "something is going on", in particular when waiting for links to resolve or when a parser is generated.

Let's:

  • add support for interacting with the Progress feature from LSP directly from Rascal, using util::Monitor
  • add progress bar interactions with informative labels, around possibly long running language services (such as parser generation while highlighting and summary computation while resolving a reference)

infinite recursion while testing pico language in util::TestIDE

registering the language triggers the following StackOverflow():

java.lang.StackOverflowError
	at io.usethesource.vallang.type.Type.intersectsWithExternal(Type.java:706)
	at io.usethesource.vallang.type.ExternalType.intersects(ExternalType.java:62)
	at io.usethesource.vallang.type.Type.intersectsWithExternal(Type.java:706)
	at io.usethesource.vallang.type.ExternalType.intersects(ExternalType.java:6
	...

Make rascal-core typechecker return summary to avoid race

Currently, summaries are cleared when a file is saved.

But you can read summaries while the typechecker is still running, to avoid this race, the check function of rascal core should also return the summary of the module it just checked. In that way we can combine that future as a dependency on the check future.

@PaulKlint indicated it would be relatively easy to add.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.