Skip to content

Commit 47a28e1

Browse files
fix(protols): Remove node.parent.unwrap() or add safety (#121)
I can't seem to find the excact cause of this but having this not fail is better than crashing fixes #116 Signed-off-by: mohammadkhan <mohammadkhan@digitalocean.com>
1 parent b68439e commit 47a28e1

4 files changed

Lines changed: 10 additions & 4 deletions

File tree

.devcontainer/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ ARG BASE_IMAGE=mcr.microsoft.com/devcontainers/base:trixie
33
FROM $BASE_IMAGE
44

55
LABEL org.opencontainers.image.source=https://github.com/coder3101/protols
6+
LABEL org.opencontainers.image.description="Development container for protols"
67

78
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
89
&& apt-get install -y --no-install-recommends \

src/parser/docsymbol.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ impl ParsedTree {
5959
let name = node.utf8_text(content).unwrap();
6060
let kind = NodeKind::to_symbolkind(&node);
6161
let detail = self.find_preceding_comments(node.id(), content);
62+
63+
// Safety: Userdefined nodes usually have a parent as
64+
// the document itself.
6265
let message = node.parent().unwrap();
6366

6467
// https://github.com/rust-lang/rust/issues/102777

src/parser/rename.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ impl ParsedTree {
1010
self.get_node_at_position(pos)
1111
.filter(NodeKind::is_identifier)
1212
.and_then(|n| {
13-
if n.parent().is_some() && NodeKind::is_userdefined(&n.parent().unwrap()) {
13+
if let Some(parent) = n.parent()
14+
&& NodeKind::is_userdefined(&parent)
15+
{
1416
Some(Range {
1517
start: ts_to_lsp_position(&n.start_position()),
1618
end: ts_to_lsp_position(&n.end_position()),

src/parser/tree.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,11 @@ impl ParsedTree {
136136

137137
pub fn get_user_defined_node<'a>(&'a self, pos: &Position) -> Option<Node<'a>> {
138138
self.get_node_at_position(pos)
139-
.map(|n| {
139+
.and_then(|n| {
140140
if NodeKind::is_actionable(&n) {
141-
n
141+
Some(n)
142142
} else {
143-
n.parent().unwrap()
143+
n.parent()
144144
}
145145
})
146146
.filter(NodeKind::is_actionable)

0 commit comments

Comments
 (0)