cgen: autofree scope var position fixes
							parent
							
								
									6245876806
								
							
						
					
					
						commit
						612fe1b8fb
					
				| 
						 | 
					@ -622,11 +622,16 @@ fn (mut g Gen) stmts(stmts []ast.Stmt) {
 | 
				
			||||||
		g.write('')
 | 
							g.write('')
 | 
				
			||||||
		g.write(')')
 | 
							g.write(')')
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if g.pref.autofree && g.pref.experimental && stmts.len > 0 {
 | 
						if g.pref.autofree && g.pref.experimental && !g.inside_vweb_tmpl && stmts.len > 0 {
 | 
				
			||||||
		stmt := stmts[stmts.len - 1]
 | 
							// use the first stmt to get the scope
 | 
				
			||||||
 | 
							stmt := stmts[0]
 | 
				
			||||||
 | 
							// stmt := stmts[stmts.len-1]
 | 
				
			||||||
		if stmt !is ast.FnDecl {
 | 
							if stmt !is ast.FnDecl {
 | 
				
			||||||
			// g.writeln('// autofree scope')
 | 
								// g.writeln('// autofree scope')
 | 
				
			||||||
			g.autofree_scope_vars(stmt.position().pos)
 | 
								// g.writeln('// autofree_scope_vars($stmt.position().pos) | ${typeof(stmt)}')
 | 
				
			||||||
 | 
								// go back 1 position is important so we dont get the 
 | 
				
			||||||
 | 
								// internal scope of for loops and possibly other nodes
 | 
				
			||||||
 | 
								g.autofree_scope_vars(stmt.position().pos-1)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1586,9 +1591,9 @@ fn (g &Gen) autofree_var_call(free_fn_name string, v ast.Var) {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if v.typ.is_ptr() {
 | 
						if v.typ.is_ptr() {
 | 
				
			||||||
		g.writeln('\t${free_fn_name}($v.name); // autofreed ptr var')
 | 
							g.writeln('\t${free_fn_name}(${c_name(v.name)}); // autofreed ptr var')
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		g.writeln('\t${free_fn_name}(&$v.name); // autofreed var')
 | 
							g.writeln('\t${free_fn_name}(&${c_name(v.name)}); // autofreed var')
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue