parser, checker: correct error message for a fixed array size using a non constant (fix #13219) (#13228)
							parent
							
								
									5143837d66
								
							
						
					
					
						commit
						d553071e65
					
				| 
						 | 
					@ -163,7 +163,7 @@ pub fn (mut c Checker) array_init(mut node ast.ArrayInit) ast.Type {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else {
 | 
								else {
 | 
				
			||||||
				c.error('expecting `int` for fixed size', node.pos)
 | 
									c.error('fixed array size cannot use non-constant value', init_expr.position())
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if fixed_size <= 0 {
 | 
							if fixed_size <= 0 {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,8 @@ pub fn (mut p Parser) parse_array_type(expecting token.Kind) ast.Type {
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				else {
 | 
									else {
 | 
				
			||||||
					p.error('expecting `int` for fixed size')
 | 
										p.error_with_pos('fixed array size cannot use non-constant value',
 | 
				
			||||||
 | 
											size_expr.position())
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					vlib/v/parser/tests/fixed_array_size_using_non_constant_err.vv:9:25: error: fixed array size cannot use non-constant value
 | 
				
			||||||
 | 
					    7 |     println(typeof(t.len).name)
 | 
				
			||||||
 | 
					    8 |
 | 
				
			||||||
 | 
					    9 |     mut score := [t.len][t.len]int{}
 | 
				
			||||||
 | 
					      |                            ~~~
 | 
				
			||||||
 | 
					   10 | }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					module main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn main() {
 | 
				
			||||||
 | 
						mut t := [0, 0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						println(t.len)
 | 
				
			||||||
 | 
						println(typeof(t.len).name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mut score := [t.len][t.len]int{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue