From d292e47b661dc61fc1396d1a0c85530413a61c64 Mon Sep 17 00:00:00 2001 From: 0-v-0 Date: Wed, 13 May 2026 20:25:19 +0800 Subject: [PATCH] Remove unused import --- std/checkedint.d | 2 +- .../allocator/building_blocks/affix_allocator.d | 1 - .../allocator/building_blocks/aligned_block_list.d | 4 ---- .../allocator/building_blocks/allocator_list.d | 2 -- .../allocator/building_blocks/ascending_page_allocator.d | 2 -- .../allocator/building_blocks/bitmapped_block.d | 3 --- std/experimental/allocator/building_blocks/bucketizer.d | 1 - .../allocator/building_blocks/fallback_allocator.d | 1 - std/experimental/allocator/building_blocks/free_list.d | 3 --- std/experimental/allocator/building_blocks/free_tree.d | 1 - .../allocator/building_blocks/kernighan_ritchie.d | 1 - std/experimental/allocator/building_blocks/quantizer.d | 2 -- std/experimental/allocator/building_blocks/region.d | 3 --- .../allocator/building_blocks/scoped_allocator.d | 1 - std/experimental/allocator/building_blocks/segregator.d | 2 +- .../allocator/building_blocks/stats_collector.d | 2 +- std/experimental/allocator/common.d | 2 +- std/experimental/allocator/package.d | 7 ------- std/experimental/allocator/showcase.d | 1 - 19 files changed, 4 insertions(+), 37 deletions(-) diff --git a/std/checkedint.d b/std/checkedint.d index 284a2c905c4..ac630948cb3 100644 --- a/std/checkedint.d +++ b/std/checkedint.d @@ -269,7 +269,7 @@ if (isIntegral!T || is(T == Checked!(U, H), U, H)) import std.experimental.allocator.common : stateSize; import std.format.spec : FormatSpec; import std.range.primitives : isInputRange, ElementType; - import std.traits : hasMember, isSomeChar; + import std.traits : isSomeChar; /** The type of the integral subject to checking. diff --git a/std/experimental/allocator/building_blocks/affix_allocator.d b/std/experimental/allocator/building_blocks/affix_allocator.d index f569e059663..2a253125e9c 100644 --- a/std/experimental/allocator/building_blocks/affix_allocator.d +++ b/std/experimental/allocator/building_blocks/affix_allocator.d @@ -29,7 +29,6 @@ struct AffixAllocator(Allocator, Prefix, Suffix = void) roundUpToMultipleOf, alignedAt, alignDownTo, roundUpToMultipleOf, hasStaticallyKnownAlignment; import std.math.traits : isPowerOf2; - import std.traits : hasMember; import std.typecons : Ternary; static if (hasStaticallyKnownAlignment!Allocator) diff --git a/std/experimental/allocator/building_blocks/aligned_block_list.d b/std/experimental/allocator/building_blocks/aligned_block_list.d index 55a8c54e2de..f31533b4377 100644 --- a/std/experimental/allocator/building_blocks/aligned_block_list.d +++ b/std/experimental/allocator/building_blocks/aligned_block_list.d @@ -13,7 +13,6 @@ import std.experimental.allocator.building_blocks.null_allocator; // Common function implementation for thread local and shared AlignedBlockList private mixin template AlignedBlockListImpl(bool isShared) { - import std.traits : hasMember; import std.typecons : Ternary; static if (isShared) @@ -313,8 +312,6 @@ struct AlignedBlockList(Allocator, ParentAllocator, ulong theAlignment = (1 << 2 version (StdDdoc) { import std.typecons : Ternary; - import std.traits : hasMember; - /** Returns a chunk of memory of size `n` It finds the first node in the `AlignedBlockNode` list which has available memory, @@ -473,7 +470,6 @@ shared struct SharedAlignedBlockList(Allocator, ParentAllocator, ulong theAlignm version (StdDdoc) { import std.typecons : Ternary; - import std.traits : hasMember; /** Returns a chunk of memory of size `n` diff --git a/std/experimental/allocator/building_blocks/allocator_list.d b/std/experimental/allocator/building_blocks/allocator_list.d index b570ae8edce..51b179e4e98 100644 --- a/std/experimental/allocator/building_blocks/allocator_list.d +++ b/std/experimental/allocator/building_blocks/allocator_list.d @@ -76,7 +76,6 @@ struct AllocatorList(Factory, BookkeepingAllocator = GCAllocator) import core.lifetime : emplace; import std.experimental.allocator.building_blocks.stats_collector : StatsCollector, Options; - import std.traits : hasMember; import std.typecons : Ternary; private enum ouroboros = is(BookkeepingAllocator == NullAllocator); @@ -670,7 +669,6 @@ version (Posix) @system unittest shared struct SharedAllocatorList(Factory, BookkeepingAllocator = GCAllocator) { import std.typecons : Ternary; - import std.traits : hasMember; import core.internal.spinlock : SpinLock; private: diff --git a/std/experimental/allocator/building_blocks/ascending_page_allocator.d b/std/experimental/allocator/building_blocks/ascending_page_allocator.d index bfb78c587e4..9c83ca513c3 100644 --- a/std/experimental/allocator/building_blocks/ascending_page_allocator.d +++ b/std/experimental/allocator/building_blocks/ascending_page_allocator.d @@ -749,8 +749,6 @@ version (StdUnittest) { static void testAlloc(Allocator)(ref Allocator a) @nogc nothrow { - import std.traits : hasMember; - size_t numPages = 5; uint alignment = cast(uint) pageSize; diff --git a/std/experimental/allocator/building_blocks/bitmapped_block.d b/std/experimental/allocator/building_blocks/bitmapped_block.d index c630ed895a2..808fb2ea89a 100644 --- a/std/experimental/allocator/building_blocks/bitmapped_block.d +++ b/std/experimental/allocator/building_blocks/bitmapped_block.d @@ -13,7 +13,6 @@ import std.typecons : Flag, Yes, No; private mixin template BitmappedBlockImpl(bool isShared, bool multiBlock) { import std.conv : text; - import std.traits : hasMember; import std.typecons : Ternary; import std.typecons : tuple, Tuple; @@ -1392,7 +1391,6 @@ struct BitmappedBlock(size_t theBlockSize, uint theAlignment = platformAlignment { // Create a block allocator on top of a 10KB stack region. import std.experimental.allocator.building_blocks.region : InSituRegion; - import std.traits : hasMember; InSituRegion!(10_240, 64) r; auto a = BitmappedBlock!(64, 64)(cast(ubyte[])(r.allocateAll())); static assert(__traits(hasMember, InSituRegion!(10_240, 64), "allocateAll")); @@ -1728,7 +1726,6 @@ shared struct SharedBitmappedBlock(size_t theBlockSize, uint theAlignment = plat // Test chooseAtRuntime // Create a block allocator on top of a 10KB stack region. import std.experimental.allocator.building_blocks.region : InSituRegion; - import std.traits : hasMember; InSituRegion!(10_240, 64) r; uint blockSize = 64; auto a = BitmappedBlock!(chooseAtRuntime, 64)(cast(ubyte[])(r.allocateAll()), blockSize); diff --git a/std/experimental/allocator/building_blocks/bucketizer.d b/std/experimental/allocator/building_blocks/bucketizer.d index f9b10f83834..21635431e21 100644 --- a/std/experimental/allocator/building_blocks/bucketizer.d +++ b/std/experimental/allocator/building_blocks/bucketizer.d @@ -22,7 +22,6 @@ struct Bucketizer(Allocator, size_t min, size_t max, size_t step) { import common = std.experimental.allocator.common : roundUpToMultipleOf, alignedAt; - import std.traits : hasMember; import std.typecons : Ternary; static assert((max - (min - 1)) % step == 0, diff --git a/std/experimental/allocator/building_blocks/fallback_allocator.d b/std/experimental/allocator/building_blocks/fallback_allocator.d index 499bec33fbd..689a61ef087 100644 --- a/std/experimental/allocator/building_blocks/fallback_allocator.d +++ b/std/experimental/allocator/building_blocks/fallback_allocator.d @@ -24,7 +24,6 @@ up by the `GCAllocator`. struct FallbackAllocator(Primary, Fallback) { import std.algorithm.comparison : min; - import std.traits : hasMember; import std.typecons : Ternary; // Need both allocators to be stateless diff --git a/std/experimental/allocator/building_blocks/free_list.d b/std/experimental/allocator/building_blocks/free_list.d index 94e8a4bfad0..6eb980fae9f 100644 --- a/std/experimental/allocator/building_blocks/free_list.d +++ b/std/experimental/allocator/building_blocks/free_list.d @@ -35,7 +35,6 @@ struct FreeList(ParentAllocator, { import std.conv : text; import std.exception : enforce; - import std.traits : hasMember; import std.typecons : Ternary; import std.experimental.allocator.building_blocks.null_allocator : NullAllocator; @@ -525,7 +524,6 @@ struct ContiguousFreeList(ParentAllocator, : NullAllocator; import std.experimental.allocator.building_blocks.stats_collector : StatsCollector, Options; - import std.traits : hasMember; import std.typecons : Ternary; alias Impl = FreeList!(NullAllocator, minSize, maxSize); @@ -863,7 +861,6 @@ struct SharedFreeList(ParentAllocator, { import std.conv : text; import std.exception : enforce; - import std.traits : hasMember; static if (__traits(hasMember, ParentAllocator, "owns")) { diff --git a/std/experimental/allocator/building_blocks/free_tree.d b/std/experimental/allocator/building_blocks/free_tree.d index ac15a47608c..ecaaf8ad9a1 100644 --- a/std/experimental/allocator/building_blocks/free_tree.d +++ b/std/experimental/allocator/building_blocks/free_tree.d @@ -57,7 +57,6 @@ struct FreeTree(ParentAllocator) import std.algorithm.comparison : min, max; import std.algorithm.mutation : swap; - import std.traits : hasMember; // State static if (stateSize!ParentAllocator) private ParentAllocator parent; diff --git a/std/experimental/allocator/building_blocks/kernighan_ritchie.d b/std/experimental/allocator/building_blocks/kernighan_ritchie.d index 73a94ef54ba..bdef60f2dc1 100644 --- a/std/experimental/allocator/building_blocks/kernighan_ritchie.d +++ b/std/experimental/allocator/building_blocks/kernighan_ritchie.d @@ -99,7 +99,6 @@ information is available in client code at deallocation time.) struct KRRegion(ParentAllocator = NullAllocator) { import std.experimental.allocator.common : stateSize, alignedAt; - import std.traits : hasMember; import std.typecons : Ternary; private static struct Node diff --git a/std/experimental/allocator/building_blocks/quantizer.d b/std/experimental/allocator/building_blocks/quantizer.d index f21536ce8ea..3efa26e9011 100644 --- a/std/experimental/allocator/building_blocks/quantizer.d +++ b/std/experimental/allocator/building_blocks/quantizer.d @@ -39,8 +39,6 @@ always return the same value for a given `n`.) */ struct Quantizer(ParentAllocator, alias roundingFunction) { - import std.traits : hasMember; - /** The parent allocator. Depending on whether `ParentAllocator` holds state or not, this is a member variable or an alias for diff --git a/std/experimental/allocator/building_blocks/region.d b/std/experimental/allocator/building_blocks/region.d index cfad6ac0494..6bf24101a53 100644 --- a/std/experimental/allocator/building_blocks/region.d +++ b/std/experimental/allocator/building_blocks/region.d @@ -44,7 +44,6 @@ struct Region(ParentAllocator, static assert(minAlign.isGoodStaticAlignment); static assert(ParentAllocator.alignment >= minAlign); - import std.traits : hasMember; import std.typecons : Ternary; // state @@ -693,7 +692,6 @@ struct InSituRegion(size_t size, size_t minAlign = platformAlignment) { import std.algorithm.comparison : max; import std.conv : to; - import std.traits : hasMember; import std.typecons : Ternary; import core.thread.types : isStackGrowingDown; @@ -1172,7 +1170,6 @@ shared struct SharedRegion(ParentAllocator, static assert(minAlign.isGoodStaticAlignment); static assert(ParentAllocator.alignment >= minAlign); - import std.traits : hasMember; import std.typecons : Ternary; // state diff --git a/std/experimental/allocator/building_blocks/scoped_allocator.d b/std/experimental/allocator/building_blocks/scoped_allocator.d index 020a25614d5..ad032a2b5d5 100644 --- a/std/experimental/allocator/building_blocks/scoped_allocator.d +++ b/std/experimental/allocator/building_blocks/scoped_allocator.d @@ -32,7 +32,6 @@ struct ScopedAllocator(ParentAllocator) import std.experimental.allocator.building_blocks.affix_allocator : AffixAllocator; - import std.traits : hasMember; import std.typecons : Ternary; private struct Node diff --git a/std/experimental/allocator/building_blocks/segregator.d b/std/experimental/allocator/building_blocks/segregator.d index cac8697ed89..d6f829c1b95 100644 --- a/std/experimental/allocator/building_blocks/segregator.d +++ b/std/experimental/allocator/building_blocks/segregator.d @@ -18,7 +18,7 @@ shared) methods. struct Segregator(size_t threshold, SmallAllocator, LargeAllocator) { import std.algorithm.comparison : min; - import std.traits : hasMember, ReturnType; + import std.traits : ReturnType; import std.typecons : Ternary; static if (stateSize!SmallAllocator) private SmallAllocator _small; diff --git a/std/experimental/allocator/building_blocks/stats_collector.d b/std/experimental/allocator/building_blocks/stats_collector.d index 93c148bce96..9884300c3c2 100644 --- a/std/experimental/allocator/building_blocks/stats_collector.d +++ b/std/experimental/allocator/building_blocks/stats_collector.d @@ -172,7 +172,7 @@ struct StatsCollector(Allocator, ulong flags = Options.all, ulong perCallFlags = 0) { private: - import std.traits : hasMember, Signed; + import std.traits : Signed; import std.typecons : Ternary; static string define(string type, string[] names...) diff --git a/std/experimental/allocator/common.d b/std/experimental/allocator/common.d index e16fad91d05..30b41e33fd5 100644 --- a/std/experimental/allocator/common.d +++ b/std/experimental/allocator/common.d @@ -518,7 +518,7 @@ Forwards each of the methods in `funs` (if defined) to `member`. */ /*package*/ string forwardToMember(string member, string[] funs...) { - string result = " import std.traits : hasMember, Parameters;\n"; + string result = " import std.traits : Parameters;\n"; foreach (fun; funs) { result ~= " diff --git a/std/experimental/allocator/package.d b/std/experimental/allocator/package.d index b5abd2ec64b..4c8131d2caa 100644 --- a/std/experimental/allocator/package.d +++ b/std/experimental/allocator/package.d @@ -2698,7 +2698,6 @@ if (!isPointer!A) { auto state = a.allocate(stateSize!(CAllocatorImpl!A)); import std.algorithm.mutation : move; - import std.traits : hasMember; static if (__traits(hasMember, A, "deallocate")) { scope(failure) a.deallocate(state); @@ -2715,7 +2714,6 @@ RCIAllocator allocatorObject(A)(A* pa) assert(pa); import core.lifetime : emplace; auto state = pa.allocate(stateSize!(CAllocatorImpl!(A, Yes.indirect))); - import std.traits : hasMember; static if (__traits(hasMember, A, "deallocate")) { scope(failure) pa.deallocate(state); @@ -2812,7 +2810,6 @@ if (!isPointer!A) { auto state = a.allocate(stateSize!(CSharedAllocatorImpl!A)); import std.algorithm.mutation : move; - import std.traits : hasMember; static if (__traits(hasMember, A, "deallocate")) { scope(failure) a.deallocate(state); @@ -2833,7 +2830,6 @@ RCISharedAllocator sharedAllocatorObject(A)(A* pa) assert(pa); import core.lifetime : emplace; auto state = pa.allocate(stateSize!(CSharedAllocatorImpl!(A, Yes.indirect))); - import std.traits : hasMember; static if (__traits(hasMember, A, "deallocate")) { scope(failure) pa.deallocate(state); @@ -2853,8 +2849,6 @@ Usually `CAllocatorImpl` is used indirectly by calling $(LREF theAllocator). class CAllocatorImpl(Allocator, Flag!"indirect" indirect = No.indirect) : IAllocator { - import std.traits : hasMember; - static if (stateSize!Allocator) private size_t rc = 1; /** @@ -3082,7 +3076,6 @@ $(LREF processAllocator). class CSharedAllocatorImpl(Allocator, Flag!"indirect" indirect = No.indirect) : ISharedAllocator { - import std.traits : hasMember; import core.atomic : atomicOp, atomicLoad; static if (stateSize!Allocator) shared size_t rc = 1; diff --git a/std/experimental/allocator/showcase.d b/std/experimental/allocator/showcase.d index d4027192e69..f921cc86748 100644 --- a/std/experimental/allocator/showcase.d +++ b/std/experimental/allocator/showcase.d @@ -11,7 +11,6 @@ module std.experimental.allocator.showcase; import std.experimental.allocator.building_blocks.fallback_allocator, std.experimental.allocator.gc_allocator, std.experimental.allocator.building_blocks.region; -import std.traits : hasMember; /**