@@ -1870,7 +1870,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags,
18701870 * these later on, too.
18711871 */
18721872 c = * s ;
1873- if (itype_end (s , IIDENT , 1 ) == s && * s != '#' && c != Pound &&
1873+ if (itype_end (s , INAMESPC , 1 ) == s && * s != '#' && c != Pound &&
18741874 !IS_DASH (c ) &&
18751875 c != '!' && c != '$' && c != String && c != Qstring &&
18761876 c != '?' && c != Quest &&
@@ -2332,7 +2332,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags,
23322332 }
23332333 } else if ((c == '#' || c == Pound ) &&
23342334 (inbrace || !isset (POSIXIDENTIFIERS )) &&
2335- (itype_end (s + 1 , IIDENT , 0 ) != s + 1
2335+ (itype_end (s + 1 , INAMESPC , 0 ) != s + 1
23362336 || (cc = s [1 ]) == '*' || cc == Star || cc == '@'
23372337 || cc == '?' || cc == Quest
23382338 || cc == '$' || cc == String || cc == Qstring
@@ -2369,8 +2369,9 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags,
23692369 * Try to handle this when parameter is named
23702370 * by (P) (second part of test).
23712371 */
2372- if (itype_end (s + 1 , IIDENT , 0 ) != s + 1 || (aspar && isstring (s [1 ]) &&
2373- (s [2 ] == Inbrace || s [2 ] == Inpar )))
2372+ if (itype_end (s + 1 , INAMESPC , 0 ) != s + 1 ||
2373+ (aspar && isstring (s [1 ]) &&
2374+ (s [2 ] == Inbrace || s [2 ] == Inpar )))
23742375 chkset = 1 , s ++ ;
23752376 else if (!inbrace ) {
23762377 /* Special case for `$+' on its own --- leave unmodified */
@@ -2531,6 +2532,8 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags,
25312532 scanflags |= SCANPM_DQUOTED ;
25322533 if (chkset )
25332534 scanflags |= SCANPM_CHECKING ;
2535+ if (!inbrace )
2536+ scanflags |= SCANPM_NONAMESPC ;
25342537 /*
25352538 * Second argument: decide whether to use the subexpression or
25362539 * the string next on the line as the parameter name.
@@ -3211,7 +3214,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags,
32113214 shortest = 0 ;
32123215 ++ s ;
32133216 }
3214- if (* itype_end (s , IIDENT , 0 )) {
3217+ if (* itype_end (s , INAMESPC , 0 )) {
32153218 untokenize (s );
32163219 zerr ("not an identifier: %s" , s );
32173220 return NULL ;
@@ -3271,7 +3274,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags,
32713274 int intersect = (* s == '*' || * s == Star );
32723275 char * * compare , * * ap , * * apsrc ;
32733276 ++ s ;
3274- if (* itype_end (s , IIDENT , 0 )) {
3277+ if (* itype_end (s , INAMESPC , 0 )) {
32753278 untokenize (s );
32763279 zerr ("not an identifier: %s" , s );
32773280 return NULL ;
0 commit comments