Skip to content

Commit a221501

Browse files
committed
Clarify semantics with better name and documentation.
1 parent d9835d9 commit a221501

4 files changed

Lines changed: 8 additions & 7 deletions

File tree

rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/BaseWorkspaceService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void initialize(ClientCapabilities clientCap, @Nullable List<WorkspaceFol
8484
this.workspaceFolders.addAll(currentWorkspaceFolders);
8585
}
8686

87-
var workspaceCapabilities = Nullables.initAndGet(capabilities, ServerCapabilities::getWorkspace, ServerCapabilities::setWorkspace, WorkspaceServerCapabilities::new);
87+
var workspaceCapabilities = Nullables.ensureNonNullAndGet(capabilities, ServerCapabilities::getWorkspace, ServerCapabilities::setWorkspace, WorkspaceServerCapabilities::new);
8888
if (Nullables.has(clientCap.getWorkspace(), WorkspaceClientCapabilities::getWorkspaceFolders)) {
8989
var folderOptions = new WorkspaceFoldersOptions();
9090
folderOptions.setSupported(true);

rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/parametric/capabilities/FileOperationCapability.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ private static FileOperationFilter extensionFilter(String ext) {
103103
}
104104

105105
private static FileOperationsServerCapabilities fileOperationCapabilities(ServerCapabilities caps) {
106-
var workspace = Nullables.initAndGet(caps, ServerCapabilities::getWorkspace, ServerCapabilities::setWorkspace, WorkspaceServerCapabilities::new);
107-
return Nullables.initAndGet(workspace, WorkspaceServerCapabilities::getFileOperations, WorkspaceServerCapabilities::setFileOperations, FileOperationsServerCapabilities::new);
106+
var workspace = Nullables.ensureNonNullAndGet(caps, ServerCapabilities::getWorkspace, ServerCapabilities::setWorkspace, WorkspaceServerCapabilities::new);
107+
return Nullables.ensureNonNullAndGet(workspace, WorkspaceServerCapabilities::getFileOperations, WorkspaceServerCapabilities::setFileOperations, FileOperationsServerCapabilities::new);
108108
}
109109

110110
/**

rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/rascal/RascalWorkspaceService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ public void initialize(ClientCapabilities clientCap, @Nullable List<WorkspaceFol
5757
ServerCapabilities capabilities) {
5858
super.initialize(clientCap, currentWorkspaceFolders, capabilities);
5959

60-
var workspaceCap = Nullables.initAndGet(capabilities, ServerCapabilities::getWorkspace, ServerCapabilities::setWorkspace, WorkspaceServerCapabilities::new);
61-
var fileOperationCapabilities = Nullables.initAndGet(workspaceCap, WorkspaceServerCapabilities::getFileOperations, WorkspaceServerCapabilities::setFileOperations, FileOperationsServerCapabilities::new);
60+
var workspaceCap = Nullables.ensureNonNullAndGet(capabilities, ServerCapabilities::getWorkspace, ServerCapabilities::setWorkspace, WorkspaceServerCapabilities::new);
61+
var fileOperationCapabilities = Nullables.ensureNonNullAndGet(workspaceCap, WorkspaceServerCapabilities::getFileOperations, WorkspaceServerCapabilities::setFileOperations, FileOperationsServerCapabilities::new);
6262

6363
var rascalFile = new FileOperationPattern("**/*.rsc");
6464
rascalFile.setMatches(FileOperationPatternKind.File);

rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/util/Nullables.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public static <A, B> boolean has(@Nullable A a, Function<A, @Nullable B> getFunc
102102
}
103103

104104
/**
105-
* Get a value from an object. If it was not set yet (i.e. `null`), initialize it before returning.
105+
* Get a value from an object. If it was not set yet (i.e. `null`), initialize and set it before returning.
106106
* @param <C> The type of the containing object.
107107
* @param <T> The type of the value to get.
108108
* @param container The containing object.
@@ -111,11 +111,12 @@ public static <A, B> boolean has(@Nullable A a, Function<A, @Nullable B> getFunc
111111
* @param initializer The value initializer (e.g. a constructor). Only called if the value is not initialized yet.
112112
* @return The gotten value, or the initialized value if was not initialized yet.
113113
*/
114-
public static <C, T> T initAndGet(C container, Function<C, @Nullable T> getter, BiConsumer<C, T> setter, Supplier<T> initializer) {
114+
public static <C, T> T ensureNonNullAndGet(C container, Function<C, @Nullable T> getter, BiConsumer<C, T> setter, Supplier<T> initializer) {
115115
var t = getter.apply(container);
116116
if (t == null) {
117117
t = initializer.get();
118118
setter.accept(container, t);
119+
assert getter.apply(container) != null : "Setter should set same value as getter gets";
119120
}
120121
return t;
121122
}

0 commit comments

Comments
 (0)