Simplify checkSetAssignment

This commit is contained in:
Joseph C. Sible 2020-04-05 20:21:14 -04:00
parent df4928f4e3
commit cfa2a663af
1 changed files with 4 additions and 9 deletions

View File

@ -661,17 +661,12 @@ prop_checkSetAssignment5 = verifyNot checkSetAssignment "set 'a=5'"
prop_checkSetAssignment6 = verifyNot checkSetAssignment "set"
checkSetAssignment = CommandCheck (Exactly "set") (f . arguments)
where
f (var:value:rest) =
let str = literal var in
when (isVariableName str || isAssignment str) $
msg (getId var)
f (var:_) =
when (isAssignment $ literal var) $
msg (getId var)
f (var:rest)
| (not (null rest) && isVariableName str) || isAssignment str =
warn (getId var) 2121 "To assign a variable, use just 'var=value', no 'set ..'."
where str = literal var
f _ = return ()
msg id = warn id 2121 "To assign a variable, use just 'var=value', no 'set ..'."
isAssignment str = '=' `elem` str
literal (T_NormalWord _ l) = concatMap literal l
literal (T_Literal _ str) = str