checker: disallow array sort with fancy args for now (#11388)
							parent
							
								
									0115a51de4
								
							
						
					
					
						commit
						923ef733c0
					
				|  | @ -2555,6 +2555,15 @@ fn (mut c Checker) array_builtin_method_call(mut node ast.CallExpr, left_type as | ||||||
| 				} else if left_name == right_name { | 				} else if left_name == right_name { | ||||||
| 					c.error('`.sort()` cannot use same argument', node.pos) | 					c.error('`.sort()` cannot use same argument', node.pos) | ||||||
| 				} | 				} | ||||||
|  | 				if (node.args[0].expr.left !is ast.Ident | ||||||
|  | 					&& node.args[0].expr.left !is ast.SelectorExpr | ||||||
|  | 					&& node.args[0].expr.left !is ast.IndexExpr) | ||||||
|  | 					|| (node.args[0].expr.right !is ast.Ident | ||||||
|  | 					&& node.args[0].expr.right !is ast.SelectorExpr | ||||||
|  | 					&& node.args[0].expr.right !is ast.IndexExpr) { | ||||||
|  | 					c.error('`.sort()` can only use ident, index or selector as argument, \ne.g. `arr.sort(a < b)`, `arr.sort(a.id < b.id)`, `arr.sort(a[0] < b[0])`', | ||||||
|  | 						node.pos) | ||||||
|  | 				} | ||||||
| 			} else { | 			} else { | ||||||
| 				c.error( | 				c.error( | ||||||
| 					'`.sort()` requires a `<` or `>` comparison as the first and only argument' + | 					'`.sort()` requires a `<` or `>` comparison as the first and only argument' + | ||||||
|  |  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | vlib/v/checker/tests/array_fancy_sort_err.vv:6:8: error: `.sort()` can only use ident, index or selector as argument, | ||||||
|  | e.g. `arr.sort(a < b)`, `arr.sort(a.id < b.id)`, `arr.sort(a[0] < b[0])` | ||||||
|  |     4 |     text := os.read_file(os.args[0]) ? | ||||||
|  |     5 |     mut lines := text.split_into_lines() | ||||||
|  |     6 |     lines.sort(a.split('/').last() < b.split('/').last()) | ||||||
|  |       |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |     7 |     println(lines.join('\n')) | ||||||
|  |     8 | } | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | import os | ||||||
|  | 
 | ||||||
|  | fn main() { | ||||||
|  | 	text := os.read_file(os.args[0]) ? | ||||||
|  | 	mut lines := text.split_into_lines() | ||||||
|  | 	lines.sort(a.split('/').last() < b.split('/').last()) | ||||||
|  | 	println(lines.join('\n')) | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue