From 4c04b8bb15f0ecd1a0dc7a7e1349b9ffb78ffbd8 Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Wed, 28 Oct 2020 17:40:01 +0100 Subject: [PATCH] Add comment --- extractor/src/extractor.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/extractor/src/extractor.rs b/extractor/src/extractor.rs index 1469f2daa71..40f3acb131b 100644 --- a/extractor/src/extractor.rs +++ b/extractor/src/extractor.rs @@ -274,6 +274,14 @@ fn sliced_source_arg(source: &Vec, n: Node) -> Arg { // Emit a 'Located' TrapEntry for the provided node, appropriately calibrated. fn location_for<'a>(source: &Vec, fp: &String, label: Label, n: Node) -> TrapEntry { + // Tree-sitter row, column values are 0-based while CodeQL starts + // counting at 1. In addition Tree-sitter's row and column for the + // end position are exclusive while CodeQL's end positions are inclusive. + // This means that all values should be incremented by 1 and in addition the + // end position needs to be shift 1 to the left. In most cases this means + // simply incrementing all values except the end column except in cases where + // the end column is 0 (start of a line). In such cases the end position must be + // set to the end of the previous line. let start_line = n.start_position().row + 1; let start_col = n.start_position().column + 1; let mut end_line = n.end_position().row + 1;