Support case statement in function. #18
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi shtaxxx-san,
I noticed Pyverilog fail to analyze verilog code as follows (case statement is written in function).
So first, I modified Bindvisitor._case change to same implementation with Signalvisitor._case.
But by only this change, case statement is not analyzed correctly.
I found that Bindvisitor.getCondlist and Bindvisitor.getFlowlist doesn't work correctly for functioncall and match_flowlist became blank. So in the following lines, tree is added in the unexpected form.
'tree = reorder.reorder(
self.appendBranchTree(current_tree, match_flowlist, add_tree))'
So I commented out 'if frame.isFunctioncall(): break' in Bindvisitor.getCondlist and Bindvisitor.getFlowlist.
Under this modification, match_flowlist is valid (not blank), and added tree in correct form.
But in honest, I don't understand why this line was inserted, and it can be deleted.
Please give me advise if there are other good correction method.
With this modification, analysis result of testcode/function.v was changed. (I think previous analysis result is not correct.)