Apply workaround for static class method call
This commit is contained in:
parent
32cbf3a804
commit
0af347032a
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
## [Unreleased](https://github.com/dalance/sv-parser/compare/v0.3.6...Unreleased) - ReleaseDate
|
## [Unreleased](https://github.com/dalance/sv-parser/compare/v0.3.6...Unreleased) - ReleaseDate
|
||||||
|
|
||||||
|
* [Fixed] apply workaround for static class method call
|
||||||
* [Fixed] randomize_call bug
|
* [Fixed] randomize_call bug
|
||||||
|
|
||||||
## [v0.3.6](https://github.com/dalance/sv-parser/compare/v0.3.5...v0.3.6) - 2019-11-05
|
## [v0.3.6](https://github.com/dalance/sv-parser/compare/v0.3.5...v0.3.6) - 2019-11-05
|
||||||
|
@ -595,7 +595,10 @@ pub(crate) fn ps_or_hierarchical_tf_identifier(
|
|||||||
pub(crate) fn ps_or_hierarchical_tf_identifier_package_scope(
|
pub(crate) fn ps_or_hierarchical_tf_identifier_package_scope(
|
||||||
s: Span,
|
s: Span,
|
||||||
) -> IResult<Span, PsOrHierarchicalTfIdentifier> {
|
) -> IResult<Span, PsOrHierarchicalTfIdentifier> {
|
||||||
let (s, a) = opt(package_scope)(s)?;
|
// BNF-WA
|
||||||
|
// reported at https://accellera.mantishub.io/view.php?id=1642
|
||||||
|
//let (s, a) = opt(package_scope)(s)?;
|
||||||
|
let (s, a) = opt(implicit_class_handle_or_class_scope_or_package_scope)(s)?;
|
||||||
let (s, b) = tf_identifier(s)?;
|
let (s, b) = tf_identifier(s)?;
|
||||||
Ok((
|
Ok((
|
||||||
s,
|
s,
|
||||||
|
@ -3177,21 +3177,22 @@ mod spec {
|
|||||||
bit arr[obj.q]; // illegal: local parameter is not a constant expression"##,
|
bit arr[obj.q]; // illegal: local parameter is not a constant expression"##,
|
||||||
Ok((_, _))
|
Ok((_, _))
|
||||||
);
|
);
|
||||||
// TODO
|
// BNF-WA
|
||||||
|
// reported at https://accellera.mantishub.io/view.php?id=1642
|
||||||
// class static method is denied because ps_or_hierarchical_tf_identifier doesn't have class_scope.
|
// class static method is denied because ps_or_hierarchical_tf_identifier doesn't have class_scope.
|
||||||
//test!(
|
test!(
|
||||||
// many1(module_item),
|
many1(module_item),
|
||||||
// r##"class C #(int p = 1, type T = int);
|
r##"class C #(int p = 1, type T = int);
|
||||||
// extern static function T f();
|
extern static function T f();
|
||||||
// endclass
|
endclass
|
||||||
|
|
||||||
// function C::T C::f();
|
function C::T C::f();
|
||||||
// return p + C::p;
|
return p + C::p;
|
||||||
// endfunction
|
endfunction
|
||||||
|
|
||||||
// initial $display("%0d %0d", C#()::f(),C#(5)::f()); // output is "2 10""##,
|
initial $display("%0d %0d", C#()::f(),C#(5)::f()); // output is "2 10""##,
|
||||||
// Ok((_, _))
|
Ok((_, _))
|
||||||
//);
|
);
|
||||||
test!(
|
test!(
|
||||||
many1(module_item),
|
many1(module_item),
|
||||||
r##"interface class A;
|
r##"interface class A;
|
||||||
|
@ -392,7 +392,10 @@ pub enum PsOrHierarchicalTfIdentifier {
|
|||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Node)]
|
#[derive(Clone, Debug, PartialEq, Node)]
|
||||||
pub struct PsOrHierarchicalTfIdentifierPackageScope {
|
pub struct PsOrHierarchicalTfIdentifierPackageScope {
|
||||||
pub nodes: (Option<PackageScope>, TfIdentifier),
|
pub nodes: (
|
||||||
|
Option<ImplicitClassHandleOrClassScopeOrPackageScope>,
|
||||||
|
TfIdentifier,
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Node)]
|
#[derive(Clone, Debug, PartialEq, Node)]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user