下面列出了org.eclipse.lsp4j.jsonrpc.messages.Either#getLeft ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Test
void testMemberAccessOnThisAfterDot() throws Exception {
Path filePath = srcRoot.resolve("Completion.groovy");
String uri = filePath.toUri().toString();
StringBuilder contents = new StringBuilder();
contents.append("class Completion {\n");
contents.append(" String memberVar\n");
contents.append(" public Completion() {\n");
contents.append(" this.\n");
contents.append(" }\n");
contents.append("}");
TextDocumentItem textDocumentItem = new TextDocumentItem(uri, LANGUAGE_GROOVY, 1, contents.toString());
services.didOpen(new DidOpenTextDocumentParams(textDocumentItem));
TextDocumentIdentifier textDocument = new TextDocumentIdentifier(uri);
Position position = new Position(3, 9);
Either<List<CompletionItem>, CompletionList> result = services
.completion(new CompletionParams(textDocument, position)).get();
Assertions.assertTrue(result.isLeft());
List<CompletionItem> items = result.getLeft();
Assertions.assertTrue(items.size() > 0);
List<CompletionItem> filteredItems = items.stream().filter(item -> {
return item.getLabel().equals("memberVar") && item.getKind().equals(CompletionItemKind.Field);
}).collect(Collectors.toList());
Assertions.assertEquals(1, filteredItems.size());
}
@Test
void testMemberAccessOnClassAfterDot() throws Exception {
Path filePath = srcRoot.resolve("Completion.groovy");
String uri = filePath.toUri().toString();
StringBuilder contents = new StringBuilder();
contents.append("class Completion {\n");
contents.append(" public Completion() {\n");
contents.append(" Completion.\n");
contents.append(" }\n");
contents.append(" public static void staticMethod() {}\n");
contents.append("}");
TextDocumentItem textDocumentItem = new TextDocumentItem(uri, LANGUAGE_GROOVY, 1, contents.toString());
services.didOpen(new DidOpenTextDocumentParams(textDocumentItem));
TextDocumentIdentifier textDocument = new TextDocumentIdentifier(uri);
Position position = new Position(2, 15);
Either<List<CompletionItem>, CompletionList> result = services
.completion(new CompletionParams(textDocument, position)).get();
Assertions.assertTrue(result.isLeft());
List<CompletionItem> items = result.getLeft();
Assertions.assertTrue(items.size() > 0);
List<CompletionItem> filteredItems = items.stream().filter(item -> {
return item.getLabel().equals("staticMethod") && item.getKind().equals(CompletionItemKind.Method);
}).collect(Collectors.toList());
Assertions.assertEquals(1, filteredItems.size());
}
@Test
void testMemberAccessOnLocalVariableWithPartialPropertyExpression() throws Exception {
Path filePath = srcRoot.resolve("Completion.groovy");
String uri = filePath.toUri().toString();
StringBuilder contents = new StringBuilder();
contents.append("class Completion {\n");
contents.append(" public Completion() {\n");
contents.append(" String localVar\n");
contents.append(" localVar.charA\n");
contents.append(" }\n");
contents.append("}");
TextDocumentItem textDocumentItem = new TextDocumentItem(uri, LANGUAGE_GROOVY, 1, contents.toString());
services.didOpen(new DidOpenTextDocumentParams(textDocumentItem));
TextDocumentIdentifier textDocument = new TextDocumentIdentifier(uri);
Position position = new Position(3, 18);
Either<List<CompletionItem>, CompletionList> result = services
.completion(new CompletionParams(textDocument, position)).get();
Assertions.assertTrue(result.isLeft());
List<CompletionItem> items = result.getLeft();
List<CompletionItem> filteredItems = items.stream().filter(item -> {
return item.getLabel().equals("charAt") && item.getKind().equals(CompletionItemKind.Method);
}).collect(Collectors.toList());
Assertions.assertEquals(1, filteredItems.size());
}
private void addSourceActionCommand(List<Either<Command, CodeAction>> result, CodeActionContext context, Optional<Either<Command, CodeAction>> target) {
if (!target.isPresent()) {
return;
}
Either<Command, CodeAction> targetAction = target.get();
if (context.getOnly() != null && !context.getOnly().isEmpty()) {
Stream<String> acceptedActionKinds = context.getOnly().stream();
String actionKind = targetAction.getLeft() == null ? targetAction.getRight().getKind() : targetAction.getLeft().getCommand();
if (!acceptedActionKinds.filter(kind -> actionKind != null && actionKind.startsWith(kind)).findFirst().isPresent()) {
return;
}
}
result.add(targetAction);
}
@Test
void testMemberAccessOnLocalVariableWithExistingMethodCallExpressionOnNextLine() throws Exception {
Path filePath = srcRoot.resolve("Completion.groovy");
String uri = filePath.toUri().toString();
StringBuilder contents = new StringBuilder();
contents.append("class Completion {\n");
contents.append(" public Completion() {\n");
contents.append(" String localVar\n");
contents.append(" localVar.\n");
contents.append(" method()\n");
contents.append(" }\n");
contents.append("}");
TextDocumentItem textDocumentItem = new TextDocumentItem(uri, LANGUAGE_GROOVY, 1, contents.toString());
services.didOpen(new DidOpenTextDocumentParams(textDocumentItem));
TextDocumentIdentifier textDocument = new TextDocumentIdentifier(uri);
Position position = new Position(3, 13);
Either<List<CompletionItem>, CompletionList> result = services
.completion(new CompletionParams(textDocument, position)).get();
Assertions.assertTrue(result.isLeft());
List<CompletionItem> items = result.getLeft();
Assertions.assertTrue(items.size() > 0);
List<CompletionItem> filteredItems = items.stream().filter(item -> {
return item.getLabel().equals("charAt") && item.getKind().equals(CompletionItemKind.Method);
}).collect(Collectors.toList());
Assertions.assertEquals(1, filteredItems.size());
}
@Test
void testCompletionForMemberVariableOnCompleteVariableExpression() throws Exception {
Path filePath = srcRoot.resolve("Completion.groovy");
String uri = filePath.toUri().toString();
StringBuilder contents = new StringBuilder();
contents.append("class Completion {\n");
contents.append(" String memberVar\n");
contents.append(" public Completion() {\n");
contents.append(" memberVar\n");
contents.append(" }\n");
contents.append("}");
TextDocumentItem textDocumentItem = new TextDocumentItem(uri, LANGUAGE_GROOVY, 1, contents.toString());
services.didOpen(new DidOpenTextDocumentParams(textDocumentItem));
TextDocumentIdentifier textDocument = new TextDocumentIdentifier(uri);
Position position = new Position(3, 7);
Either<List<CompletionItem>, CompletionList> result = services
.completion(new CompletionParams(textDocument, position)).get();
Assertions.assertTrue(result.isLeft());
List<CompletionItem> items = result.getLeft();
List<CompletionItem> filteredItems = items.stream().filter(item -> {
return item.getLabel().equals("memberVar") && item.getKind().equals(CompletionItemKind.Field);
}).collect(Collectors.toList());
Assertions.assertEquals(1, filteredItems.size());
}
@Test
void testCompletionForParameterOnCompleteVariableExpression() throws Exception {
Path filePath = srcRoot.resolve("Completion.groovy");
String uri = filePath.toUri().toString();
StringBuilder contents = new StringBuilder();
contents.append("class Completion {\n");
contents.append(" public void testMethod(String paramName) {\n");
contents.append(" paramName\n");
contents.append(" }\n");
contents.append("}");
TextDocumentItem textDocumentItem = new TextDocumentItem(uri, LANGUAGE_GROOVY, 1, contents.toString());
services.didOpen(new DidOpenTextDocumentParams(textDocumentItem));
TextDocumentIdentifier textDocument = new TextDocumentIdentifier(uri);
Position position = new Position(2, 13);
Either<List<CompletionItem>, CompletionList> result = services
.completion(new CompletionParams(textDocument, position)).get();
Assertions.assertTrue(result.isLeft());
List<CompletionItem> items = result.getLeft();
List<CompletionItem> filteredItems = items.stream().filter(item -> {
return item.getLabel().equals("paramName") && item.getKind().equals(CompletionItemKind.Variable);
}).collect(Collectors.toList());
Assertions.assertEquals(1, filteredItems.size());
}
@Test
void testCompletionForLocalVariableOnPartialVariableExpression() throws Exception {
Path filePath = srcRoot.resolve("Completion.groovy");
String uri = filePath.toUri().toString();
StringBuilder contents = new StringBuilder();
contents.append("class Completion {\n");
contents.append(" public void testMethod(String paramName) {\n");
contents.append(" String localVar\n");
contents.append(" loc\n");
contents.append(" }\n");
contents.append("}");
TextDocumentItem textDocumentItem = new TextDocumentItem(uri, LANGUAGE_GROOVY, 1, contents.toString());
services.didOpen(new DidOpenTextDocumentParams(textDocumentItem));
TextDocumentIdentifier textDocument = new TextDocumentIdentifier(uri);
Position position = new Position(3, 7);
Either<List<CompletionItem>, CompletionList> result = services
.completion(new CompletionParams(textDocument, position)).get();
Assertions.assertTrue(result.isLeft());
List<CompletionItem> items = result.getLeft();
List<CompletionItem> filteredItems = items.stream().filter(item -> {
return item.getLabel().equals("localVar") && item.getKind().equals(CompletionItemKind.Variable);
}).collect(Collectors.toList());
Assertions.assertEquals(1, filteredItems.size());
}
@Override
protected CompletionItem toCompletionItem(ContentAssistEntry entry, int caretOffset, Position caretPosition,
Document document) {
CompletionItem completionItem = super.toCompletionItem(entry, caretOffset, caretPosition, document);
Either<String, MarkupContent> documentation = completionItem.getDocumentation();
if (documentation != null && documentation.getLeft() == null && documentation.getRight()==null) {
completionItem.setDocumentation((Either<String,MarkupContent>)null);
}
return completionItem;
}
protected String evaluateCodeActionCommand(Either<Command, CodeAction> codeAction)
throws BadLocationException, JavaModelException {
Command c = codeAction.isLeft() ? codeAction.getLeft() : codeAction.getRight().getCommand();
Assert.assertEquals(CodeActionHandler.COMMAND_ID_APPLY_EDIT, c.getCommand());
Assert.assertNotNull(c.getArguments());
Assert.assertTrue(c.getArguments().get(0) instanceof WorkspaceEdit);
WorkspaceEdit we = (WorkspaceEdit) c.getArguments().get(0);
if (we.getDocumentChanges() != null) {
return evaluateChanges(we.getDocumentChanges());
}
return evaluateChanges(we.getChanges());
}
private WorkspaceEdit getWorkspaceEdit(Either<Command, CodeAction> codeAction) {
Command c = codeAction.isLeft() ? codeAction.getLeft() : codeAction.getRight().getCommand();
assertEquals(CodeActionHandler.COMMAND_ID_APPLY_EDIT, c.getCommand());
assertNotNull(c.getArguments());
assertTrue(c.getArguments().get(0) instanceof WorkspaceEdit);
return (WorkspaceEdit) c.getArguments().get(0);
}
/** @return string for given element */
public String toString5(Either<String, MarkupContent> strOrMarkupContent) {
if (strOrMarkupContent == null) {
return "";
}
if (strOrMarkupContent.isLeft()) {
return strOrMarkupContent.getLeft();
} else {
return toString(strOrMarkupContent.getRight());
}
}
/**
* Unify the definition result has a list of Location.
*
* @param definitions the definition result
* @return the list of locations
*/
private List<? extends Location> toLocation(Either<List<? extends Location>, List<? extends LocationLink>> definitions) {
if (definitions.isLeft()) {
return definitions.getLeft();
} else {
return definitions.getRight().stream().map(link -> new Location(link.getTargetUri(), link.getTargetRange())).collect(Collectors.toList());
}
}
protected void testDocumentSymbol(final Procedure1<? super DocumentSymbolConfiguraiton> configurator) {
try {
@Extension
final DocumentSymbolConfiguraiton configuration = new DocumentSymbolConfiguraiton();
configuration.setFilePath(("MyModel." + this.fileExtension));
configurator.apply(configuration);
final String fileUri = this.initializeContext(configuration).getUri();
TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(fileUri);
DocumentSymbolParams _documentSymbolParams = new DocumentSymbolParams(_textDocumentIdentifier);
final CompletableFuture<List<Either<SymbolInformation, DocumentSymbol>>> symbolsFuture = this.languageServer.documentSymbol(_documentSymbolParams);
final List<Either<SymbolInformation, DocumentSymbol>> symbols = symbolsFuture.get();
Procedure1<? super List<Either<SymbolInformation, DocumentSymbol>>> _assertSymbols = configuration.getAssertSymbols();
boolean _tripleNotEquals = (_assertSymbols != null);
if (_tripleNotEquals) {
configuration.getAssertSymbols().apply(symbols);
} else {
final Function1<Either<SymbolInformation, DocumentSymbol>, Object> _function = (Either<SymbolInformation, DocumentSymbol> it) -> {
Object _xifexpression = null;
if (this.hierarchicalDocumentSymbolSupport) {
_xifexpression = it.getRight();
} else {
_xifexpression = it.getLeft();
}
return _xifexpression;
};
final List<Object> unwrappedSymbols = ListExtensions.<Either<SymbolInformation, DocumentSymbol>, Object>map(symbols, _function);
final String actualSymbols = this.toExpectation(unwrappedSymbols);
this.assertEquals(configuration.getExpectedSymbols(), actualSymbols);
}
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private boolean checkCodeActionProvider(Either<Boolean, CodeActionOptions> provider) {
return provider != null && ((provider.isLeft() && provider.getLeft()) || (provider.isRight()
&& provider.getRight() != null));
}
protected void checkCompletion(final String uri) {
try {
CompletionParams _completionParams = new CompletionParams();
final Procedure1<CompletionParams> _function = (CompletionParams it) -> {
TextDocumentIdentifier _textDocumentIdentifier = new TextDocumentIdentifier(uri);
it.setTextDocument(_textDocumentIdentifier);
Position _position = new Position(0, 10);
it.setPosition(_position);
};
CompletionParams _doubleArrow = ObjectExtensions.<CompletionParams>operator_doubleArrow(_completionParams, _function);
final CompletableFuture<Either<List<CompletionItem>, CompletionList>> completionItems = this.languageServer.completion(_doubleArrow);
final Either<List<CompletionItem>, CompletionList> result = completionItems.get();
List<CompletionItem> _xifexpression = null;
boolean _isLeft = result.isLeft();
if (_isLeft) {
_xifexpression = result.getLeft();
} else {
_xifexpression = result.getRight().getItems();
}
final List<CompletionItem> items = _xifexpression;
final String actualCompletionItems = this.toExpectation(items);
StringConcatenation _builder = new StringConcatenation();
_builder.append("Foo (TypeDeclaration) -> Foo [[0, 10] .. [0, 10]]");
_builder.newLine();
_builder.append("boolean -> boolean [[0, 10] .. [0, 10]]");
_builder.newLine();
_builder.append("int -> int [[0, 10] .. [0, 10]]");
_builder.newLine();
_builder.append("op -> op [[0, 10] .. [0, 10]]");
_builder.newLine();
_builder.append("string -> string [[0, 10] .. [0, 10]]");
_builder.newLine();
_builder.append("void -> void [[0, 10] .. [0, 10]]");
_builder.newLine();
_builder.append("} -> } [[0, 10] .. [0, 10]]");
_builder.newLine();
_builder.append("{ -> { [[0, 9] .. [0, 10]]");
_builder.newLine();
_builder.append(" ");
_builder.append("+ } [[0, 11] .. [0, 11]]");
_builder.newLine();
final String expectedCompletionItems = _builder.toString();
this.assertEquals(expectedCompletionItems, actualCompletionItems);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public Command getCommand(Either<Command, CodeAction> codeAction) {
return codeAction.isLeft() ? codeAction.getLeft() : codeAction.getRight().getCommand();
}
private boolean checkProvider(Either<Boolean, StaticRegistrationOptions> provider) {
return provider != null && ((provider.isLeft() && provider.getLeft()) || (provider.isRight()
&& provider.getRight() != null));
}
private boolean isTagSupported(Either<Boolean, DiagnosticsTagSupport> tagSupport) {
return tagSupport.isLeft() ? tagSupport.getLeft() : tagSupport.getRight().getValueSet() != null;
}
private Collection<? extends LookupElement> toProposals(Project project, Editor editor, Document document, int offset, Either<List<CompletionItem>, CompletionList> completion, LanguageServer languageServer) {
List<CompletionItem> items = completion.isLeft()?completion.getLeft():completion.getRight().getItems();
return items.stream().map(item -> createLookupItem(project, editor, offset, item, languageServer)).collect(Collectors.toList());
//return Collections.singletonList(LookupElementBuilder.create("quarkus.application.name=").withPresentableText("quarkus.application.name="));
}