mirror of
				https://github.com/vlang/v.git
				synced 2023-08-10 21:13:21 +03:00 
			
		
		
		
	cgen: fix match expr with optional (#15658)
This commit is contained in:
		@@ -28,7 +28,7 @@ fn (mut g Gen) need_tmp_var_in_match(node ast.MatchExpr) bool {
 | 
				
			|||||||
			if branch.stmts.len == 1 {
 | 
								if branch.stmts.len == 1 {
 | 
				
			||||||
				if branch.stmts[0] is ast.ExprStmt {
 | 
									if branch.stmts[0] is ast.ExprStmt {
 | 
				
			||||||
					stmt := branch.stmts[0] as ast.ExprStmt
 | 
										stmt := branch.stmts[0] as ast.ExprStmt
 | 
				
			||||||
					if stmt.expr in [ast.CallExpr, ast.IfExpr, ast.MatchExpr]
 | 
										if stmt.expr in [ast.CallExpr, ast.IfExpr, ast.MatchExpr, ast.StructInit]
 | 
				
			||||||
						|| (stmt.expr is ast.IndexExpr
 | 
											|| (stmt.expr is ast.IndexExpr
 | 
				
			||||||
						&& (stmt.expr as ast.IndexExpr).or_expr.kind != .absent) {
 | 
											&& (stmt.expr as ast.IndexExpr).or_expr.kind != .absent) {
 | 
				
			||||||
						return true
 | 
											return true
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								vlib/v/tests/match_expr_with_struct_init_test.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vlib/v/tests/match_expr_with_struct_init_test.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					struct Test {
 | 
				
			||||||
 | 
						a string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn test_match_expr_with_struct_init() {
 | 
				
			||||||
 | 
						a := map[string]string{}
 | 
				
			||||||
 | 
						b := match 'test' {
 | 
				
			||||||
 | 
							'test' {
 | 
				
			||||||
 | 
								Test{a['test'] or { '' }}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else {
 | 
				
			||||||
 | 
								Test{''}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						println(b)
 | 
				
			||||||
 | 
						assert b.a == ''
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user