From a2c0a901601b763fd13d4448a92e66a2ab8b3d9c Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Mon, 12 Sep 2016 04:09:37 +0200 Subject: [PATCH] Revert "Merge pull request #4747 from MartinNowak/fix15907" This reverts commit d10780f19544f73907540e98aeee0039807e4578, reversing changes made to 01eb06bb3897cd359d01a6c268785e5ee42789c0. --- posix.mak | 2 +- std/internal/test/uda.d | 10 ---------- std/traits.d | 29 +++-------------------------- win32.mak | 2 +- 4 files changed, 5 insertions(+), 38 deletions(-) diff --git a/posix.mak b/posix.mak index 6f8b22083..b2a57f680 100644 --- a/posix.mak +++ b/posix.mak @@ -210,7 +210,7 @@ EXTRA_MODULES_INTERNAL := $(addprefix \ gammafunction errorfunction) $(addprefix std/internal/, \ cstring processinit unicode_tables scopebuffer\ unicode_comp unicode_decomp unicode_grapheme unicode_norm) \ - $(addprefix std/internal/test/, dummyrange uda) \ + $(addprefix std/internal/test/, dummyrange) \ $(addprefix std/experimental/ndslice/, internal) \ $(addprefix std/algorithm/, internal) diff --git a/std/internal/test/uda.d b/std/internal/test/uda.d index 27970582d..88e3a1b5a 100644 --- a/std/internal/test/uda.d +++ b/std/internal/test/uda.d @@ -14,13 +14,3 @@ struct HasPrivateMembers @Attr private int c; private int d; } - -// If getSymbolsByUDA is mixed into the same scope it also returns private members -unittest -{ - import std.traits : getSymbolsByUDA, hasUDA; - mixin getSymbolsByUDA!(HasPrivateMembers, Attr) symbols; - static assert(symbols.getSymbolsByUDA.length == 2); - static assert(hasUDA!(symbols.getSymbolsByUDA[0], Attr)); - static assert(hasUDA!(symbols.getSymbolsByUDA[1], Attr)); -} diff --git a/std/traits.d b/std/traits.d index 14d74790f..7c29681c5 100644 --- a/std/traits.d +++ b/std/traits.d @@ -6798,37 +6798,14 @@ unittest static assert(getSymbolsByUDA!(C, UDA)[1].stringof == "d"); } -/// mixin getSymbolsByUDA to also find private members -unittest -{ - import std.traits; - enum UDA; - struct S - { - @UDA int visible; - @UDA private int invisible; - } - // mixin the template instantiation, using a name to avoid namespace pollution - mixin getSymbolsByUDA!(S, UDA) symbols; - // as the template is instantiated in the current scope, it can see private members - // mixin templates don't perform eponymous expansion, so an additional `.getSymbolsByUDA` is needed - static assert(symbols.getSymbolsByUDA.length == 2); -} - // #15335: getSymbolsByUDA fails if type has private members unittest { - // HasPrivateMembers has private members, but only the ones visible from std.traits are returned + // HasPrivateMembers has, well, private members, one of which has a UDA. import std.internal.test.uda; - // whether allMembers returns private members, see dmd fix for Issue 15907 - static if (__traits(allMembers, HasPrivateMembers).length == 2) - static assert(getSymbolsByUDA!(HasPrivateMembers, Attr).length == 1); - else - { - static assert(getSymbolsByUDA!(HasPrivateMembers, Attr).length == 2); - static assert(hasUDA!(getSymbolsByUDA!(HasPrivateMembers, Attr)[1], Attr)); - } + static assert(getSymbolsByUDA!(HasPrivateMembers, Attr).length == 2); static assert(hasUDA!(getSymbolsByUDA!(HasPrivateMembers, Attr)[0], Attr)); + static assert(hasUDA!(getSymbolsByUDA!(HasPrivateMembers, Attr)[1], Attr)); } /** diff --git a/win32.mak b/win32.mak index e3e1879b0..1cdb211fa 100644 --- a/win32.mak +++ b/win32.mak @@ -238,7 +238,7 @@ SRC_STD_C_FREEBSD= std\c\freebsd\socket.d SRC_STD_INTERNAL= std\internal\cstring.d std\internal\processinit.d \ std\internal\unicode_tables.d std\internal\unicode_comp.d std\internal\unicode_decomp.d \ std\internal\unicode_grapheme.d std\internal\unicode_norm.d std\internal\scopebuffer.d \ - std\internal\test\dummyrange.d std\internal\test\uda.d + std\internal\test\dummyrange.d SRC_STD_INTERNAL_DIGEST= std\internal\digest\sha_SSSE3.d