aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/odin/printer/visit.odin10
-rw-r--r--tools/odinfmt/tests/.snapshots/comments.odin16
-rw-r--r--tools/odinfmt/tests/comments.odin16
3 files changed, 38 insertions, 4 deletions
diff --git a/src/odin/printer/visit.odin b/src/odin/printer/visit.odin
index 85ab6b7..e02f1a0 100644
--- a/src/odin/printer/visit.odin
+++ b/src/odin/printer/visit.odin
@@ -194,7 +194,6 @@ visit_comments :: proc(p: ^Printer, pos: tokenizer.Pos) -> (^Document, int) {
@(private)
visit_disabled :: proc(p: ^Printer, node: ^ast.Node) -> ^Document {
-
if node.pos.line not_in p.disabled_lines {
return empty()
}
@@ -209,7 +208,10 @@ visit_disabled :: proc(p: ^Printer, node: ^ast.Node) -> ^Document {
return empty()
}
- move := move_line(p, node.pos)
+ pos_one_line_before := node.pos
+ pos_one_line_before.line -= 1
+
+ move := cons(move_line(p, pos_one_line_before), escape_nest(move_line(p, node.pos)))
for comment_before_or_in_line(p, node.end.line) {
next_comment_group(p)
@@ -218,7 +220,7 @@ visit_disabled :: proc(p: ^Printer, node: ^ast.Node) -> ^Document {
p.source_position = node.end
p.disabled_until_line = disabled_info.end_line
- return cons(escape_nest(move), text(disabled_info.text))
+ return cons(move, text(disabled_info.text))
}
@(private)
@@ -2208,7 +2210,7 @@ visit_block_stmts :: proc(
for stmt, i in stmts {
last_index := max(0, i - 1)
- if stmts[last_index].end.line == stmt.pos.line && i != 0 {
+ if stmts[last_index].end.line == stmt.pos.line && i != 0 && stmt.pos.line not_in p.disabled_lines {
document = cons(document, break_with(";"))
}
diff --git a/tools/odinfmt/tests/.snapshots/comments.odin b/tools/odinfmt/tests/.snapshots/comments.odin
index 5d7ffb7..7063971 100644
--- a/tools/odinfmt/tests/.snapshots/comments.odin
+++ b/tools/odinfmt/tests/.snapshots/comments.odin
@@ -46,3 +46,19 @@ empty_odin_fmt_block :: proc() {
//a := 10
//odinfmt: enable
}
+
+
+disabled_comment_after_normal_comments :: proc() {
+ // comment
+ // hello
+
+ //odinfmt: disable
+ return true
+ //odinfmt: enable
+}
+
+disabled_comments_with_multiple_statements_one_lined :: proc() {
+ //odinfmt: disable
+ i:int;b:int
+ //odinfmt: enable
+}
diff --git a/tools/odinfmt/tests/comments.odin b/tools/odinfmt/tests/comments.odin
index 6d0eb6f..0d5e547 100644
--- a/tools/odinfmt/tests/comments.odin
+++ b/tools/odinfmt/tests/comments.odin
@@ -46,3 +46,19 @@ empty_odin_fmt_block :: proc() {
//a := 10
//odinfmt: enable
}
+
+
+disabled_comment_after_normal_comments :: proc() {
+ // comment
+ // hello
+
+ //odinfmt: disable
+ return true
+ //odinfmt: enable
+}
+
+disabled_comments_with_multiple_statements_one_lined :: proc() {
+ //odinfmt: disable
+ i:int;b:int
+ //odinfmt: enable
+} \ No newline at end of file