[ 
https://issues.apache.org/jira/browse/GROOVY-12448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18126107#comment-18126107
 ] 

ASF GitHub Bot commented on GROOVY-12448:
-----------------------------------------

testlens-app[bot] commented on PR #2976:
URL: https://github.com/apache/groovy/pull/2976#issuecomment-6112843436

   ## ✅ All tests passed ✅
   
   🏷️ Commit: d7323793e7519744c82c713ae3fd2e0c5251f0a9
   ▶️ Tests:  119984 executed
   ⚪️ Checks: 32/32 completed
   
   ---
   _Learn more about TestLens at 
[testlens.app/docs](https://testlens.app/docs/features/pr-comment/)._
   




> Wire Groovy Console and groovysh to the in-process language engine
> ------------------------------------------------------------------
>
>                 Key: GROOVY-12448
>                 URL: https://issues.apache.org/jira/browse/GROOVY-12448
>             Project: Groovy
>          Issue Type: Improvement
>            Reporter: Daniel Sun
>            Priority: Major
>
> h2. Context
> GROOVY-12411 added {{groovy-lsp}} and an in-process 
> {{{}GroovyLanguageEngine{}}}. That work left Groovy Console and groovysh 
> unconnected. This change attaches those two hosts to the same engine so an 
> unsaved buffer can be queried for diagnostics, completion, hover, and 
> signatures without generating class files.
> Scripts still run through {{GroovyShell}} in the console and {{GroovyEngine}} 
> in groovysh.
> h2. User-visible behavior
>  * *Groovy Console.* The editor compiles the unsaved buffer in the background 
> and highlights compiler diagnostics. {{Ctrl+Space}} offers compiler-backed 
> completions. Adding a jar or directory to the classpath is picked up on the 
> next compile.
>  * *groovysh.* Tab completion and tail-tip descriptions consult the compiler 
> for the current buffer (imports, types, methods, and binding variables). 
> Syntax tail-tips report diagnostics and do not evaluate the line. {{/grab}} 
> remains the way to add Maven artifacts; the next completion or tail-tip 
> notices the loader change.
> h2. Design
>  * {{groovy-console}} and {{groovy-groovysh}} take an {{implementation}} 
> dependency on {{{}groovy-lsp{}}}.
>  * Adapters stay in the host trees: {{ConsoleLanguageHost}} (buffer URI 
> {{{}groovy-buffer:console{}}}) and {{GroovyshLanguageSession}} (buffer URI 
> {{{}groovy-buffer:repl{}}}). The engine does not assign those names. Both 
> adapters are {{@Internal}} and are not an embedding API.
>  * Queries return JDK records. Host source does not import LSP4J. Feature 
> services inside {{groovy-lsp}} still use LSP4J types, so LSP4J remains a 
> runtime dependency of these hosts.
>  * Positions are 0-based UTF-16.
>  * The compile fingerprint includes {{URLClassLoader}} URLs, so an in-place 
> {{addURL}} (console classpath menu, groovysh {{{}/grab{}}}) is visible on the 
> next compile.
>  * groovysh composes {{{}GroovyEngine.getBuffer(){}}}, declaration-only 
> binding types for names the buffer does not already introduce, and the 
> current line. Those names come from the compiled AST 
> ({{{}GroovyLanguageEngine.declaredNames{}}}).
>  * groovysh {{SYNTAX}} tail-tips return compiler diagnostics and do not fall 
> through to Inspector {{{}checkSyntax{}}}, which evaluates. {{METHOD}} 
> signatures use the full {{CmdLine.line}} so an unclosed opening parenthesis 
> is visible. Inspector is used only when the compiler has no signatures.
> h2. Out of scope
>  * Driving AstBrowser from an LSP snapshot.
>  * A public embedding API for the adapters.
>  * Splitting a protocol-free engine module out of {{{}groovy-lsp{}}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to