require `unsafe` for dereferencing
							parent
							
								
									c7f3413d70
								
							
						
					
					
						commit
						fdf6682254
					
				| 
						 | 
					@ -1441,7 +1441,9 @@ fn (p mut Parser) dispatch_generic_fn_instance(f mut Fn, ti TypeInst) {
 | 
				
			||||||
	p.cgen.tmp_line = ''
 | 
						p.cgen.tmp_line = ''
 | 
				
			||||||
	p.cgen.cur_line = ''
 | 
						p.cgen.cur_line = ''
 | 
				
			||||||
	p.cgen.lines = []string
 | 
						p.cgen.lines = []string
 | 
				
			||||||
 | 
						unsafe { // TODO
 | 
				
			||||||
		p.cur_fn = *f
 | 
							p.cur_fn = *f
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	for arg in f.args {
 | 
						for arg in f.args {
 | 
				
			||||||
		p.register_var(arg)
 | 
							p.register_var(arg)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1481,6 +1481,10 @@ fn (p mut Parser) get_var_type(name string, is_ptr bool, is_deref bool) string {
 | 
				
			||||||
	mut typ := p.var_expr(v)
 | 
						mut typ := p.var_expr(v)
 | 
				
			||||||
	// *var
 | 
						// *var
 | 
				
			||||||
	if is_deref {
 | 
						if is_deref {
 | 
				
			||||||
 | 
							if !p.inside_unsafe {
 | 
				
			||||||
 | 
								p.warn('dereferencing can only be done inside an `unsafe` block')
 | 
				
			||||||
 | 
							}	
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		if !typ.contains('*') && !typ.ends_with('ptr') {
 | 
							if !typ.contains('*') && !typ.ends_with('ptr') {
 | 
				
			||||||
			println('name="$name", t=$v.typ')
 | 
								println('name="$name", t=$v.typ')
 | 
				
			||||||
			p.error('dereferencing requires a pointer, but got `$typ`')
 | 
								p.error('dereferencing requires a pointer, but got `$typ`')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,8 +22,10 @@ fn C.rand() int
 | 
				
			||||||
 * @return a value between 0 and C.RAND_MAX (inclusive)
 | 
					 * @return a value between 0 and C.RAND_MAX (inclusive)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
pub fn rand_r(seed &int) int {
 | 
					pub fn rand_r(seed &int) int {
 | 
				
			||||||
 | 
						unsafe {
 | 
				
			||||||
	mut rs := seed
 | 
						mut rs := seed
 | 
				
			||||||
	ns := ( *rs * 1103515245 + 12345 )
 | 
						ns := ( *rs * 1103515245 + 12345 )
 | 
				
			||||||
	*rs = ns
 | 
						*rs = ns
 | 
				
			||||||
	return ns & 0x7fffffff
 | 
						return ns & 0x7fffffff
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue