forked from lix-project/lix
Merge pull request #947 from layus/fix-path-slash
Improve error message on trailing path slashes
This commit is contained in:
commit
ae71895f55
|
@ -87,8 +87,8 @@ static Expr * unescapeStr(SymbolTable & symbols, const char * s)
|
||||||
ID [a-zA-Z\_][a-zA-Z0-9\_\'\-]*
|
ID [a-zA-Z\_][a-zA-Z0-9\_\'\-]*
|
||||||
INT [0-9]+
|
INT [0-9]+
|
||||||
FLOAT (([1-9][0-9]*\.[0-9]*)|(0?\.[0-9]+))([Ee][+-]?[0-9]+)?
|
FLOAT (([1-9][0-9]*\.[0-9]*)|(0?\.[0-9]+))([Ee][+-]?[0-9]+)?
|
||||||
PATH [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+
|
PATH [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+\/?
|
||||||
HPATH \~(\/[a-zA-Z0-9\.\_\-\+]+)+
|
HPATH \~(\/[a-zA-Z0-9\.\_\-\+]+)+\/?
|
||||||
SPATH \<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\>
|
SPATH \<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\>
|
||||||
URI [a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']+
|
URI [a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']+
|
||||||
|
|
||||||
|
@ -182,8 +182,16 @@ or { return OR_KW; }
|
||||||
|
|
||||||
<INITIAL,INSIDE_DOLLAR_CURLY>{
|
<INITIAL,INSIDE_DOLLAR_CURLY>{
|
||||||
|
|
||||||
{PATH} { yylval->path = strdup(yytext); return PATH; }
|
{PATH} { if (yytext[yyleng-1] == '/')
|
||||||
{HPATH} { yylval->path = strdup(yytext); return HPATH; }
|
throw ParseError(format("Invalid path '%1%'; trailing slashes are not allowed in paths") % yytext);
|
||||||
|
yylval->path = strdup(yytext);
|
||||||
|
return PATH;
|
||||||
|
}
|
||||||
|
{HPATH} { if (yytext[yyleng-1] == '/')
|
||||||
|
throw ParseError(format("Invalid path '%1%'; trailing slashes are not allowed in paths") % yytext);
|
||||||
|
yylval->path = strdup(yytext);
|
||||||
|
return HPATH;
|
||||||
|
}
|
||||||
{SPATH} { yylval->path = strdup(yytext); return SPATH; }
|
{SPATH} { yylval->path = strdup(yytext); return SPATH; }
|
||||||
{URI} { yylval->uri = strdup(yytext); return URI; }
|
{URI} { yylval->uri = strdup(yytext); return URI; }
|
||||||
|
|
||||||
|
|
6
tests/lang/eval-fail-path-slash.nix
Normal file
6
tests/lang/eval-fail-path-slash.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# Trailing slashes in paths are not allowed.
|
||||||
|
# This restriction could be lifted sometime,
|
||||||
|
# for example if we make '/' a path concatenation operator.
|
||||||
|
# See https://github.com/NixOS/nix/issues/1138
|
||||||
|
# and http://lists.science.uu.nl/pipermail/nix-dev/2016-June/020829.html
|
||||||
|
/nix/store/
|
Loading…
Reference in a new issue