mirror of
https://github.com/github/semantic.git
synced 2024-12-22 14:21:31 +03:00
Offset the child range correctly.
This commit is contained in:
parent
f8cc3b8933
commit
2bfc2d91c8
@ -48,14 +48,14 @@ documentToTerm language document SourceBlob{..} = alloca $ \ root -> do
|
|||||||
name <- ts_node_p_name node document
|
name <- ts_node_p_name node document
|
||||||
name <- peekCString name
|
name <- peekCString name
|
||||||
count <- ts_node_p_named_child_count node
|
count <- ts_node_p_named_child_count node
|
||||||
children <- filter isNonEmpty <$> traverse (alloca . getChild ts_node_p_named_child (start range) node) (take (fromIntegral count) [0..])
|
children <- filter isNonEmpty <$> traverse (alloca . getChild ts_node_p_named_child node) (take (fromIntegral count) [0..])
|
||||||
|
|
||||||
let startPos = SourcePos (1 + (fromIntegral $! ts_node_p_start_point_row node)) (1 + (fromIntegral $! ts_node_p_start_point_column node))
|
let startPos = SourcePos (1 + (fromIntegral $! ts_node_p_start_point_row node)) (1 + (fromIntegral $! ts_node_p_start_point_column node))
|
||||||
let endPos = SourcePos (1 + (fromIntegral $! ts_node_p_end_point_row node)) (1 + (fromIntegral $! ts_node_p_end_point_column node))
|
let endPos = SourcePos (1 + (fromIntegral $! ts_node_p_end_point_row node)) (1 + (fromIntegral $! ts_node_p_end_point_column node))
|
||||||
let sourceSpan = SourceSpan { spanStart = startPos , spanEnd = endPos }
|
let sourceSpan = SourceSpan { spanStart = startPos , spanEnd = endPos }
|
||||||
|
|
||||||
allChildrenCount <- ts_node_p_child_count node
|
allChildrenCount <- ts_node_p_child_count node
|
||||||
let allChildren = filter isNonEmpty <$> traverse (alloca . getChild ts_node_p_child (start range) node) (take (fromIntegral allChildrenCount) [0..])
|
let allChildren = filter isNonEmpty <$> traverse (alloca . getChild ts_node_p_child node) (take (fromIntegral allChildrenCount) [0..])
|
||||||
|
|
||||||
-- Note: The strict application here is semantically important.
|
-- Note: The strict application here is semantically important.
|
||||||
-- Without it, we may not evaluate the value until after we’ve exited
|
-- Without it, we may not evaluate the value until after we’ve exited
|
||||||
@ -65,7 +65,7 @@ documentToTerm language document SourceBlob{..} = alloca $ \ root -> do
|
|||||||
where getChild getter node n out = do
|
where getChild getter node n out = do
|
||||||
_ <- getter node n out
|
_ <- getter node n out
|
||||||
let childRange = nodeRange node
|
let childRange = nodeRange node
|
||||||
toTerm out childRange (slice childRange source)
|
toTerm out childRange (slice (offsetRange childRange (start childRange - start range)) source)
|
||||||
{-# INLINE getChild #-}
|
{-# INLINE getChild #-}
|
||||||
isNonEmpty child = category (extract child) /= Empty
|
isNonEmpty child = category (extract child) /= Empty
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user