Commit Graph

252 Commits

Author SHA1 Message Date
Dmitry Bushev
ded8d22f43
refactor: fix typo interpeter (#718) 2020-05-07 07:56:04 +03:00
Ara Adkins
ea23cf6fbc
Add sections, underscore args and ignores (#716) 2020-05-06 19:00:03 +01:00
Dmitry Bushev
55486e50d3
Review of the Language Server Spec (#712)
* fix: file/event

* fix: capability text/canEdit

* fix: capability file/receivesTreeUpdates

* fix: capability executionContext/canModify

* fix: capability executionContext/receivesUpdates

* doc: file open&close wording

* doc: add SHA3-224

* misc: cleanup

* doc: rename project picker to manager

* update: remove DirectoryTruncated node

* doc: versioning

* test: increase PingHandler timeout

* Revert "test: increase PingHandler timeout"

This reverts commit b225a885c24d0d5b8dfbc02a220107653b5deae0.

Co-authored-by: Ara Adkins <iamrecursion@users.noreply.github.com>
2020-05-06 17:58:18 +03:00
Łukasz Olczak
29190f8339
Truffle Integration for the Binary Protocol (#711) 2020-05-06 14:23:00 +02:00
Dmitry Bushev
7c7bd3e6ae
Add PoC of Caching Injection to IdExecutionInstrument (#709)
* add: impl setOverride

* rem: ValueOverrideInstrument

* debug: clean CI cache

* Revert "debug: clean CI cache"

This reverts commit ad08edd7456a74f210e5544fb5e6e1723cc649bb.

* upd: remove binding from IdExecutionListener

* update: val instrument

* remove: global value from instrument

* cleanup

* Revert "cleanup"

This reverts commit 329822d7d853d808e0869517992ea810f2d1784d.

* Revert "remove: global value from instrument"

This reverts commit 4cff1abe84eade5ae8c4e126c2324d6e942e0be8.

* add: cache to Handler
2020-05-05 18:34:21 +03:00
Marcin Kostrzewa
1c8600e53f
Fix polymorphic frame slot writes (#710) 2020-05-05 14:28:58 +02:00
Ara Adkins
a68c59344b
Fix miscellaneous bugs, refactoring (#705) 2020-05-01 21:25:48 +01:00
Ara Adkins
50e307e6ee
Bump scalac version to 2.13.2 (#703) 2020-04-30 20:30:55 +01:00
Ara Adkins
90d85fc810
Implement lambda consolidation (#701) 2020-04-30 15:58:45 +01:00
Dmitry Bushev
7e48e82dbc
Send Information About Function Calls (#696)
* Add Module reference to ModuleScope

* add: function call info

* add: impl getQualifiedName

* misc: cleanup

* add qualifiedName field

* upd: extend ClosureRootNode constructor

* misc: simplify
2020-04-29 18:56:03 +03:00
Marcin Kostrzewa
1254920482
fix double-eval of this arguments (#700) 2020-04-29 16:59:07 +02:00
Marcin Kostrzewa
d03a5a9dde
Stopgap JSON serialization for Enso objects (#698) 2020-04-29 11:23:46 +02:00
Łukasz Olczak
f7e9f9fa85
Implementation of The Visualisation Binary Protocol - RPC-side (#688) 2020-04-28 17:30:15 +02:00
Marcin Kostrzewa
4ba26a3034
Compile Error Handling (#687) 2020-04-28 14:03:33 +02:00
Ara Adkins
92d8393495
Remove non-working caches from CI (#674) 2020-04-24 17:33:27 +01:00
Ara Adkins
9013407091
Implement dataflow analysis for Enso (#673) 2020-04-23 16:25:39 +01:00
Dmitry Bushev
9fcef233a8
Add: executionContext/recompute command (#669)
* add: executionContext/recompute

* doc: review comments
2020-04-23 15:13:02 +03:00
Łukasz Olczak
413962df92
Implementation of The Visualisation Binary Protocol (#665) 2020-04-23 12:42:59 +02:00
Dmitry Bushev
a10e37342b
Execution Context Integration with Text Change Events (#668)
* add: notifications to CollaborativeBuffer

* impl: trigger re-execution on file notifications

* add: file notifications test

* doc: update

* update: don't re-execute on file open

* fix: typo

Co-authored-by: Ara Adkins <iamrecursion@users.noreply.github.com>
2020-04-22 21:11:30 +03:00
Marcin Kostrzewa
9020008bc2
String concat and string conversion functions (#667) 2020-04-21 16:27:05 +02:00
Marcin Kostrzewa
e2d901fb68
Module file operations through execution server (#660) 2020-04-20 14:33:51 +02:00
Dmitry Bushev
75f25b66db
Integrate the LS with context management (#657) 2020-04-17 17:31:12 +01:00
Dmitry Bushev
86fdc07ce0
Run scalafmt after updating its version (#661) 2020-04-17 17:05:56 +01:00
Łukasz Olczak
50e6072b41
Flatbuffers integration (#655) 2020-04-17 15:47:58 +02:00
Ara Adkins
16b24d58e7
Implement demand analysis (#658) 2020-04-17 12:12:28 +01:00
Łukasz Olczak
d296ac1ef8
Implementation of session initialisation (#649) 2020-04-15 12:56:11 +02:00
Ara Adkins
8a99415a30
Fix warnings, docs, and repo structure (#651) 2020-04-14 17:00:51 +01:00
Dmitry Bushev
4e73aba706
Add executionContext/expressionValuesComputed notifincation (#648)
* WIP ExpressionValueUpdate

* Add client reference

* doc: update

* refactor: ExpressionValuesComputed

* refactor: conversion functions

* impl: Config findRelativePath

Co-authored-by: Ara Adkins <iamrecursion@users.noreply.github.com>
2020-04-14 16:33:24 +03:00
Ara Adkins
875190d7a9
Remove some compilation warnings 2020-04-14 11:56:13 +01:00
Łukasz Olczak
e966392cc8
Implementation of the Language Server Supervisor Process (#643) 2020-04-10 12:11:15 +02:00
Dmitry Bushev
76faaaabcd
Add executionContext push & pop commands (#637)
* add: executionContext/push

* add: executionContext/pop

* add: stack to engine handler

* misc: cleanup

* misc: update error handling

* misc: cleanup
2020-04-09 16:29:14 +03:00
Marcin Kostrzewa
23f7797632
Language Execution Service (#642)
* Execution service

* fix language server

* cr feedbakz

Co-authored-by: Ara Adkins <iamrecursion@users.noreply.github.com>
2020-04-09 15:02:12 +03:00
Dmitry Bushev
dc58fc6b2a
Add executionContext/destroy (#634)
* add: executionContext/destroy

* remove: ExecutionProtocol

* refactor: UnhandledLogging

* add: custom errors

* refactor: runtime errors
2020-04-06 14:15:50 +03:00
Dmitry Bushev
a0d68eca37
Add executionContext/create command (#632)
* WIP Context

* test: executionContext/create

* misc: scalafmt

* add: requestId

* doc: update

* update: routing

* misc: cleanup

* doc: update

* fix: runtime

* fix: runtime tests

* add: message envelope

* refactor: remove ContextManager

* refactor: correlationId
2020-04-02 16:58:32 +03:00
Łukasz Olczak
5c616c2727
Implementation of project/open and project/close commands. (#631) 2020-03-31 15:51:05 +02:00
Dmitry Bushev
0ffce13894
Add file/event command (#626)
* WIP FileEventWatcher

* WIP Capabilities

* update: FileEvent

* test: FileEventRegistryTest

* update: cleanup resources

* doc: misc

* update: FileEventRegistry protocol

* refactor: FileEventRegistry

* misc: cleanup

* doc: fix scaladoc

* test: resolve real path

* refactor: FileEventWatcher

* refactor: FileEventManager

* fix: test path

* update: FileEventManager handle watcher errors

* add: respond with custom errors

* add: handle ClientDisconnected

* doc: update

* add: force release capability on errors

* refactor: FileEventManager

* add: enumeratum

* update: stop manager after error

* update: watch manager

* update: manager sends events to client

* refactor: file event actors

* refactor: rename registry to handler

* refactor: rename manager to PathWatcher

* refactor: effectful watcher start and stop

* refactor: rename FileEventWatcher to WatcherAdapter

* misc: cleanup

* impl: unhandled

* feat: cancel timeout timers
2020-03-31 15:23:23 +03:00
Marcin Kostrzewa
bf758ebc6d
Thread IDs through the compiler pipelines (#627) 2020-03-26 11:59:50 +01:00
Dmitry Bushev
47ad474790
Add file/info command (#614)
* feat: impl file/info

* doc: typo

* add: OffsetDateTime

* update: UTCDateTime JSON format

* update: remove UTCDateTime

* fix: review comments

Co-authored-by: Ara Adkins <iamrecursion@users.noreply.github.com>
2020-03-25 13:30:26 +03:00
Dmitry Bushev
f4d4b001aa
test: remove filemanager warmup (#624) 2020-03-25 13:12:41 +03:00
Ara Adkins
2c1d967dd6
Extract remaining analyses from codegen (#616) 2020-03-24 10:28:03 +00:00
Dmitry Bushev
6f8d3b73bb
test: wait for FileManager init (#617) 2020-03-23 21:37:11 +03:00
Ara Adkins
b6221e519a
Implement explicit alias analysis (#613) 2020-03-20 08:01:03 +00:00
Dmitry Bushev
1910498524
Add file/list filemanager command (#612)
* feat: impl file/list

* test: warmup zio executor
2020-03-19 18:40:23 +03:00
Marcin Kostrzewa
ed7c7c75f9
Execution context management (#611) 2020-03-19 12:29:11 +01:00
Dmitry Bushev
4864d2623f
Refactor FileManager file commands (#609)
* refactor: create Config.scala

* WIP FileSystemHandler

* doc: update FileSystem list

* add: zio FileSystem

* update: FileSystemHandler runAsync

* add: config timeouts

* rename FileSystemHandler to FileSystemManager

* add: ZioExec

* add: FileManager router

* fix: FileManager return FileWiteResult

* update: FileSystemApi interface

* refactor: FileSystem with Zio

* impl: FileManager

* impl: cleanup LanguageServer

* impl: ReadFileHandler

* impl: CreateFileHandler

* impl: DeleteFileHandler

* impl: CopyFileHandler

* impl: MoveFileHandler

* impl: ExistsFileHandler

* impl: TreeFileHandler

* fix: filemanager tests

* misc: cleanup

* fix: BufferRegistry tests

* doc: add misc

* doc: misc

* feat: add ZioExec parameter to FileManager

* feat: FileManager uses FileSystemApi interface

* feat: FileSystem has blocking semantics

* feat: FileManager props
2020-03-19 13:47:08 +03:00
Łukasz Olczak
2863498da3
Scaffold the Project Manager (#610) 2020-03-18 11:41:55 +01:00
Dmitry Bushev
b5010d65c7
Add file/tree message for language server (#585)
* feat: impl FileSystem tree

* impl: conversion to DirectoryTree

* refactor: rename Path RelativePath

* WIP path encoding

* feat: add SystemPath encoding

* misc: fetch master

* doc: update engine-services

* refactor: rename SystemPath

* doc: cleanup

* test: fix json ordering

* test: fix symlink target

* test: fix unclosed source

* test: fix windows

* misc: cleanup

* doc: typo

* feat: follow symlinks

* feat: detect symlink loops

* refactor: rename RelativePath to Path

* feat: extend FileSystmObject api

* doc: update engine-services

* feat: add path to Other file system object

* test: fix windows

* refactor: remove TreeSet

* feat: DirectoryTree files filter directories

* feat: add NotDirectory error

* refactor: readDirectoryEntry

* feat: SymlinkLoop contains target to the loop

* refactor: DirectoryTree conversion

* feat: tailrec tree algorithm

* misc: cleanup

* misc: remove redundant if branch

Co-authored-by: Łukasz Olczak <lukasz.jan.olczak@gmail.com>
2020-03-13 19:41:57 +03:00
Marcin Kostrzewa
4b3943ce9b
Create a server instrument for language server <> runtime communications (#602) 2020-03-12 18:32:21 +01:00
Łukasz Olczak
7a1b333f2c
'text/save' method (#601) 2020-03-12 16:27:47 +01:00
Josef
c2df4e7957
Store idmap with metadata in source file. (#586) 2020-03-11 21:13:23 +01:00
Łukasz Olczak
004f73c649
text/applyEdit method (#598) 2020-03-11 17:55:07 +01:00
Ara Adkins
ac5a9eb639
Add a --version flag to the cli (#584) 2020-03-09 13:44:40 +00:00
Dmitry Bushev
7b17e7e789
Add file/move message to language server (#574)
* feat: impl Ws MoveFile

* doc: update engine-services

* misc: run scalafmt

* test: add more

* fix: rebase

* test: add missing cases

* misc: run scalafmt

* test: update
2020-03-09 14:26:10 +03:00
Dmitry Bushev
22f505b6c4
Add file/exists message to language server (#579)
* feat: impl file/exists

* doc: update engine-services

* doc: wrap 80
2020-03-09 13:54:44 +03:00
Łukasz Olczak
31d5e6eb5b
text/closeFile method (#583) 2020-03-06 19:14:50 +01:00
Ara Adkins
23d33c4438
Desugar operators to functions (#581) 2020-03-06 15:23:39 +00:00
Łukasz Olczak
e5530045bf
text/openFile method (#575) 2020-03-06 15:17:46 +01:00
Rostyslav Zatserkovnyi
dfb4ec43ac
Update GraalVM to 20.0.0 (#576) 2020-03-06 13:40:29 +00:00
Dmitry Bushev
2275a97233
Add file/copy message to language server (#570)
* feat: impl file/copy command

* test: add Ws tests

* doc: update engine-services

* misc: run scalafmt

* test: exists

* test: typo

* fix: impl missing test cases
2020-03-05 19:18:20 +03:00
Dmitry Bushev
a712288aad
Add file/delete message (#568)
* impl: file/delete

* add: tests

* doc: update engine-services

* misc: remove irrelevant comment

* test: address review comments

* Revert "misc: remove irrelevant comment"

This reverts commit a89a5505db59407a6ce7a8e8ab8e274ec0ee8f3f.

* test: exists
2020-03-04 16:43:35 +03:00
Łukasz Olczak
8bf56f5e6d
Artefact Builds for the Language Server (#566) 2020-03-03 14:11:42 +01:00
Marcin Kostrzewa
da392ff26f
Split tests & select random port 2020-03-03 11:16:17 +01:00
Ara Adkins
fa845ee4c6
Convert the compiler pipeline to scala (#563) 2020-03-02 12:33:28 +00:00
Marcin Kostrzewa
5628752271
Rope data structure (#561) 2020-02-28 14:17:48 +01:00
Łukasz Olczak
0b22606fa1
File and directory creation for LS (#560) 2020-02-28 10:37:42 +00:00
Łukasz Olczak
fe471314ec
File Reads for the Language Server (#559)
File Reads for the Language Server
2020-02-26 18:03:14 +01:00
Łukasz Olczak
016602972f
File write feature. (#557)
Provides writing to a file capability. It writes a textual content to an arbitrary file.
2020-02-25 14:38:48 +01:00
Marcin Kostrzewa
d394888a5a
Capabilities system & canEdit capability (#555) 2020-02-24 11:23:08 +01:00
Marcin Kostrzewa
639c2aeceb
Json RPC improvements & basic server structure. (#522) 2020-02-21 12:35:14 +01:00
Ara Adkins
e8fcb445be
Clean up the stopgap IR (#521) 2020-02-19 14:41:17 +00:00
Ara Adkins
adf5fe7db2
Add more in-depth tests to core (#489) 2020-02-14 16:29:24 +00:00
Dmitry Bushev
8d8e95e14a
Update to scala 2.13.1 (#481) 2020-02-13 14:33:39 +00:00
Ara Adkins
9dee1911f8
Add smart constructors for the core nodes (#480) 2020-02-13 09:52:05 +00:00
Marcin Kostrzewa
a288ecaa5c
JSON RPC base actor (#482) 2020-02-12 17:41:20 +01:00
Ara Adkins
ba84ee7e6e
Implement the primitive core entities (#463) 2020-01-31 16:58:35 +00:00
Marcin Kostrzewa
a2703bb296
Language Server files interface (#462) 2020-01-29 16:17:36 +01:00
Dmytro Mitin
3412606e2a
Subset of LSP - Part 1 (#453)
* Rename language-server -> runner, add language-server, gateway

* Add entry point --lsp

* Add Gateway, LanguageServer

* Add stab for Initialize

* Add stubs for Initialize, Initialized

* Add GatewayTest

* fix PR

* increase timeout

* merge with master

* fix compilation after merge

* reformat with scalafmt

* Add TODOs

* Add doc for gateway

* Update CONTRIBUTING.md

* Refactor code for PR

* Add Request#response(..)

* Make Initialize, Initialized extractor objects

* Refactor for -> map

* Fix docs

* Remove DerivationConfig

* Make Request, Notification polymorphic

* Add Param.Array, Params.Array

* Replace Decoder#apply -> tryDecode

* Refactor code

* Add docs

* Refactor code

* Refactor code

* Refactor code

* Make gateway a pure actor

* Add client capabilities

* Add server capabilities

* Add docs for capabilities

* Add docs

* Add docs

* Fix Server.Config

* Update doc for Server

* Add requests, notifications and params

* Improve PR

* Rename Protocol -> JsonRpcController

* Add docs

* Add requests and notifications

* Fix Result

* Add requests and notifications

* Add WillSaveTextDocumentWaitUntil request params and result

* Add params

* Add tests for requests

* Add textDocumentSync.willSaveWaitUntil server capability

* Handle text id

* Fix Edit workspace client capability

* Clean up

* Add initialize, initialized, shutdown, exit

* Add docs

* Fix identation

* Fix identation

* Refactor code

* Add docs

* Improve PR

* Add tests

* Fix docs for RequestExtractor

* Fix docs
2020-01-27 13:23:32 +02:00
Ara Adkins
053df2ac2b
Upgrade the graph macros (#456) 2020-01-24 18:56:52 +00:00
Marcin Kostrzewa
3b29bc3483 Add value caching for nodes (#438) 2020-01-22 17:04:55 +00:00
Marcin Kostrzewa
e80667a487
Function call instrumentation (#433) 2020-01-21 15:01:52 +01:00
Dmytro Mitin
498587e271
Stub Out Gateway and Language Server Akka Services, Implement a Starting Subset of LSP (beginning) (#418)
* Rename language-server -> runner, add language-server, gateway

* Add entry point --lsp

* Add Gateway, LanguageServer

* Add stab for Initialize

* Add stubs for Initialize, Initialized

* Add GatewayTest

* fix PR

* increase timeout

* merge with master

* fix compilation after merge

* reformat with scalafmt

* Add TODOs

* Add doc for gateway

* Update CONTRIBUTING.md

* Refactor code for PR

* Add Request#response(..)

* Make Initialize, Initialized extractor objects

* Refactor for -> map

* Fix docs

* Remove DerivationConfig

* Make Request, Notification polymorphic

* Add Param.Array, Params.Array

* Replace Decoder#apply -> tryDecode

* Refactor code

* Add docs

* Refactor code

* Refactor code

* Refactor code

* Make gateway a pure actor

* Add client capabilities

* Add server capabilities

* Add docs for capabilities

* Add docs

* Add docs

* Fix Server.Config

* Update doc for Server

* Improve PR

* Rename Protocol -> JsonRpcController

* Add docs

* Fix identation.

* Fix identation

* Fix identation

* Fix identation

* Fix docs
2020-01-17 17:35:44 +02:00
Marcin Kostrzewa
37e383b430
Polyglot API & module-level expression eval (#424) 2020-01-10 15:53:46 +01:00
Marcin Kostrzewa
05118016e1
Implement value extraction from scopes (#419) 2020-01-07 17:38:49 +01:00
Marcin Kostrzewa
4f177aa0f5
Fix uncached flows, refactor and document the function call flow (#417) 2020-01-07 13:39:07 +01:00
Marcin Kostrzewa
1eed651728
Interpreter lifecycle & Module changes (#414) 2019-12-20 16:02:34 +01:00
Ara Adkins
c3acc5c615
Complete AST to AstExpression translation (#374) 2019-12-06 19:22:20 +00:00
Marcin Kostrzewa
2b8af07148
Fix jupyter & tweak stacktrace elements & pretty printer (#373) 2019-12-06 12:58:20 +01:00
Ara Adkins
db4cbacec3
Add suspended blocks, fix thunk performance (#371)
This commit adds support for suspended blocks in the interpreter and also fixes 
a major performance issue with nested thunks that was causing quadratic 
evaluation time.
2019-12-04 16:00:53 +00:00
Marcin Kostrzewa
c7b3d31415
Source locations in Truffle nodes (#368) 2019-12-02 19:41:46 +01:00
Michał Wawrzyniec Urbańczyk
47f9a4889c
Scala AST refactoring (#360)
A new implementation of Scala AST, as described in #352.
2019-12-02 14:30:37 +01:00
Ara Adkins
ed5786d99e
Add pattern matching and lazy arguments (#365)
Add new syntax support for the above constructs.
2019-12-02 11:59:45 +00:00
Marcin Kostrzewa
6bc14a3b9f Add a tiny subset of nodelocs (#364) 2019-11-29 12:36:48 +00:00
Ara Adkins
9a4332108f
Add lambdas, types, and methods support to new syntax (#358) 2019-11-27 11:32:36 +00:00
Marcin Kostrzewa
85272edcb0
Graal upgrade to 19.3.0 (#350) 2019-11-22 16:38:31 +01:00
Ara Adkins
b91ab25fdb
Translate arith expressions using the new parser (#346) 2019-11-20 09:18:53 +00:00
Marcin Kostrzewa
427e784663
Repl & Debugger (#345) 2019-11-19 16:16:58 +01:00
Marcin Kostrzewa
51d66cdef6
Jupyter bindings (#335) 2019-11-18 14:36:03 +01:00
Ara Adkins
22aa4efda8
Add a low-level graph library (#334) 2019-11-18 11:18:16 +00:00
Marcin Kostrzewa
0ec41b5bbd
String literals, caller frame access, eval function (#333) 2019-11-15 15:49:57 +01:00
Josef
8da25bec2d
Text AST Reimplementation. (#327) 2019-11-14 13:55:45 +01:00
Marcin Kostrzewa
3929b3f72c
Implement call strategy controls and a functional if statement. (#328) 2019-11-13 12:27:52 +01:00
Ara Adkins
bfe81a731f
Reorganise repo for further development (#308) 2019-11-08 17:32:48 +00:00