Open
Description
LLVM.jl currently defines and exports many getter methods with lots of simple functionality:
export DILocation, line, column, scope, inlined_at
"""
DILocation
A location in the source code.
"""
@checked struct DILocation <: MDNode
ref::API.LLVMMetadataRef
end
register(DILocation, API.LLVMDILocationMetadataKind)
"""
line(location::DILocation)
Get the line number of the given location.
"""
line(location::DILocation) = Int(API.LLVMDILocationGetLine(location))
"""
column(location::DILocation)
Get the column number of the given location.
"""
column(location::DILocation) = Int(API.LLVMDILocationGetColumn(location))
"""
scope(location::DILocation)
Get the scope of the given location.
"""
function scope(location::DILocation)
ref = API.LLVMDILocationGetScope(location)
ref == C_NULL ? nothing : Metadata(ref)::DIScope
end
"""
inlined_at(location::DILocation)
Get the location where the given location was inlined.
"""
function inlined_at(location::DILocation)
ref = API.LLVMDILocationGetInlinedAt(location)
ref == C_NULL ? nothing : Metadata(ref)::DILocation
end
This is pretty polluting from a namespace perspective. I wonder if we should move some of these into getproperty
/setproperty!
methods?