@@ -191,7 +191,7 @@ function include_platform_feature!(f)
191191 keys (state. platform_feature)
192192end
193193
194- function platform_parameter_macro! (f, x )
194+ function platform_parameter_macro! (f)
195195 if (f == :clear )
196196 empty_platform_feature! ()
197197 elseif (f == :all )
@@ -200,12 +200,16 @@ function platform_parameter_macro!(f, x)
200200 reset_platform_feature! ()
201201 elseif (f == :default )
202202 default_platform_feature! ()
203- elseif ( isnothing (x))
203+ elseif typeof (f) == Symbol
204204 check_all (f)
205205 include_platform_feature! (f)
206- else
206+ elseif f. head == :(:: )
207+ x = f. args[2 ]
208+ f = f. args[1 ]
207209 check_all (f)
208210 update_platform_feature! (f,getFeature (f, string (x), state. platform_feature_default_all))
211+ else
212+ platform_syntax_message ()
209213 end
210214 end
211215
@@ -250,35 +254,36 @@ function getaddparameter()
250254 return can_add_parameter[]
251255end
252256
253- macro platform (t,f)
254- if (t == :default )
255- # @platform default creates an entry function, called from outside, and a (default) kernel function
256- denyaddparameter! ()
257- e = build_entry_function (f)
258- k = build_kernel_function (f)
259- return esc (:($ e;$ k))
260- # return k
261- elseif (t == :aware )
262- denyaddparameter! ()
263- return esc (build_kernel_function (f))
264- elseif ((t == :parameter || t == :feature ) && getaddparameter ())
265- platform_parameter_macro! (f, nothing )
266- elseif ((t == :parameter || t == :feature ) && ! getaddparameter ())
267- @info " cannot add parameters after including the first kernel method"
268- elseif (t == :assumption )
269- assumptions_dict[][f. args[1 ]] = f. args[2 ]
270- return nothing
271- else
272- platform_syntax_message ()
273- end
274- end
257+ macro platform (t, f, ff... )
275258
276- macro platform (t,f,x)
277- if ((t == :parameter || t == :feature ) && getaddparameter ())
278- platform_parameter_macro! (f,x)
279- elseif ((t == :parameter || t == :feature ) && ! getaddparameter ())
280- @info " cannot add parameters after including the first kernel method"
281- else
259+ try
260+ if (length (ff) > 0 )
261+ platform_syntax_message ()
262+ return
263+ end
264+
265+ if (t == :default )
266+ # @platform default creates an entry function, called from outside, and a (default) kernel function
267+ denyaddparameter! ()
268+ e = build_entry_function (f)
269+ k = build_kernel_function (f)
270+ return esc (:($ e;$ k))
271+ # return k
272+ elseif (t == :aware )
273+ denyaddparameter! ()
274+ return esc (build_kernel_function (f))
275+ elseif ((t == :parameter || t == :feature ) && getaddparameter ())
276+ platform_parameter_macro! (f)
277+ elseif ((t == :parameter || t == :feature ) && ! getaddparameter ())
278+ @info " cannot add parameters after including the first kernel method"
279+ elseif (t == :assumption )
280+ assumptions_dict[][f. args[1 ]] = f. args[2 ]
281+ return nothing
282+ else
283+ platform_syntax_message ()
284+ end
285+ catch e
286+ @error e
282287 platform_syntax_message ()
283288 end
284289 end
0 commit comments