parser: use the `[has_globals]` module attribute, remove the parser `global_enabled_mods whitelist` (part 2)
							parent
							
								
									f0f5f97e9f
								
							
						
					
					
						commit
						045579fd8a
					
				|  | @ -1,6 +1,7 @@ | ||||||
| // Copyright (c) 2019-2021 Alexander Medvednikov. All rights reserved.
 | // Copyright (c) 2019-2021 Alexander Medvednikov. All rights reserved.
 | ||||||
| // Use of this source code is governed by an MIT license
 | // Use of this source code is governed by an MIT license
 | ||||||
| // that can be found in the LICENSE file.
 | // that can be found in the LICENSE file.
 | ||||||
|  | [has_globals] | ||||||
| module rand | module rand | ||||||
| 
 | 
 | ||||||
| import rand.config | import rand.config | ||||||
|  | @ -35,9 +36,7 @@ mut: | ||||||
| 	free() | 	free() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| __global ( | __global default_rng &PRNG | ||||||
| 	default_rng &PRNG |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| // new_default returns a new instance of the default RNG. If the seed is not provided, the current time will be used to seed the instance.
 | // new_default returns a new instance of the default RNG. If the seed is not provided, the current time will be used to seed the instance.
 | ||||||
| [manualfree] | [manualfree] | ||||||
|  |  | ||||||
|  | @ -45,8 +45,8 @@ pub fn (mut rng SplitMix64RNG) u32() u32 { | ||||||
| pub fn (mut rng SplitMix64RNG) u64() u64 { | pub fn (mut rng SplitMix64RNG) u64() u64 { | ||||||
| 	rng.state += (0x9e3779b97f4a7c15) | 	rng.state += (0x9e3779b97f4a7c15) | ||||||
| 	mut z := rng.state | 	mut z := rng.state | ||||||
| 	z = (z ^ ((z >> u64(30)))) * (0xbf58476d1ce4e5b9) | 	z = (z ^ (z >> u64(30))) * 0xbf58476d1ce4e5b9 | ||||||
| 	z = (z ^ ((z >> u64(27)))) * (0x94d049bb133111eb) | 	z = (z ^ (z >> u64(27))) * 0x94d049bb133111eb | ||||||
| 	return z ^ (z >> (31)) | 	return z ^ (z >> (31)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,3 +1,4 @@ | ||||||
|  | [has_globals] | ||||||
| module sapp | module sapp | ||||||
| 
 | 
 | ||||||
| import sokol.gfx | import sokol.gfx | ||||||
|  | @ -5,9 +6,7 @@ import sokol.gfx | ||||||
| pub const used_import = gfx.used_import | pub const used_import = gfx.used_import | ||||||
| 
 | 
 | ||||||
| // Android needs a global reference to `g_desc`
 | // Android needs a global reference to `g_desc`
 | ||||||
| __global ( | __global g_desc C.sapp_desc | ||||||
| 	g_desc C.sapp_desc |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| pub fn create_desc() C.sg_desc { | pub fn create_desc() C.sg_desc { | ||||||
| 	metal_desc := C.sg_metal_context_desc{ | 	metal_desc := C.sg_metal_context_desc{ | ||||||
|  |  | ||||||
|  | @ -3074,14 +3074,10 @@ fn (mut p Parser) return_stmt() ast.Return { | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // TODO: remove this whitelist of modules which allow globals by default
 |  | ||||||
| const global_enabled_mods = ['rand', 'sokol.sapp'] |  | ||||||
| 
 |  | ||||||
| // left hand side of `=` or `:=` in `a,b,c := 1,2,3`
 | // left hand side of `=` or `:=` in `a,b,c := 1,2,3`
 | ||||||
| fn (mut p Parser) global_decl() ast.GlobalDecl { | fn (mut p Parser) global_decl() ast.GlobalDecl { | ||||||
| 	if !p.has_globals && !p.pref.enable_globals && !p.pref.is_fmt && !p.pref.translated | 	if !p.has_globals && !p.pref.enable_globals && !p.pref.is_fmt && !p.pref.translated | ||||||
| 		&& !p.pref.is_livemain && !p.pref.building_v && !p.builtin_mod | 		&& !p.pref.is_livemain && !p.pref.building_v && !p.builtin_mod { | ||||||
| 		&& p.mod !in parser.global_enabled_mods { |  | ||||||
| 		p.error('use `v -enable-globals ...` to enable globals') | 		p.error('use `v -enable-globals ...` to enable globals') | ||||||
| 		return ast.GlobalDecl{} | 		return ast.GlobalDecl{} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue