Skip to content

Commit 330e19d

Browse files
Merge pull request #647 from WalterBright/fix11344
fix Issue 11344 - Error: object.destroy called with argument types matches both
2 parents 9c0a711 + ed48ca3 commit 330e19d

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/object.di

+1-1
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ void destroy(T)(ref T obj) if (is(T == struct))
522522
buf[] = init[];
523523
}
524524

525-
void destroy(T : U[n], U, size_t n)(ref T obj)
525+
void destroy(T : U[n], U, size_t n)(ref T obj) if (!is(T == struct))
526526
{
527527
obj[] = U.init;
528528
}

src/object_.d

+13-1
Original file line numberDiff line numberDiff line change
@@ -2374,7 +2374,7 @@ version(unittest) unittest
23742374
}
23752375
}
23762376

2377-
void destroy(T : U[n], U, size_t n)(ref T obj)
2377+
void destroy(T : U[n], U, size_t n)(ref T obj) if (!is(T == struct))
23782378
{
23792379
obj[] = U.init;
23802380
}
@@ -2388,6 +2388,18 @@ version(unittest) unittest
23882388
assert(a == [ 0, 0 ]);
23892389
}
23902390

2391+
unittest
2392+
{
2393+
static struct vec2f {
2394+
float[2] values;
2395+
alias values this;
2396+
}
2397+
2398+
vec2f v;
2399+
destroy!vec2f(v);
2400+
}
2401+
2402+
23912403
void destroy(T)(ref T obj)
23922404
if (!is(T == struct) && !is(T == interface) && !is(T == class) && !_isStaticArray!T)
23932405
{

0 commit comments

Comments
 (0)