Skip to content

Commit 59c73fe

Browse files
committed
Fix lcmtype macro to avoid precompilation issues in BotCoreLCMTypes.
1 parent 82b1864 commit 59c73fe

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

src/lcmtype.jl

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -402,39 +402,39 @@ macro lcmtypesetup(lcmt, dimensioninfos...)
402402
dims = dimensioninfo.args[3].args
403403
quote
404404
let dimtuple = tuple($(LCMCore.makedim.(dims)...))
405-
LCMCore.dimensions(::Type{$lcmt}, ::Val{$(QuoteNode(vecfieldname))}) = dimtuple
405+
LCMCore.dimensions(::Type{$(esc(lcmt))}, ::Val{$(QuoteNode(vecfieldname))}) = dimtuple
406406
end
407407
end
408408
end
409409

410410
# LCMCore.dimensions methods for constant dimensions
411-
makeconstdimmethods = :(LCMCore.make_fixed_dimensions_methods($lcmt))
411+
makeconstdimmethods = quote
412+
let T = $(esc(lcmt))
413+
for field in fieldnames(T)
414+
F = fieldtype(T, field)
415+
if F <: Array
416+
# skip
417+
elseif F <: StaticArray
418+
let dimtuple = LCMCore.makedim.(size(F))
419+
LCMCore.dimensions(::Type{T}, ::Val{field}) = dimtuple
420+
end
421+
else
422+
LCMCore.dimensions(::Type{T}, ::Val{field}) = ()
423+
end
424+
end
425+
end
426+
end
412427

413428
# LCMCore.fingerprint method
414429
fingerprint = quote
415-
let hash = reinterpret(Int64, LCMCore.computehash($lcmt, DataType[]))
416-
LCMCore.fingerprint(::Type{$lcmt}) = hash
430+
let hash = reinterpret(Int64, LCMCore.computehash($(esc(lcmt)), DataType[]))
431+
LCMCore.fingerprint(::Type{$(esc(lcmt))}) = hash
417432
end
418433
end
419434

420-
esc(quote
435+
quote
421436
$(vardimmethods...)
422437
$makeconstdimmethods
423438
$fingerprint
424-
end)
425-
end
426-
427-
function make_fixed_dimensions_methods(::Type{T}) where T<:LCMType
428-
for field in fieldnames(T)
429-
F = fieldtype(T, field)
430-
if F <: Array
431-
# skip
432-
elseif F <: StaticArray
433-
@eval let dimtuple = LCMCore.makedim.(size($F))
434-
LCMCore.dimensions(::Type{$T}, ::Val{$(QuoteNode(field))}) = dimtuple
435-
end
436-
else
437-
@eval LCMCore.dimensions(::Type{$T}, ::Val{$(QuoteNode(field))}) = ()
438-
end
439439
end
440440
end

0 commit comments

Comments
 (0)