https://issues.dlang.org/show_bug.cgi?id=24837
Issue ID: 24837
Summary: Can't version() or static if() to include keys in an
enum
Product: D
Version: D2
Hardware: All
URL: http://dlang.org/
OS: All
Status: NEW
Severity: normal
Priority: P3
Component: dmd
Assignee: [email protected]
Reporter: [email protected]
I'm trying to update some of the WIN32 API bindings in druntime, but a lot of
them have enums, where additional keys have been introduced in different API
versions.
The problem is, we can't have static if() or version() appear inside of lists.
Basically, in order to create correct bindings, I want this to work:
static if (NTDDI_VERSION >= NTDDI_LONGHORN)
{
enum FILE_INFO_BY_HANDLE_CLASS
{
FileBasicInfo,
FileStandardInfo,
FileNameInfo,
FileRenameInfo,
FileDispositionInfo,
FileAllocationInfo,
FileEndOfFileInfo,
FileStreamInfo,
FileCompressionInfo,
FileAttributeTagInfo,
FileIdBothDirectoryInfo,
FileIdBothDirectoryRestartInfo,
FileIoPriorityHintInfo,
FileRemoteProtocolInfo,
FileFullDirectoryInfo,
FileFullDirectoryRestartInfo,
static if (NTDDI_VERSION >= NTDDI_WIN8)
{
FileStorageInfo,
FileAlignmentInfo,
FileIdInfo,
FileIdExtdDirectoryInfo,
FileIdExtdDirectoryRestartInfo,
}
static if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
{
FileDispositionInfoEx,
FileRenameInfoEx,
}
static if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
{
FileCaseSensitiveInfo,
FileNormalizedNameInfo,
}
MaximumFileInfoByHandleClass
}
alias PFILE_INFO_BY_HANDLE_CLASS = FILE_INFO_BY_HANDLE_CLASS*;
}
--