Merge pull request #947 from layus/fix-path-slash
Improve error message on trailing path slashes
This commit is contained in:
		
						commit
						ae71895f55
					
				
					 2 changed files with 18 additions and 4 deletions
				
			
		|  | @ -87,8 +87,8 @@ static Expr * unescapeStr(SymbolTable & symbols, const char * s) | |||
| ID          [a-zA-Z\_][a-zA-Z0-9\_\'\-]* | ||||
| INT         [0-9]+ | ||||
| FLOAT       (([1-9][0-9]*\.[0-9]*)|(0?\.[0-9]+))([Ee][+-]?[0-9]+)? | ||||
| PATH        [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+ | ||||
| HPATH       \~(\/[a-zA-Z0-9\.\_\-\+]+)+ | ||||
| PATH        [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+\/? | ||||
| HPATH       \~(\/[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\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']+ | ||||
| 
 | ||||
|  | @ -182,8 +182,16 @@ or          { return OR_KW; } | |||
| 
 | ||||
| <INITIAL,INSIDE_DOLLAR_CURLY>{ | ||||
| 
 | ||||
| {PATH}      { yylval->path = strdup(yytext); return PATH; } | ||||
| {HPATH}     { yylval->path = strdup(yytext); return HPATH; } | ||||
| {PATH}      { if (yytext[yyleng-1] == '/') | ||||
|                   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; } | ||||
| {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…
	
	Add table
		Add a link
		
	
		Reference in a new issue