all: volatile globals
							parent
							
								
									0dff050735
								
							
						
					
					
						commit
						3b36f16365
					
				|  | @ -663,6 +663,7 @@ pub: | |||
| 	pos         token.Pos | ||||
| 	typ_pos     token.Pos | ||||
| 	is_markused bool // an explict `[markused]` tag; the global will NOT be removed by `-skip-unused`
 | ||||
| 	is_volatile bool | ||||
| pub mut: | ||||
| 	expr     Expr | ||||
| 	typ      Type | ||||
|  |  | |||
|  | @ -4417,7 +4417,8 @@ fn (mut g Gen) global_decl(node ast.GlobalDecl) { | |||
| 			g.definitions.writeln('$fn_type_name = ${g.table.sym(field.typ).name}; // global2') | ||||
| 			continue | ||||
| 		} | ||||
| 		g.definitions.write_string('$visibility_kw$styp $attributes $field.name') | ||||
| 		modifier := if field.is_volatile { ' volatile ' } else { '' } | ||||
| 		g.definitions.write_string('$visibility_kw$modifier$styp $attributes $field.name') | ||||
| 		if field.has_expr || cinit { | ||||
| 			if g.pref.translated { | ||||
| 				g.definitions.write_string(' = ${g.expr_string(field.expr)}') | ||||
|  |  | |||
|  | @ -3364,6 +3364,10 @@ fn (mut p Parser) global_decl() ast.GlobalDecl { | |||
| 	mut comments := []ast.Comment{} | ||||
| 	for { | ||||
| 		comments = p.eat_comments() | ||||
| 		is_volatile := p.tok.kind == .key_volatile | ||||
| 		if is_volatile { | ||||
| 			p.next() | ||||
| 		} | ||||
| 		if is_block && p.tok.kind == .eof { | ||||
| 			p.error('unexpected eof, expecting `)`') | ||||
| 			return ast.GlobalDecl{} | ||||
|  | @ -3416,6 +3420,7 @@ fn (mut p Parser) global_decl() ast.GlobalDecl { | |||
| 			typ: typ | ||||
| 			comments: comments | ||||
| 			is_markused: is_markused | ||||
| 			is_volatile: is_volatile | ||||
| 		} | ||||
| 		fields << field | ||||
| 		p.table.global_scope.register(field) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue