Skip to content

Commit fa94131

Browse files
* Simplification of the syntax from "@platform feature <feature_id><feature_type>" to "@platform feature<feature_id>::<feature_type>”.
* Improved error handling of the @platform macro.
1 parent 33d57f6 commit fa94131

2 files changed

Lines changed: 37 additions & 32 deletions

File tree

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "PlatformAware"
22
uuid = "e7c50b67-2c03-471e-9cf2-69e515d86ecf"
33
authors = ["Francisco Heron de Carvalho Junior <heron@dc.ufc.br> and contributors"]
4-
version = "0.5.0"
4+
version = "0.5.1"
55

66
[deps]
77
AbstractTrees = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"

src/platform.jl

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ function include_platform_feature!(f)
191191
keys(state.platform_feature)
192192
end
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[]
251255
end
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

Comments
 (0)