sv-parser support parse class declare

This commit is contained in:
erihsu 2022-04-03 15:37:22 +08:00
parent 9b9d25b420
commit 9015bb0a95
5 changed files with 61 additions and 0 deletions

View File

@ -50,6 +50,9 @@ pub(crate) fn description(s: Span) -> IResult<Span, Description> {
map(config_declaration, |x| {
Description::ConfigDeclaration(Box::new(x))
}),
map(class_declaration, |x| {
Description::ClassDeclaration(Box::new(x))
}),
))(s)
}

View File

@ -1339,4 +1339,36 @@ endmodule
);
assert_eq!(ret.origin(80).unwrap().1, 60);
}
#[test]
fn test21() {
let include_paths = [get_testcase("")];
let (ret, _) = preprocess(
get_testcase("test21.sv"),
&HashMap::new(),
&include_paths,
false,
false,
)
.unwrap();
}
#[test]
fn test22() {
let include_paths = [get_testcase("")];
let (ret, _) = preprocess(
get_testcase("test22.sv"),
&HashMap::new(),
&include_paths,
false,
false,
)
.unwrap();
}
}

View File

@ -0,0 +1,7 @@
class test21 extends base_class /* base class*/;
int a;
int b;
function int funcname();
return 2;
endfunction : funcname
endclass : test21

View File

@ -0,0 +1,18 @@
// it's for test
`ifndef ABCD
`define ABCD
package my_package;
import uvm_pkg::*;
import internal_pkg::*;
// include
`include "test21.sv"
endpackage : my_package
`endif

View File

@ -23,6 +23,7 @@ pub enum Description {
PackageItem(Box<DescriptionPackageItem>),
BindDirective(Box<DescriptionBindDirective>),
ConfigDeclaration(Box<ConfigDeclaration>),
ClassDeclaration(Box<ClassDeclaration>),
}
#[derive(Clone, Debug, PartialEq, Node)]