fix bigfile parse error | remove vhdl test
This commit is contained in:
parent
e726fffd99
commit
de587096b2
@ -1,5 +1,4 @@
|
||||
use std::path::PathBuf;
|
||||
use log::info;
|
||||
use vhdl_lang::ast::{ArchitectureBody, ConcurrentStatement, DesignFile, Designator, EntityDeclaration, InstantiatedUnit, InterfaceDeclaration, InterfaceList, LabeledConcurrentStatement, Mode, ModeIndication, Name};
|
||||
use vhdl_lang::{kind_str, HasTokenSpan, Token, TokenAccess, TokenSpan, VHDLParser, VHDLStandard};
|
||||
|
||||
@ -64,7 +63,6 @@ pub fn make_fast_from_units(
|
||||
}
|
||||
});
|
||||
|
||||
info!("get fast {:#?}", hdlparam);
|
||||
Some(hdlparam)
|
||||
}
|
||||
|
||||
|
@ -314,7 +314,6 @@ fn do_vhdl_fast(
|
||||
}
|
||||
|
||||
let arch_and_entity = vhdl_project.project.get_analyzed_units(&pathbuf);
|
||||
info!("for file {} arch_and_entity is empty {}", path, arch_and_entity.is_empty());
|
||||
if let Some(mut fast) = make_fast_from_units(arch_and_entity) {
|
||||
fast.file_type = file_type.to_string();
|
||||
// for module in &fast.content {
|
||||
|
@ -506,6 +506,12 @@ pub fn recovery_sv_parse_with_retry(
|
||||
}
|
||||
}
|
||||
|
||||
fn replace_substring(rope: Rope, substring: &str) -> Rope {
|
||||
let text = rope.to_string();
|
||||
let replaced_text = text.replace(substring, &" ".repeat(substring.len()));
|
||||
Rope::from(replaced_text)
|
||||
}
|
||||
|
||||
/// 更加稳定地解析 sv 和 v
|
||||
/// 支持遇到错误进行自动修复,然后再解析
|
||||
pub fn recovery_sv_parse(
|
||||
@ -522,6 +528,10 @@ pub fn recovery_sv_parse(
|
||||
let mut reverted_change = false;
|
||||
let mut text = doc.clone();
|
||||
|
||||
// TODO: find how to fix it
|
||||
// remove `reset all to avoid parse error
|
||||
text = replace_substring(text, "`resetall");
|
||||
|
||||
let recover_text_by_byte_idx = |byte_idx: usize, reverted_change: &mut bool, text: &mut Rope| {
|
||||
let mut line_start = text.byte_to_line(byte_idx);
|
||||
let mut line_end = text.byte_to_line(byte_idx) + 1;
|
||||
|
@ -2,46 +2,47 @@
|
||||
|
||||
#[cfg(test)]
|
||||
mod test_vhdl_fast {
|
||||
use crate::{core::vhdl_parser::{make_fast_from_design_file, vhdl_parse}, test::{DIGTIAL_IDE_TEST, TESTFILES_TEMP_DIR}, utils::*};
|
||||
// TODO: Rewrite VHDL Test
|
||||
// use crate::{core::vhdl_parser::{make_fast_from_design_file, vhdl_parse}, test::{DIGTIAL_IDE_TEST, TESTFILES_TEMP_DIR}, utils::*};
|
||||
|
||||
#[test]
|
||||
fn test_temp() {
|
||||
let file_iter = RecursiveFileIterator::new(TESTFILES_TEMP_DIR);
|
||||
for file in file_iter {
|
||||
let language_id = get_language_id_by_pathbuf(&file);
|
||||
if language_id == "vhdl" {
|
||||
println!("test file: {:?}", file);
|
||||
if let Some(design_file) = vhdl_parse(&file) {
|
||||
if let Some(_) = make_fast_from_design_file(&design_file) {
|
||||
println!("<(^-^)>");
|
||||
} else {
|
||||
eprintln!("error happen when make fast {:?}", file);
|
||||
}
|
||||
} else {
|
||||
eprintln!("error happen when parse {:?}", file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// #[test]
|
||||
// fn test_temp() {
|
||||
// let file_iter = RecursiveFileIterator::new(TESTFILES_TEMP_DIR);
|
||||
// for file in file_iter {
|
||||
// let language_id = get_language_id_by_pathbuf(&file);
|
||||
// if language_id == "vhdl" {
|
||||
// println!("test file: {:?}", file);
|
||||
// if let Some(design_file) = vhdl_parse(&file) {
|
||||
// if let Some(_) = make_fast_from_design_file(&design_file) {
|
||||
// println!("<(^-^)>");
|
||||
// } else {
|
||||
// eprintln!("error happen when make fast {:?}", file);
|
||||
// }
|
||||
// } else {
|
||||
// eprintln!("error happen when parse {:?}", file);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
#[test]
|
||||
fn test_digital_ide_test() {
|
||||
let file_iter = RecursiveFileIterator::new(DIGTIAL_IDE_TEST);
|
||||
for file in file_iter {
|
||||
let language_id = get_language_id_by_pathbuf(&file);
|
||||
if language_id == "vhdl" {
|
||||
println!("test file: {:?}", file);
|
||||
if let Some(design_file) = vhdl_parse(&file) {
|
||||
if let Some(_) = make_fast_from_design_file(&design_file) {
|
||||
println!("<(^-^)>");
|
||||
} else {
|
||||
eprintln!("error happen when make fast {:?}", file);
|
||||
}
|
||||
} else {
|
||||
eprintln!("error happen when parse {:?}", file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// #[test]
|
||||
// fn test_digital_ide_test() {
|
||||
// let file_iter = RecursiveFileIterator::new(DIGTIAL_IDE_TEST);
|
||||
// for file in file_iter {
|
||||
// let language_id = get_language_id_by_pathbuf(&file);
|
||||
// if language_id == "vhdl" {
|
||||
// println!("test file: {:?}", file);
|
||||
// if let Some(design_file) = vhdl_parse(&file) {
|
||||
// if let Some(_) = make_fast_from_design_file(&design_file) {
|
||||
// println!("<(^-^)>");
|
||||
// } else {
|
||||
// eprintln!("error happen when make fast {:?}", file);
|
||||
// }
|
||||
// } else {
|
||||
// eprintln!("error happen when parse {:?}", file);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user