Don't treat ${!x@} as reference of x (fixes #2116)

This commit is contained in:
Vidar Holen 2020-12-30 20:55:18 -08:00
parent fbb14d6b38
commit 5fbaae2bb3
1 changed files with 2 additions and 1 deletions

View File

@ -846,6 +846,7 @@ prop_getBracedReference8 = getBracedReference "foo-bar" == "foo"
prop_getBracedReference9 = getBracedReference "foo:-bar" == "foo" prop_getBracedReference9 = getBracedReference "foo:-bar" == "foo"
prop_getBracedReference10= getBracedReference "foo: -1" == "foo" prop_getBracedReference10= getBracedReference "foo: -1" == "foo"
prop_getBracedReference11= getBracedReference "!os*" == "" prop_getBracedReference11= getBracedReference "!os*" == ""
prop_getBracedReference11b= getBracedReference "!os@" == ""
prop_getBracedReference12= getBracedReference "!os?bar**" == "" prop_getBracedReference12= getBracedReference "!os?bar**" == ""
prop_getBracedReference13= getBracedReference "foo[bar]" == "foo" prop_getBracedReference13= getBracedReference "foo[bar]" == "foo"
getBracedReference s = fromMaybe s $ getBracedReference s = fromMaybe s $
@ -864,7 +865,7 @@ getBracedReference s = fromMaybe s $
nameExpansion ('!':next:rest) = do -- e.g. ${!foo*bar*} nameExpansion ('!':next:rest) = do -- e.g. ${!foo*bar*}
guard $ isVariableChar next -- e.g. ${!@} guard $ isVariableChar next -- e.g. ${!@}
first <- find (not . isVariableChar) rest first <- find (not . isVariableChar) rest
guard $ first `elem` "*?" guard $ first `elem` "*?@"
return "" return ""
nameExpansion _ = Nothing nameExpansion _ = Nothing