debugging inline comment bug

This commit is contained in:
Anton-4 2021-12-01 16:57:28 +01:00
parent 30c1d218a7
commit 5bd776f972
17 changed files with 206 additions and 30 deletions

View file

@ -1,4 +1,4 @@
use roc_ast::lang::core::{ast::ASTNodeId, expr::expr2::ExprId};
use roc_ast::{lang::core::{ast::ASTNodeId, expr::expr2::ExprId}};
use crate::{slow_pool::MarkNodeId, syntax_highlight::HighlightStyle};
@ -147,3 +147,14 @@ pub fn new_arrow_mn(ast_node_id: ASTNodeId, newlines_at_end: usize) -> MarkupNod
newlines_at_end,
}
}
pub fn new_comments_mn(comments: String, ast_node_id: ASTNodeId, newlines_at_end: usize) -> MarkupNode {
MarkupNode::Text {
content: comments,
ast_node_id,
syn_high_style: HighlightStyle::Comment,
attributes: Attributes::default(),
parent_id_opt: None,
newlines_at_end,
}
}

View file

@ -1,7 +1,4 @@
use crate::{
markup::{common_nodes::new_blank_mn_w_nls, top_level_def::tld_mark_node},
slow_pool::{MarkNodeId, SlowPool},
};
use crate::{markup::{common_nodes::new_blank_mn_w_nls, top_level_def::{tld_mark_node, tld_w_comments_mark_node}}, slow_pool::{MarkNodeId, SlowPool}};
use super::from_expr2::expr2_to_markup;
@ -46,6 +43,40 @@ pub fn def2_to_markup<'a>(
mark_node_pool.add(tld_mn)
}
Def2::Blank => mark_node_pool.add(new_blank_mn_w_nls(ast_node_id, None, 2)),
Def2::CommentsBefore {
comments,
def_id
} => {
let inner_def = env.pool.get(*def_id);
let inner_def_mark_node_id = def2_to_markup(env, inner_def, *def_id, mark_node_pool, interns)?;
let full_mark_node = tld_w_comments_mark_node(
comments.clone(),
inner_def_mark_node_id,
ast_node_id,
mark_node_pool,
true
)?;
mark_node_pool.add(full_mark_node)
},
Def2::CommentsAfter {
def_id,
comments
} => {
let inner_def = env.pool.get(*def_id);
let inner_def_mark_node_id = def2_to_markup(env, inner_def, *def_id, mark_node_pool, interns)?;
let full_mark_node = tld_w_comments_mark_node(
comments.clone(),
inner_def_mark_node_id,
ast_node_id,
mark_node_pool,
false
)?;
mark_node_pool.add(full_mark_node)
},
};
Ok(mark_node_id)

View file

@ -4,11 +4,7 @@ use roc_ast::{
};
use roc_module::symbol::IdentId;
use crate::{
markup::{attribute::Attributes, common_nodes::new_equals_mn, nodes::MarkupNode},
slow_pool::{MarkNodeId, SlowPool},
syntax_highlight::HighlightStyle,
};
use crate::{markup::{attribute::Attributes, common_nodes::{new_comments_mn, new_equals_mn}, nodes::MarkupNode}, slow_pool::{MarkNodeId, SlowPool}, syntax_highlight::HighlightStyle};
pub fn tld_mark_node<'a>(
identifier_id: IdentId,
@ -41,3 +37,33 @@ pub fn tld_mark_node<'a>(
Ok(full_let_node)
}
pub fn tld_w_comments_mark_node(
comments: String,
def_mark_node_id: MarkNodeId,
ast_node_id: ASTNodeId,
mark_node_pool: &mut SlowPool,
comments_before: bool,
) -> ASTResult<MarkupNode> {
let comment_mn_id =
mark_node_pool.add(
new_comments_mn(comments, ast_node_id, 1)
);
let children_ids =
if comments_before {
vec![comment_mn_id, def_mark_node_id]
} else {
vec![def_mark_node_id, comment_mn_id]
};
let tld_w_comment_node = MarkupNode::Nested {
ast_node_id,
children_ids: children_ids,
parent_id_opt: None,
newlines_at_end: 2,
};
Ok(tld_w_comment_node)
}