fix(tvix/eval): ' is allowed in nonfirst position in Nix identifiers
With this is_valid_nix_identifier should line up with the upstream lexer
definition:
    ID          [a-zA-Z\_][a-zA-Z0-9\_\'\-]*
While we're working on this, add a simple test checking the various
formatting rules. Interestingly, it would not be suitable as an identity
test, since you have to write
    { "assert" = null; }
in order to avoid an evaluation error, but C++ Nix is happy to print
this as
    { assert = null; }
– maybe should be considered to be a bug.
Change-Id: I0a4e1ccb5033a80f3767fb8d1c4bba08d303c5d8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7744
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
			
			
This commit is contained in:
		
							parent
							
								
									3d238c350b
								
							
						
					
					
						commit
						9b8ba915c8
					
				
					 3 changed files with 32 additions and 1 deletions
				
			
		|  | @ -0,0 +1 @@ | |||
| { "'quoted'" = false; "-20°" = false; "2normal" = false; "45 44 43-'3 2 1" = false; "9front" = false; Very2Normal = true; VeryNormal = true; _'12 = true; "_'12.5" = false; __internal = true; _internal = true; abort = true; assert = true; "attr.path" = false; false = true; foldl' = true; normal = true; normal2 = true; null = true; or = true; throw = true; true = true; x = true; x' = true; x'' = true; "😀" = false; } | ||||
|  | @ -0,0 +1,30 @@ | |||
| { | ||||
|   __internal = true; | ||||
|   _internal = true; | ||||
|   normal = true; | ||||
|   VeryNormal = true; | ||||
|   normal2 = true; | ||||
|   Very2Normal = true; | ||||
|   _'12 = true; | ||||
|   foldl' = true; | ||||
|   x = true; | ||||
|   x' = true; | ||||
|   x'' = true; | ||||
| 
 | ||||
|   true = true; | ||||
|   false = true; | ||||
|   null = true; | ||||
|   or = true; | ||||
|   "assert" = true; # -ish | ||||
|   throw = true; | ||||
|   abort = true; | ||||
| 
 | ||||
|   "9front" = false; | ||||
|   "2normal" = false; | ||||
|   "-20°" = false; | ||||
|   "45 44 43-'3 2 1" = false; | ||||
|   "attr.path" = false; | ||||
|   "'quoted'" = false; | ||||
|   "_'12.5" = false; | ||||
|   "😀" = false; | ||||
| } | ||||
|  | @ -168,7 +168,7 @@ fn is_valid_nix_identifier(s: &str) -> bool { | |||
|     } | ||||
|     for c in chars { | ||||
|         match c { | ||||
|             'a'..='z' | 'A'..='Z' | '0'..='9' | '_' | '-' => (), | ||||
|             'a'..='z' | 'A'..='Z' | '0'..='9' | '_' | '-' | '\'' => (), | ||||
|             _ => return false, | ||||
|         } | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue