Skip to content

Commit

Permalink
Откат ошибок ребейза
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Dec 26, 2023
1 parent 7992f30 commit fee008e
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,11 @@ private void onDestroy() {
}

@Override
@SuppressWarnings("deprecation")
public CompletableFuture<Either<List<? extends SymbolInformation>, List<? extends WorkspaceSymbol>>> symbol(WorkspaceSymbolParams params) {
return CompletableFuture.supplyAsync(() -> Either.forRight(symbolProvider.getSymbols(params)));
return CompletableFuture.supplyAsync(
() -> Either.forRight(symbolProvider.getSymbols(params)),
executorService
);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,9 @@
import com.github._1c_syntax.bsl.parser.BSLParserRuleContext;
import edu.umd.cs.findbugs.annotations.Nullable;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.antlr.v4.runtime.tree.Tree;
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.SelectionRange;
import org.eclipse.lsp4j.SelectionRangeParams;
import org.eclipse.lsp4j.util.Positions;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
Expand Down Expand Up @@ -215,54 +210,4 @@ private static boolean ifBranchMatchesIfStatement(BSLParserRuleContext ctx) {
return ifStatement.elseBranch() == null && ifStatement.elsifBranch().isEmpty();
}

public static Optional<TerminalNode> findNodeContainsPosition(BSLParserRuleContext tree, Position position) {

if (tree.getTokens().isEmpty()) {
return Optional.empty();
}

var start = tree.getStart();
var stop = tree.getStop();

if (!(positionIsAfterOrOnToken(position, start) && positionIsBeforeOrOnToken(position, stop))) {
return Optional.empty();
}

var children = Trees.getChildren(tree);

for (Tree child : children) {
if (child instanceof TerminalNode) {
var terminalNode = (TerminalNode) child;
var token = terminalNode.getSymbol();
if (tokenContainsPosition(token, position)) {
return Optional.of(terminalNode);
}
} else {
Optional<TerminalNode> node = findNodeContainsPosition((BSLParserRuleContext) child, position);
if (node.isPresent()) {
return node;
}
}
}

return Optional.empty();
}

private static boolean tokenContainsPosition(Token token, Position position) {
var tokenRange = Ranges.create(token);
return Ranges.containsPosition(tokenRange, position);
}

private static boolean positionIsBeforeOrOnToken(Position position, Token token) {
var tokenRange = Ranges.create(token);
var end = tokenRange.getEnd();
return Positions.isBefore(position, end) || end.equals(position);
}

private static boolean positionIsAfterOrOnToken(Position position, Token token) {
var tokenRange = Ranges.create(token);
var start = tokenRange.getStart();
return Positions.isBefore(start, position) || start.equals(position);
}

}

0 comments on commit fee008e

Please sign in to comment.