You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Suppose a REPL is created in project p (i.e., p is open in the workspace). The question is which version of p, and which version of any other project q, is loaded in the REPL for p. There are several options:
Regarding the version of p:
If p ∉ {rascal, rascal-lsp}, then there is one option: the version of p in the workspace.
If p ∈ {rascal, rascal-lsp}, then there's a second option: the version of p in the VS Code extension.
Regarding the version of q:
If q ∉ {rascal, rascal-lsp}, then there are three options:
no version of q;
the version of q in the workspace;
a version of q in the local Maven repository, when q is a dependency of p (declared in the POM of p).
If q ∈ {rascal, rascal-lsp}, then there's a fourth option: the version of q in the VS Code extension.
Expectation
The version of p in the workspace is loaded in the REPL.
The version of q is/isn't loaded in the REPL according to this table:
q is a dependency of p
q is open in the workspace
☑️
☑️
the version of q in the workspace
☑️
🟪
a version of q in the local Maven repository
🟪
☑️
no version of q†
🟪
🟪
no version of q‡
† Exceptions: if q ∈ {rascal, rascal-lsp}, then
If q = rascal, then the version in the workspace is loaded.
If q = rascal-lsp, then the version in the VS Code extension is loaded.
‡ Exceptions:
If q = rascal, then the version in the VS Code extension is loaded.
If q = rascal-lsp, then the version in the VS Code extension is loaded.
These expectations are based on the following underlying assumptions:
If multiple projects are open in the workspace, then it matters in which project a REPL is created.
If a project is open in the workspace, then it's impossible to load a different version of that project, because:
If a project is open, then it's under active development.
If a project is under active development, then the developer should observe the latest changes in the REPL.
(If a version in the local Maven repository should be loaded, then the project can be closed and/or (re)opened in another workspace.)
Some versions of rascal and rascal-lsp are always loaded.
Actual
Currently (= in the branches listed above), there are several anomalous cases in which the actual version isn't the expected version. See the following issues for details:
sungshik
changed the title
Which versions of projects are loaded in the REPL? -- Overview
Which versions of projects are loaded in the REPL?
Dec 4, 2024
Scope (branches)
replace-lib-by-mvn-and-others
(Replace lib:/// scheme by mvn:/// and file:/// and jar+file:/// everywhere rascal#1969)replace-lib-scheme
(testing rascal without the lib scheme #454)Problem
Situation
Suppose a REPL is created in project
p
(i.e.,p
is open in the workspace). The question is which version ofp
, and which version of any other projectq
, is loaded in the REPL forp
. There are several options:p
:p
∉ {rascal
,rascal-lsp
}, then there is one option: the version ofp
in the workspace.p
∈ {rascal
,rascal-lsp
}, then there's a second option: the version ofp
in the VS Code extension.q
:q
∉ {rascal
,rascal-lsp
}, then there are three options:q
;q
in the workspace;q
in the local Maven repository, whenq
is a dependency ofp
(declared in the POM ofp
).q
∈ {rascal
,rascal-lsp
}, then there's a fourth option: the version ofq
in the VS Code extension.Expectation
p
in the workspace is loaded in the REPL.q
is/isn't loaded in the REPL according to this table:q
is a dependency ofp
q
is open in the workspaceq
in the workspaceq
in the local Maven repositoryq
†q
‡q
∈ {rascal
,rascal-lsp
}, thenq
=rascal
, then the version in the workspace is loaded.q
=rascal-lsp
, then the version in the VS Code extension is loaded.q
=rascal
, then the version in the VS Code extension is loaded.q
=rascal-lsp
, then the version in the VS Code extension is loaded.These expectations are based on the following underlying assumptions:
rascal
andrascal-lsp
are always loaded.Actual
Currently (= in the branches listed above), there are several anomalous cases in which the actual version isn't the expected version. See the following issues for details:
rascal
are loaded from different versions #538rascal
is loaded from the VS Code extension even if another version is depended on #540Tasks
Related work
util::LanguageServer
to standard library in rascal project #504The text was updated successfully, but these errors were encountered: