mirror of https://github.com/zachjs/sv2v.git
fix broken for inits parsing; beefed up relong test script to catch such mistakes
This commit is contained in:
parent
ef42fc04fd
commit
e4efb4803b
|
|
@ -195,13 +195,16 @@ parseDTsAsDeclOrAsgn tokens =
|
|||
parseDTsAsDeclsAndAsgns :: [DeclToken] -> [Either Decl (LHS, Expr)]
|
||||
parseDTsAsDeclsAndAsgns [] = []
|
||||
parseDTsAsDeclsAndAsgns tokens =
|
||||
if hasLeadingAsgn
|
||||
if hasLeadingAsgn || tripLookahead tokens
|
||||
then
|
||||
let (lhsToks, l0) = break isAsgnToken tokens
|
||||
let (lhsToks, l0) = break isDTAsgn tokens
|
||||
lhs = takeLHS lhsToks
|
||||
DTAsgnNBlk Nothing expr : l1 = l0
|
||||
DTComma : remaining = l1
|
||||
in Right (lhs, expr) : parseDTsAsDeclsAndAsgns remaining
|
||||
DTAsgn AsgnOpEq expr : l1 = l0
|
||||
asgn = Right (lhs, expr)
|
||||
in case l1 of
|
||||
DTComma : remaining -> asgn : parseDTsAsDeclsAndAsgns remaining
|
||||
[] -> [asgn]
|
||||
_ -> error $ "bad decls and asgns tokens: " ++ show tokens
|
||||
else
|
||||
let (component, remaining) = parseDTsAsComponent tokens
|
||||
decls = finalize component
|
||||
|
|
@ -213,6 +216,9 @@ parseDTsAsDeclsAndAsgns tokens =
|
|||
(Just a, Just b) -> a > b
|
||||
(Nothing, Just _) -> True
|
||||
_ -> False
|
||||
isDTAsgn :: DeclToken -> Bool
|
||||
isDTAsgn (DTAsgn _ _) = True
|
||||
isDTAsgn _ = False
|
||||
|
||||
isAsgnToken :: DeclToken -> Bool
|
||||
isAsgnToken (DTBit _) = True
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
SV2V=../../bin/sv2v
|
||||
|
||||
assertExists() {
|
||||
file=$1
|
||||
[ -f "$file" ]
|
||||
|
|
@ -28,6 +30,15 @@ simulate() {
|
|||
sed -i.orig -e "1,3d" "$sim_outfile"
|
||||
}
|
||||
|
||||
assertConverts() {
|
||||
ac_file="$1"
|
||||
ac_temp="$SHUNIT_TMPDIR/ac-conv-temp.v"
|
||||
$SV2V "$ac_file" 2> /dev/null > "$ac_temp"
|
||||
assertTrue "1st conversion of $ac_file failed" $?
|
||||
$SV2V "$ac_temp" 2> /dev/null > /dev/null
|
||||
assertTrue "2nd conversion of $ac_file failed" $?
|
||||
}
|
||||
|
||||
runTest() {
|
||||
test=$1
|
||||
assertNotNull "test not specified" $test
|
||||
|
|
@ -38,11 +49,15 @@ runTest() {
|
|||
|
||||
assertExists $sv
|
||||
assertExists $ve
|
||||
assertExists $sv
|
||||
assertExists $tb
|
||||
|
||||
assertConverts "$sv"
|
||||
assertConverts "$ve"
|
||||
assertConverts "$tb"
|
||||
|
||||
# convert the SystemVerilog source file
|
||||
cv="$SHUNIT_TMPDIR/conv-$test.v"
|
||||
../../bin/sv2v $sv 2> /dev/null > $cv
|
||||
$SV2V $sv 2> /dev/null > $cv
|
||||
assertTrue "conversion failed" $?
|
||||
assertExists $cv
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue