v: fix `[if debug] fn abc(){} ... abc()`
							parent
							
								
									c15de57f0f
								
							
						
					
					
						commit
						64bc2fb40a
					
				|  | @ -319,6 +319,7 @@ pub: | |||
| 	is_manualfree   bool // true, when [manualfree] is used on a fn
 | ||||
| 	is_main         bool // true for `fn main()`
 | ||||
| 	is_test         bool // true for `fn test_abcde`
 | ||||
| 	is_conditional  bool // true for `[if abc] fn abc(){}`
 | ||||
| 	receiver        Field | ||||
| 	receiver_pos    token.Position // `(u User)` in `fn (u User) name()` position
 | ||||
| 	is_method       bool | ||||
|  |  | |||
|  | @ -171,6 +171,7 @@ fn (mut p Parser) fn_decl() ast.FnDecl { | |||
| 	is_manualfree := p.is_manualfree || p.attrs.contains('manualfree') | ||||
| 	is_deprecated := p.attrs.contains('deprecated') | ||||
| 	is_direct_arr := p.attrs.contains('direct_array_access') | ||||
| 	is_conditional, conditional_ctdefine := p.attrs.has_comptime_define() | ||||
| 	mut is_unsafe := p.attrs.contains('unsafe') | ||||
| 	is_pub := p.tok.kind == .key_pub | ||||
| 	if is_pub { | ||||
|  | @ -331,6 +332,8 @@ fn (mut p Parser) fn_decl() ast.FnDecl { | |||
| 			is_unsafe: is_unsafe | ||||
| 			is_main: is_main | ||||
| 			is_test: is_test | ||||
| 			is_conditional: is_conditional | ||||
| 			ctdefine: conditional_ctdefine | ||||
| 			no_body: no_body | ||||
| 			mod: p.mod | ||||
| 			attrs: p.attrs | ||||
|  | @ -358,6 +361,8 @@ fn (mut p Parser) fn_decl() ast.FnDecl { | |||
| 			is_unsafe: is_unsafe | ||||
| 			is_main: is_main | ||||
| 			is_test: is_test | ||||
| 			is_conditional: is_conditional | ||||
| 			ctdefine: conditional_ctdefine | ||||
| 			no_body: no_body | ||||
| 			mod: p.mod | ||||
| 			attrs: p.attrs | ||||
|  | @ -397,6 +402,7 @@ fn (mut p Parser) fn_decl() ast.FnDecl { | |||
| 		is_variadic: is_variadic | ||||
| 		is_main: is_main | ||||
| 		is_test: is_test | ||||
| 		is_conditional: is_conditional | ||||
| 		receiver: ast.Field{ | ||||
| 			name: rec.name | ||||
| 			typ: rec.typ | ||||
|  |  | |||
|  | @ -451,6 +451,9 @@ pub fn parse_args(known_external_commands []string, args []string) (&Preferences | |||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	if res.is_debug { | ||||
| 		parse_define(mut res, 'debug') | ||||
| 	} | ||||
| 	// res.use_cache = true
 | ||||
| 	if command != 'doc' && res.out_name.ends_with('.v') { | ||||
| 		eprintln('Cannot save output binary in a .v file.') | ||||
|  |  | |||
|  | @ -47,3 +47,12 @@ pub fn (attrs []Attr) contains(str string) bool { | |||
| 	} | ||||
| 	return false | ||||
| } | ||||
| 
 | ||||
| pub fn (attrs []Attr) has_comptime_define() (bool, string) { | ||||
| 	for a in attrs { | ||||
| 		if a.is_comptime_define { | ||||
| 			return true, a.name | ||||
| 		} | ||||
| 	} | ||||
| 	return false, '' | ||||
| } | ||||
|  |  | |||
|  | @ -32,12 +32,13 @@ pub: | |||
| 	language       Language | ||||
| 	generic_names  []string | ||||
| 	is_pub         bool | ||||
| 	is_deprecated  bool | ||||
| 	is_unsafe      bool | ||||
| 	is_deprecated  bool // `[deprecated] fn abc(){}`
 | ||||
| 	is_unsafe      bool // `[unsafe] fn abc(){}`
 | ||||
| 	is_placeholder bool | ||||
| 	is_main        bool | ||||
| 	is_test        bool | ||||
| 	no_body        bool | ||||
| 	is_main        bool // `fn main(){}`
 | ||||
| 	is_test        bool // `fn test_abc(){}`
 | ||||
| 	is_conditional bool // `[if abc]fn(){}`
 | ||||
| 	no_body        bool // a pure declaration like `fn abc(x int)`; used in .vh files, C./JS. fns.
 | ||||
| 	mod            string | ||||
| 	ctdefine       string // compile time define. "myflag", when [if myflag] tag
 | ||||
| 	attrs          []Attr | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue